View on GitHub

LNI-proceedings

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

Howto

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 https://hub.docker.com/r/koppor/texlive/. 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 http://tex.stackexchange.com/a/108490/9075 to keep your MiKTeX distribution updated.

pax

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: http://tex.stackexchange.com/a/44104/9075

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 https://bootstrap.pypa.io/get-pip.py
    • c:\Python27\python get-pip.py
  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.

PDFtk

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 master.zip from the LNI-proceedings repository.
  3. Extract master.zip into the directory you are going to work on the proceedings.
  4. Get the cover page ready. The template is available at https://www.gi.de/fileadmin/redaktion/Autorenrichtlinien/LNI-Cover-Vorlage.ppt. 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 https://www.gi.de/fileadmin/redaktion/Autorenrichtlinien/LNI-Startseiten.docx.
  7. Adapt LNI-Startseiten.docx to your conference.
  8. Adapt pages=5-6 at \includepdf[pagecommand={\thispagestyle{empty}},pages=5-6]{LNI-Startseiten.pdf} to match the page numbers of your foreword and sponsoring.
  9. Create all paper folders using a naming scheme: [Category][NumberOfSubcategory]-[NumberWithinSession]. See also Directory scheme.
  10. Collect all papers. Place the source and the pdf within each paper’s folder. For instance, the first paper goes into papers/A1-1/.
  11. 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.
  12. 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 add_tex_via_docx.sh. 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.
  13. Create pax information
    • Linux: Execute prepare-papers.sh
    • Windows: Execute prepare-papers.bat
  14. Check for all paper.tex that all authors are the format \author[Firstname Lastname \and ...]{...}
  15. 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 ../addAuthTi.py ../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 addAuthTiProduction.py and run python ../addAuthTiProduction.py ../proceedings.template ../proceedings.tex */paper.tex. This will create a proceedings.tex with the real workshop titles instead of build ids.
  16. 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
  17. Execute pdflatex -synctex=1 proceedings.tex to see whether pdflatex gets through.
  18. 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)
  19. 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 make-proceeding.sh to execute all required steps
    • Windows: Execute make-proceedings.bat to execute all required steps
  20. 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.
  21. Finalize pax information
    • Linux: Execute prepare-papers.sh
    • Windows: Execute prepare-papers.bat
  22. Compile the final proceedings
    • Linux: Execute make-proceeding.sh to execute all required steps
    • Windows: Execute make-proceedings.bat to execute all required steps
  23. Shrink the size of the final pdf:
    • Rename proceedings.pdf to proceedings-large.pdf
    • Execute ./shrinkpdf.sh 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 cut-proceedings.sh. In case cut-proceedings.sh does not work on your side, this alternative way can be used.

  1. Execute generate-updatepages.sh-from-pages-txt.sh. This generates update-pages.sh.
  2. Execute sh update-pages.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 metaExtract.py 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 metaExtract.py 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 slicing.py 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.

FAQ

Q: Some papers do not contain the short author list (i.e., \author{...authorlist...} instead of \author[...authorlist...]{...authorlist...}.
A: Use the online service https://regex101.com/. 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 cut-proceedings.sh 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 https://www.ctan.org/tex-archive/macros/latex/contrib/lni. 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 = match_a.group(1) when running addAuthTiProduction.py
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 addAuthTiProduction.py
A: You did not update addAuthTiProduction.py. Please update lookup_workshop in there.

Q: I get AttributeError: 'NoneType' object has no attribute 'splitlines' when using metaExract.py.
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 http://tex.stackexchange.com/q/234501/9075. Since the file is encoded in ASCII characters, we just need to strip out \IeC. This is done using sed.

slicing: cut-proceedings.sh is an alternative script to slicing.py. It was developed before slicing.py, 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 http://www.ctan.org/topic/confproc. In the following, evaluated alternatives are listed and discussed.

confproc

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

combine

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

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 https://www.springer.com/gp/computer-science/lncs/editor-guidelines-for-springer-proceedings. 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.

License

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

shrinkpdf.sh is BSD-licensed.

Further reading