View on GitHub


Support for generating LNI proceedings

LNI Proceedings Build Status

This repository supports generating of proceedings based on the “Lecture Notes in Informatics” papers typeset using the lni class. An example output is available at proceedings-example.pdf.

Table of Contents

Success stories

Following proceedings were typeset using this template:

Aims of this work


System setup

This section describes the setup of software required. This howto is based on a Windows environment. Linux users should have ready most of the tools required.

Using Docker

On both Windows and Linux, one can use Docker for a fully configured Linux environment being able to build the proceedings. For inspection, the docker image can be found at Assuming, the proceedings reside in c:\git-repositories\proceedings, following command leads to a bash shell enabling running the required commands:

docker run -v /c/git-repositories/proceedings:/var/texlive -it koppor/texlive:v1.2.0 bash

Manual Setup on Windows

MiKTeX should be installed in a single-user setup to avoid troubles when updating packages. Furthermore, it should be installed at C:\MiKTeX to enable easy installation of the pax utility. Otherwise, you have to follow the steps described at to keep your MiKTeX distribution updated.


pax is a utility, which enables hyperlinks still working when combining PDFs using pdflatex. In the installation, we rely on chocolatey, because it eases installation much.

Source for installing pax:

Python 2.7

This is required to automatically extract the authors and title from the papers source texs.

  1. Install Python 2.7: choco install python2
  2. Install pip
    • wget
    • c:\Python27\python
  3. Install pyparsing
    • c:\Python27\Scripts\pip install pyparsing
  4. Install python-docx
    • c:\Python27\Scripts\pip install python-docx
Linux commands available at cmd.exe

We need sed being available at a cmd.exe shell. This should be available when you executed choco install git.


This is required for to cut the proceedings.pdf into separate PDF files, one per paper, to submit to “Digitale Bibliothek der GI”.

Generating the proceedings

  1. Request DOI prefix from GI
  2. Download from the LNI-proceedings repository.
  3. Extract into the directory you are going to work on the proceedings.
  4. Get the cover page ready. The template is available at This preparation provides you the necessary information for the next step. You also need to submit the cover to the GI and to the printing service.
  5. Adapt config.tex to your conference. Here, you also set the DOI prefix used for generating a unique DOI for each paper.
  6. Check that LNI-Startseiten.docx is the latest version retrieved from
  7. Adapt LNI-Startseiten.docx to your conference.
  8. Convert LNI-Startseiten.docx to LNI-Startseiten.pdf using Microsoft Word.
  9. Adapt pages=x-y (and possibly \pdfbookmark) at \includepdf[pagecommand={\thispagestyle{empty}},pages=5-5]{LNI-Startseiten.pdf} and subsequent \includepdf statements to match the page numbers of your foreword and sponsoring.
  10. Create all paper folders using a naming scheme: [Category][NumberOfSubcategory]-[NumberWithinSession]. See also Directory scheme.
  11. Collect all papers. Place the source and the pdf within each paper’s folder. For instance, the first paper goes into papers/A1-1/.
  12. Rename all papers to paper.pdf etc. To do this, open a CMD, cd papers and run papers_rename.cmd. This should rename all .tex .pdf and .docx files to paper.tex, paper.pdf and paper.docx respectively. These directories should only contain one file of this file extension.
  13. To extract author and title information from Microsoft Word docx files, run add_tex_via_docx.cmd in the papers directory. On Linux you can run Make sure you installed python-docx as described in system setup. The add_tex_via_docx.cmd script will create minimal paper.tex files (title and author only) for each paper.docx, which can be processed by the following scripts.
  14. Create pax information
    • Linux: Execute
    • Windows: Execute prepare-papers.bat
  15. Check for all paper.tex that all authors are the format \author[Firstname Lastname \and ...]{...}
  16. Copy the author information from each paper.tex into proceedings.tex:
    • Open a git bash
    • cd into papers
    • During fixup phase, run /c/Python27/python ../ ../proceedings.template ../proceedings.tex */paper.tex. The proceedings.tex created by this script uses build ids as workshop titles which makes it easier to identify the specific papers causing issues.
    • To override the extraction of author and title for a specific paper, just put a the desired \addpaper statement into the paper.tex of that paper. Prefix it with % to ensure the normal latex run on that paper does not cause issues.
    • For final proceedings, fill the workshop table in and run python ../ ../proceedings.template ../proceedings.tex */paper.tex. This will create a proceedings.tex with the real workshop titles instead of build ids.
  17. Fix spaces before \and in proceedings.tex: Replace SPACE\and by \and, where SPACE denotes the white space character. Reason: \unskip does nothing at \texorpdfstring in combination with hyperref
  18. Execute pdflatex -synctex=1 proceedings.tex to see whether pdflatex gets through.
  19. Check proceedings.pdf whether all fonts are embedded. In case some fonts are not embedded, follow folling steps:
    • go to the folder of the paper
    • locate the PDF containing the picture
    • embed the font using Acrobat Professional’s preflight functionality
    • Recompile the paper (pdflatex paper, …)
    • Recompile the proceedings (pdflatex -synctex=1 proceedings)
  20. Do the usual pdflatex, biblatex, texindy runs. pdflatex also generates proceedings.bib and thereby also generates the character sequence \IeC (see Implementation documentation). These characters have to be removed for the final biblatex run. All these steps are automatically done by make-proceedings.
    • Linux: Execute to execute all required steps
    • Windows: Execute make-proceedings.bat to execute all required steps
  21. Check proceedings and make necessary adaptions. During the fixup phase, you can run pdflatex -synctex=1 proceedings to quickly build the proceedings. Nevertheless, run make-proceedings.bat every now and then to ensure a correctly generated index.
  22. Finalize pax information
    • Linux: Execute
    • Windows: Execute prepare-papers.bat
  23. Compile the final proceedings
    • Linux: Execute to execute all required steps
    • Windows: Execute make-proceedings.bat to execute all required steps
  24. Shrink the size of the final pdf:
    • Rename proceedings.pdf to proceedings-large.pdf
    • Execute ./ proceedings-large.pdf proceedings.pdf

