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.
- Success stories
- Aims of this work
- Howto
- FAQ
- Trouble shooting of compiled papers
- Current minimal example
- Implementation documentation
- Considered alternatives
- License
- Further reading
Following proceedings were typeset using this template:
- Generate proceedings conforming with GI's requirements stated at the "Herausgeberrichtlinien".
- Automatic generation of
- running heads (including page numbers, authors, title of the paper)
- table of contents
- PDF bookmarks
- index
proceedings.biblisting all papers including page numbers
- Working hyperlinks
- from the TOC to the papers
- within the papers
- from the index to the papers
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.
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/danteev/texlive/.
Assuming, the proceedings reside in c:\git-repositories\LNI-proceedings, following command leads to a bash shell enabling running the required commands:
docker run -v c:\git-repositories\LNI-proceedings:/var/texlive -it danteev/texlive:v1.6.0 bash
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.
- Download the basic installer from http://miktex.org/download
- Start it
- First screen: Read the license condiditions and be sure that you really agree.
- Second screen: "Shared Installation": Install MiKTeX for: "Only for:
username" - Third screen: "Installation Directory": Install MiKTeX to:
C:\MiKTeX. This enabled browsing for documentation atC:\MiKTeX29\doc\latex - Fourth screen: "Settings": Preferred paper: A4 and Install missing packages on the fly:
Yes - Fifth screen: Press "Start"
- After the installation:
- Open
cmd.exe - Execute
mpm --update-db - Execute
mpm --update - Execute
mpm --install=cm-super - Execute
initexmf --update-fndb - Execute
initexmf --mklinks --force
- Open
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.
- Installl java runtime environment using
choco install jre8. chocolatey page. - Install unzip, wget, and curl using
choco install unzip wget curl. - Install perl using
choco install strawberryperl. chocolatey page. - Install pax using the MiKTeX package manager
- Execute
perl C:\MiKTeX\scripts\pax\pdfannotextractor.pl --installto enable downloading of a pdfbox version fitting for pax. - Ignore the error regarding "MiKTeX Configuration Utility"
- Start "MiKTeX Settings"
- Click on "Refresh FNDB"
- Click on "Update Formats"
- Now,
pdfannotextractor.plis ready to go
Source for installing pax: http://tex.stackexchange.com/a/44104/9075
This is required to automatically extract the authors and title from the papers source texs.
- Install Python 2.7:
choco install python2 - Install pip
- wget https://bootstrap.pypa.io/get-pip.py
c:\Python27\python get-pip.py
- Install
pyparsing
c:\Python27\Scripts\pip install pyparsing
- Install
python-docx
c:\Python27\Scripts\pip install python-docx
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".
- Install PDFtk using
choco install pdftk
- Request DOI prefix from GI
- Download master.zip from the LNI-proceedings repository.
- Extract
master.zipinto the directory you are going to work on the proceedings. - 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.
- Adapt
config.texto your conference. Here, you also set the DOI prefix used for generating a unique DOI for each paper. - Check that
LNI-Startseiten.docxis the latest version retrieved from https://www.gi.de/fileadmin/redaktion/Autorenrichtlinien/LNI-Startseiten.docx. - Adapt
LNI-Startseiten.docxto your conference. - Convert
LNI-Startseiten.docxtoLNI-Startseiten.pdfusing Microsoft Word. - Adapt
pages=x-y(and possibly\pdfbookmark) at\includepdf[pagecommand={\thispagestyle{empty}},pages=5-5]{LNI-Startseiten.pdf}and subsequent\includepdfstatements to match the page numbers of your foreword and sponsoring. - Create all paper folders using a naming scheme:
[Category][NumberOfSubcategory]-[NumberWithinSession]. See also Directory scheme. - Collect all papers. Place the source and the pdf within each paper's folder.
For instance, the first paper goes into
papers/A1-1/. - Rename all papers to paper.pdf etc. To do this, open a CMD,
cd papersand runpapers_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. - To extract author and title information from Microsoft Word docx files, run
add_tex_via_docx.cmdin thepapersdirectory. On Linux you can runadd_tex_via_docx.sh. Make sure you installed python-docx as described in system setup. Theadd_tex_via_docx.cmdscript will create minimal paper.tex files (title and author only) for each paper.docx, which can be processed by the following scripts. - Create pax information
- Linux: Execute
prepare-papers.sh - Windows: Execute
prepare-papers.bat
- Check for all
paper.texthat all authors are the format\author[Firstname Lastname \and ...]{...} - Copy the author information from each
paper.texintoproceedings.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
\addpaperstatement into thepaper.texof 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.pyand runpython ../addAuthTiProduction.py ../proceedings.template ../proceedings.tex */paper.tex. This will create aproceedings.texwith the real workshop titles instead of build ids.
- Fix spaces before
\andinproceedings.tex: ReplaceSPACE\andby\and, whereSPACEdenotes the white space character. Reason:\unskipdoes nothing at\texorpdfstringin combination with hyperref - Execute
pdflatex -synctex=1 proceedings.texto see whether pdflatex gets through. - Check
proceedings.pdfwhether 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)
- Do the usual pdflatex, biblatex, texindy runs.
pdflatex also generates
proceedings.biband 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 bymake-proceedings.- Linux: Execute
make-proceeding.shto execute all required steps - Windows: Execute
make-proceedings.batto execute all required steps
- Linux: Execute
- Check proceedings and make necessary adaptions.
During the fixup phase, you can run
pdflatex -synctex=1 proceedingsto quickly build the proceedings. Nevertheless, runmake-proceedings.batevery now and then to ensure a correctly generated index. - Finalize pax information
- Linux: Execute
prepare-papers.sh - Windows: Execute
prepare-papers.bat
- Compile the final proceedings
- Linux: Execute
make-proceedings.shto execute all required steps - Windows: Execute
make-proceedings.batto execute all required steps
- Linux: Execute
- Shrink the size of the final pdf:
- Rename
proceedings.pdftoproceedings-large.pdf - Execute
./shrinkpdf.sh proceedings-large.pdf proceedings.pdf
- Rename
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.
During the process, following files are generated:
proceedings.pdf.- It is not recommended to version this file during the process of proceedings generation, because it gets very large.
- The page size of this file is already the final page size of both the printed and the electronic proceedings. Delivering this format is agreed with the publisher.
proceedings.bib- BibTeX bibliography of the proceedings.proceedings.csv- CSV containing some information on the proceedings.papers.txt- list of paper id and starting page.
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
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.
- Execute
generate-updatepages.sh-from-pages-txt.sh. This generatesupdate-pages.sh. - Execute
sh update-pages.sh. - Recompile all pdfs.
- Submit
proceedings.pdfandLNI-Cover-Vorlage.ppt(see step 2 above) to the GI for approval. - After the approval, submit to the printing service.
- Adapt BAND_TITEL, HRSG, LNI, DOI, ISSN, ISBN, YEAR, DATE and LOCATION in
metaExtract.pyaccording to your conference - Copy
proceedings.csvcreated bymake-proceedingsto themeta-extractdirectory. - Fill the
ws.csvaccording to your conference. - Fill the
papers.csvwith 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. - Run
python metaExtract.py papers.csv ws.csv proceedings.csvin themeta-extractdirectory. This createsmeta-extract.csvfor submission to GI. - Cd into
slicingdirectory and copy yourproceedings.pdfandproceedings.csvhere. - 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 fromproceedings.csv. The separate pdfs are placed in thepartsdirectory and named according to their build ids. - Submit the
meta-extract.csvand the PDFs in thepartsdirectory 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 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.
ack "LaTeX Warning: Label(s) may have changed."ack "Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding)"
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.
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.
\openbox already defined->\let\openbox\relaxbefore\usepackage{amsthm}- If you get something about
\spacing in math mode, ensure that your bib file is correct and that you re-ran bibtex. ! Undefined control sequence.
l.27 \ulp@afterend
You have used pdfcomments package, but you disabled it. Deletepaper.auxand recompile.! You can't use ``\spacefactor' in internal vertical mode.: Currently unknown
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.
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.
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 seems to the most suitable alternative. Compared with this approach, it has following drawbacks:
- The PDFs of the papers do not take a proper heading (page numbers, editor).
- When clicking on a link in one included PDF, the linked PDF is opened instead of jumping to the link.
- Indexing of authors has to be done by manually.
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 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.
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.
- tex.stackexchange: Constructing conference proceedings