proceedings.pdf is now ready to be sent to the printing service. See below.

The automated steps of this workflow are stated at .circlci/config.yml.

Generated files

During the process, following files are generated:

Directory scheme

Naming scheme: [Category][NumberOfSubcategory]-[NumberWithinSession].

Paper name always: paper.tex

The following list may be generated out of an Excel file or something else. Otherwise, just create the folders and adapt proceedings.tex accordingly.

A = Eingeladene Vorträge
A1-1 = Erster eingeladener Vortrag

B = Scientific Program (nach Themen gegliedert, Kapitel)
B1 = Topic 1
B1-1 = Talk 1

Advanced usage

It is possible to update the pages information in each paper’s paper.tex. Although this is uncessary, because of In case does not work on your side, this alternative way can be used.

  1. Execute This generates
  2. Execute sh
  3. Recompile all pdfs.

Submitting to the GI and the printing service

  1. Submit proceedings.pdf and LNI-Cover-Vorlage.ppt (see step 2 above) to the GI for approval.
  2. After the approval, submit to the printing service.

Submitting to the “Digitale Bibliothek der GI”

  1. Adapt BAND_TITEL, HRSG, LNI, DOI, ISSN, ISBN, YEAR, DATE and LOCATION in according to your conference
  2. Copy proceedings.csv created by make-proceedings to the meta-extract directory.
  3. Fill the ws.csv according to your conference.
  4. Fill the papers.csv with the meta data required (Build ID,Paper ID,Workshop ID,Autoren,Titel,Sprache,Keywords,Abstract). Instead of creating this file separately, it is helpful to keep track of your papers in a spreadsheet, including additional data such as status, problems, rights forms etc. and export the required meta data as CSV from this spreadsheet.
  5. Run python papers.csv ws.csv proceedings.csv in the meta-extract directory. This creates meta-extract.csv for submission to GI.
  6. Cd into slicing directory and copy your proceedings.pdf and proceedings.csv here.
  7. Run python proceedings.pdf proceedings.csv. This requires pdftk to be installed (cf. System setup section). The script cuts the proceedings.pdf into separate pdfs, one per paper, according to the page numbers from proceedings.csv. The separate pdfs are placed in the parts directory and named according to their build ids.
  8. Submit the meta-extract.csv and the PDFs in the parts directory to GI.


Q: Some papers do not contain the short author list (i.e., \author{...authorlist...} instead of \author[...authorlist...]{...authorlist...}.
A: Use the online service The regex is (\\footnote{.*})|(\\footnotemark\[.\])|%.*|\\textsuperscript{.*}. Paste the \author content to “Test String” and expand “Substituation” at the bottom.

Q: The number of pages changed. What should I do?
A: pdflatex proceedings, do it twice to be sure that the TOC is created correctly and that the TOC has more than one page. Continue at “Update the page numbers” above

Q: What can I do if the hyperlinks in the proceedings do not work?
A: Run pdflatex proceedings one more time, because pax needs one more run.

Q: What can I do if the hyperlinks in the cropped proceedings do not work?
A: You hit an issue at pax with an interplay of viewport in includegraphics: The offset resulting of the viewport is not treated by pax. The link is in there. Just search a few lines below the link text.

Q: What if a paper needs adjustments?
A : Sometimes, the GI required adjustments. For instance, if an author did not use the LNI style for the bibliography. You can either ask the authors directly or do it for yourself. In case you decide to adjust the paper for yourself, replace \editor{...} and \booktitle{...} by \input{../../config.tex} to ensure that all papers have the same conference configuration.

Q: I recompiled some papers. How can I check for errors?
A: Use ack to globally check for errors - run it from root directory to be sure everything compiled well. Insall it using choco install ack.

Q: How can I get the PDFs with the correct headers?
A: Execute proceedings.pdf. pdftk and ghostscript installed.

Q: Some papers are cut strangely and the PDF is broken. What can I do?
A: The authors use an old version of the template. Please ask them to update to the new version 1.1, available at You can also update the paper.tex file for yourself. The differences are not too much. Finally, you could try to adapt \addpaperWRONGLAYOUT. That command is made for inclusion of papers of the old format. However, it is currently not maintained and may produce wrong output.

Q: Some latex papers have two overlapping, slightly offset versions of the copyright icons on their first page in the proceedings.
A: This seems to be a slight mismatch between the current LNI Latex template (v1.3) and the proceedings template. To fix this, you can surround the \ccbynceu on line 315 and 317 with \phantom like so: \phantom{\ccbynceu} and rebuild these papers.

Q: I get AttributeError: 'NoneType' object has no attribute 'group' at part_a = when running
A: You are not following the directory pattern [Category][NumberOfSubcategory]-[NumberWithinSession]. For instance, A1-1 is valid, but A-1 is invalid.

Q: I get KeyError: 'A1' when running
A: You did not update Please update lookup_workshop in there.

Q: I get AttributeError: 'NoneType' object has no attribute 'splitlines' when using
A: Not all columns are filled in papers.csv.

Trouble shooting of compiled papers

If you are in need to recompile the submitted papers, there might be errors occurring. This section provides hints on some of the most prominent errors.

Current minimal example

The current minimal example is built at CircleCI. One can browse to the latest build and then to “Artifacts” to see the generated files. These generated proceedings do not follow the guide lines: The headings of each papers are too long, because the authors and titles are too long. Manual adjustements using the \addpaper commands are required. The minimal example should only show that the commands of the toolchain work.

Implementation documentation

This section discusses some design decisions done when implementing this way to generate proceedings.

\IeC is written into proceedings.bib. This issue is discussed at Since the file is encoded in ASCII characters, we just need to strip out \IeC. This is done using sed.

slicing: is an alternative script to It was developed before, but puts each paper to a separate sub directory. Currently, it is not used, but left there, because it could get useful sometime.

Considered alternatives

When designing this solution to typeset complete proceedings, several alternatives were investigated. Nearly all possible alternatives are listed at In the following, evaluated alternatives are listed and discussed.


confproc seems to the most suitable alternative. Compared with this approach, it has following drawbacks:


The combine class combines the sources of different LaTeX together. Since there might be conflicting packges, we wanted to include each PDF on its own. The PDFs can be typeset by itself.


proc is a very basic class based on the article class. No update since 1995.

Springer Computer Science Proceedings

Springer offers help for proceedings authors at It uses makeindex instead of biblatex for index generation. We opted for biblatex+texindy to be UTF-8 save and to directly be able to use the content of \authors for index generation.


This work is licensed under CC0, so you especially can create proceedings out of it. Feedback is welcome at the GitHub page. is BSD-licensed.

Further reading