% \iffalse meta-comment
%<*internal>
\iffalse
%</internal>
%<*internal>
\fi
\def\nameofplainTeX{plain}
\ifx\fmtname\nameofplainTeX\else
  \expandafter\begingroup
\fi
%</internal>
%<*install>
\input docstrip.tex
\keepsilent
\askforoverwritefalse
\declarepreamble\bibtexengpre
lnig.bst
Lecture Notes in Informatics Style File (english)
Version 1.0 (2017/04/07)

The Style File is based on alpha.bst

This work may be freely used,
distributed and modified.
Modified files should be clearly indicated as such and renamed.
\endpreamble

\declarepreamble\bibtexgerpre
lnig.bst
Lecture Notes in Informatics Style File (german)
Version 1.0 (2017/04/07)

The Style File is based on alpha.bst

This work may be freely used,
distributed and modified.
Modified files should be clearly indicated as such and renamed.
\endpreamble

\declarepreamble\classpre
--------| -----------------------------------------------------------------
    lni:| A class for submissions to the ``Lecture Notes in Informatics''
 Author:| Martin Sievers
  Email:| martin.sievers@schoenerpublizieren.de
License:| Released under the LaTeX Project Public License v1.3c or later
    See:| http://www.latex-project.org/lppl.txt
--------| -----------------------------------------------------------------
\endpreamble

\def\templatepre{%
\perCent\space !TeX encoding = UTF-8^^J%
\perCent\space !TeX program = pdflatex^^J%
\perCent\space !BIB program = bibtex^^J%
}

\def\templatepreger{%
\perCent\space !TeX encoding = UTF-8^^J%
\perCent\space !TeX spellcheck = de_DE^^J%
}

\postamble

Copyright (C) 2016-2018 by Gesellschaft für Informatik e.V. (GI)

This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
version 1.3c of this license or (at your option) any later
version.  The latest version of this license is in the file:

http://www.latex-project.org/lppl.txt

This work is "maintained" (as per LPPL maintenance status) by
Martin Sievers.

This work consists of the file  lni.dtx
                                lni.ins
                                README.md
                                CHANGELOG.md
          and the derived files lni.pdf
                                lni.cls
                                lni-author-template.tex
                                lni-paper-example-de.bib
                                lni-paper-example-de.tex
                                lni.bst
                                lnig.bst
\endpostamble

\usedir{tex/latex/lni}
\AddGenerationDate
\generate{
  \usepreamble\classpre
  \file{\jobname.cls}{\from{\jobname.dtx}{class}}
}
\usedir{bibtex/bst/lni}
\generate{
  \usepreamble\bibtexengpre
  \file{\jobname.bst}{\from{\jobname.dtx}{bibtex,eng}}
  \usepreamble\bibtexgerpre
  \file{lnig.bst}{\from{\jobname.dtx}{bibtex,ger}}
}
%</install>
%<install>\endbatchfile
%<*internal>
\usedir{source/latex/lni}
\generate{
  \usepreamble\classpre
  \file{\jobname.ins}{\from{\jobname.dtx}{install}}
}
\nopreamble\nopostamble
\usedir{doc/latex/lni}
\generate{
  \usepreamble\templatepre
  \file{lni-author-template.tex}{\from{\jobname.dtx}{template}}
}
\generate{
  \file{lni-paper-example-de.bib}{\from{\jobname.dtx}{exampledebib}}
}
\generate{
  \usepreamble\templatepreger  
  \file{lni-paper-example-de.tex}{\from{\jobname.dtx}{exampledetex}}
}
\ifx\fmtname\nameofplainTeX
  \expandafter\endbatchfile
\else
  \expandafter\endgroup
\fi
%</internal>
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{lni.dtx}
%</driver>
%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<class>\ProvidesClass{lni}
%<*class>
    [2018/01/15 v1.4 Official class for submissions to the ``Lecture Notes 
    in Informatics'']
%</class>
%<*driver>
\documentclass[a4paper]{ltxdoc}
\usepackage[ngerman,english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{libertine}
\usepackage[scaled=0.8]{beramono}
\usepackage[%
   final,%
   tracking=smallcaps,%
   expansion=alltext,%
   protrusion=alltext-nott]{microtype}%
\SetTracking{encoding=*,shape=sc}{50}%
\usepackage{textcomp}
\usepackage{upquote}
\usepackage[final]{listings}
\usepackage{csquotes}
\usepackage[dvipsnames]{xcolor}
\usepackage{hologo}
\newcommand*{\MiKTeX}{\hologo{MiKTeX}}
\usepackage[%
	pdftitle={lni: Official LaTeX class for submissions to the ``Lecture Notes in 
   	Informatics'', published by the ``Gesellschaft für Informatik e.\,V.'' (GI)},
    pdfauthor={Martin Sievers},
    urlcolor=blue,%
	linktoc=both,%
	colorlinks=true]{hyperref}
\usepackage[nameinlink,capitalise]{cleveref}

\DeclareFontFamily{U}{MnSymbolC}{}
\DeclareSymbolFont{MnSyC}{U}{MnSymbolC}{m}{n}
\DeclareFontShape{U}{MnSymbolC}{m}{n}{
    <-6>  MnSymbolC5
   <6-7>  MnSymbolC6
   <7-8>  MnSymbolC7
   <8-9>  MnSymbolC8
   <9-10> MnSymbolC9
  <10-12> MnSymbolC10
  <12->   MnSymbolC12%
}{}
\DeclareMathSymbol{\powerset}{\mathord}{MnSyC}{180}

\newcommand{\lni}{\texttt{lni}}	
\newcommand{\LNI}{\emph{Lecture Notes in Informatics}}
\makeatletter
\newcommand*\DescribeOption{%
\leavevmode%
\@bsphack%
\begingroup%
 \MakePrivateLetters%
 \Describe@Option%
}%
\newcommand*\Describe@Option[1]{%
 \endgroup%
\marginpar{%
 \raggedleft%
 \PrintDescribeEnv{#1}%
}%
\SpecialOptionIndex{#1}%
\@esphack%
\ignorespaces%
}%
\newcommand*\SpecialOptionIndex[1]{%
\@bsphack%
\index{%
 #1\actualchar{\protect\ttfamily#1} (option)\encapchar usage%
}%
\index{%
 options:\levelchar#1\actualchar{\protect\ttfamily#1}%
 \encapchar usage%
}%
\@esphack%
}%
\makeatother
\lstset{
 basicstyle   = \small\ttfamily,
 gobble       = 2,
 keywordstyle = \color{blue}\bfseries,
 language     = [LaTeX]{TeX},
 moretexcs    = {,
   addbibresource,authorrunning,%
   email,lnidoi,
   ExecuteBibliographyOptions,includegraphics,printbibliography,
 }
 frame        = single,
 backgroundcolor = \color{yellow!60},
 framesep     = 5pt,
 literate={Ö}{{\"O}}1 {Ä}{{\"A}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1 {ü}{{\"u}}1 {ä}{{\"a}}1 {ö}{{\"o}}1 
}%
\lstnewenvironment{examplecode}[1][]
{\lstset{#1}}
{}
\providecommand*\env[1]{\texttt{#1}}
\providecommand*\file[1]{\texttt{#1}}
\providecommand*\opt[1]{\texttt{#1}}
\providecommand*\pkg[1]{\textsf{#1}}
\OnlyDescription     %nur Anleitung (ohne Index und History)
\CodelineIndex       %kein Index wenn auskommentiert
\EnableCrossrefs     %kein Index wenn auskommentiert
\RecordChanges       %keine History wenn auskommentiert
\begin{document}
  \DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
% \CheckSum{0}
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \changes{v1.0}{2017/04/07}{Official release of revised version}
% \changes{v1.1}{2017/04/08}{Added macros \cs{subtitle} and keyword delimiter 
% \cs{add}}
% \changes{v1.1}{2017/04/08}{Fixed bug with \cs{Crefname}}
% \changes{v1.1}{2017/04/08}{Updated documentation and bundle structure}  
% \changes{v1.1}{2017/04/12}{Changed spacing for \cs{subtitle}}  
% \changes{v1.1}{2017/04/18}{Added check for ngerman-x-latest patterns}
% \changes{v1.1}{2017/04/19}{Added option \opt{crop}}
% \changes{v1.2}{2017/04/26}{Set option \opt{straighquotes} for \pkg{newtxtt} 
% manually to gain compatibility with version prior to v1.05}
% \changes{v1.2}{2017/04/27}{Added \pkg{iftex} to check for pdflatex} 
% \changes{v1.2}{2017/05/04}{Added (partial) support for XeTeX and LuaTeX} 
% \changes{v1.3}{2017/05/04}{Added option \opt{nofonts} to suppress font 
% loading completely} 
% \changes{v1.3}{2017/05/08}{Changed syntax for \pkg{fontspec}} 
% \changes{v1.4}{2017/05/27}{Added new macros taken from the EMISA class file}
% \changes{v1.4}{2017/05/27}{Added option \opt{oldfonts} to use a font package
% available}
% \changes{v1.4}{2017/07/26}{Added package \pkg{caption} and changed all 
% \cs{fontsize} calls to nativ \LaTeX{} macros}
% \changes{v1.4}{2017/09/11}{Fixed basewidth for \env{lstlistings}}
% \changes{v1.4}{2017/09/29}{Fixed font size for \cs{Large}}
% \changes{v1.4}{2017/11/08}{Added full example for an article in German}
% \changes{v1.4}{2017/11/08}{Adapting captions of \env{lstlistings}}
% \changes{v1.4}{2017/11/08}{Fix font size bug regarding the running header 
% and the captions: \cs{small} was redefined, so we need an \cs{oldsmall} here}
%
% \GetFileInfo{\jobname.dtx}
% \DoNotIndex{\newcommand,\newenvironment}
%
% \title{\textsf{lni} -- Official class for submissions to the\\%
% ``Lecture Notes in Informatics''\thanks{This file describes version
% \fileversion, last revised \filedate.}}
% \author{Martin Sievers\setcounter{footnote}{6}\thanks{Email: 
% martin.sievers@schoenerpublizieren.de}}
% \date{Released \filedate}
%
% \maketitle
%
% \begin{abstract}
% \noindent After several years the \lni{} bundle has been updated. The 
% resulting new version fixes some long-standing bugs, solves problems and
% supports modern packages like \pkg{biblatex} and \pkg{microtype}. It has been 
% put into one DTX file to make maintaining and distributing via CTAN a bit 
% easier.
% \end{abstract}
%
% \section{Introduction}
% \LaTeX{} templates are often long-lasting. Even if they use meanwhile 
% deprecated packages they are often passed from one generation of authors to 
% the next.
%
% The Gesellschaft für Informatik~e.\,V. (GI) thankfully realized, that their 
% bundle should be technologically 
% modernized while the general layout remains the same.
%
% Based on the existing class and bib files I set-up a DTX file and started 
% reworking the source code. Editors and authors suggested different additions 
% and changes, which I tried to incoporate without changing the existing 
% mechanisms too much.
%
% This is the first public release. I would to thank especially
% \href{https://github.com/koppor/}{Oliver Kopp} and
% \href{https://www.fernuni-hagen.de/evis/team/stefan.strecker.shtml}{Stefan 
% Strecker} and his team for their suggestions and tests.
% 
% \section{Installation}
% The \lni{} bundle is currently distributed via 
% \href{https://github.com/gi-ev/LNI}{GitHub}, the
% \href{https://www.gi.de/service/publikationen/lni/autorenrichtlinien.html}
% {GI website} and (preferably) \href{https://www.ctan.org/pkg/lni}{CTAN}.
% The later is the basis for all updates of the two main \TeX{} distributions
% \MiKTeX{} and \TeX{}~Live. Thus the easiest way to get all files needed to 
% typeset an article for the \LNI{} is to use the package manager of your
% distribution.
% 
% For a manual installation please call \texttt{pdflatex lni.dtx} at least 
% twice and 
% copy all resulting files (cls, tex, pdf and bst) to your local TEXMF tree. 
% Don't forget to update your file name database.
% \newpage
% \section{Usage}
% To use the predefined layout for a (German) submission to the \LNI{} just 
% load the class file as usual with \cs{documentclass\{lni\}}.
%
% The class file loads a bunch of packages which are all part of modern \TeX{} 
% distributions. Therefore, if you are confronted 
% with a missing package, please try to download and install it using your 
% distribution's package manager. Alternatively go to 
% \href{http://www.ctan.org}{CTAN} to download missing packages.
%
% Please note, that the support of \hologo{XeLaTeX} and \hologo{LuaLaTeX} is 
% only partial. For example the mono font is not the same. Moreover \hologo{pdfLaTeX} 
% is a \TeX{} engine used by the publishers. Therefore it is strongly recommended 
% to use \hologo{pdfLaTeX}. 
% 
% \subsection{Options}\label{sec:options}
% Although the class file includes all layout information for a submission to 
% the \LNI{}, there are options to adapt the output one way or another.
%
% \DescribeOption{english}A document loading the \lni{} class file uses German 
% language adoptions by default. To switch to English, just load the class with 
% option \opt{english}.
%
% The language influences not only the hyphenation patterns and terms used in 
% the text, but also the choice of a corresponding \BibTeX{} file 
% (cf.~\cref{sec:bibliography}).
%
% \DescribeOption{utf8}\DescribeOption{latin1}\DescribeOption{applemac}Although 
% nowadays all major plattforms support and widely use UTF-8 encoding for 
% text files, there might be some need to change the input  encoding the
% \LaTeX{} document uses.
%
% This can be achieved by giving one of the options \opt{utf8} (which is the 
% default), \opt{latin1} or \opt{applemac} to the document class. Using UTF-8
% is strongly recommended. Please note, that currently the bib file is supposed
% to use the same encoding.
%
% \DescribeOption{biblatex}Nowadays bibliographies cannot only be produced with 
% \BibTeX{}, but with a much more powerful approach consisting of the package 
% \pkg{biblatex} and the tool \texttt{biber}.
%
% There is even a specialized package \pkg{biblatex-lni} which is automatically 
% used when setting the class option \opt{biblatex}. For more information see as well 
% \cref{sec:bibliography}.
%
% \DescribeOption{crop\space(new in v1.1)}%
% Option \opt{crop} gives you some crop marks (using the package \pkg{crop}) to 
% better illustrate the final 
% result of your article.
%
% \DescribeOption{nocleveref}When referencing figures, one has to type
% \texttt{Figure\textasciitilde}\cs{ref\marg{label}}. The package \pkg{cleveref}
% reduces the effort by offering the command \cs{cref\marg{label}}. This can be
% used with all floating objects. The package is loaded as default. In case it 
% causes issues, one can disable it using with the \opt{nocleveref} option.
%
% \DescribeOption{nohyperref}\pkg{hyperref} is used for colored hyperlinks 
% within the articles. If you consider problems or just do not want that 
% feature, you can disable it by using the option \opt{nohyperref}.
%
% \DescribeOption{nofonts\space(new in v1.3, deprecated in v1.4)}On old systems you might not
% have installed the New TX fonts. If for whatever reason the \opt{oldfonts} option 
% does not work for you, you can activate option \opt{nofonts}. This allows to 
% suppress font loading completely using the engines standard fonts instead.
% Usually there should be no need to do so. Please note, that your output will differ 
% from the publishers'.
%
% \DescribeOption{oldfonts\space(new in v1.4)}On older systems you might not
% have installed the New TX fonts. Therefore option \opt{oldfonts} allows to
% to load the package \pkg{mathptmx} instead of the New TX fonts. The output will
% be in accordance to (or at least near) the publisher's requirements.
%
% \newpage
% \section{Setting up a document}
% You can use the file \file{lni-author-template.tex} as a starting point 
% for setting up a document for submission. The \lni{} class uses the standard 
% ways to build an article.
%
% \subsection{Special meta data}\label{sec:metadata}
% There is not just one \enquote{\TeX} and one \enquote{bibliography tool}, but 
% many different ways to transform a .tex file into a PDF.
% Some \TeX{} editors like \texttt{TeXstudio}, \texttt{TeXmaker} and 
% \texttt{TeXshop} support a special set of meta data to tell the editor, how 
% to deal with a concrete document.
% 
% A typical example looks like:
% \begin{examplecode}
% % !TeX program = pdflatex
% % !BIB program = bibtex8
% % !TeX encoding = UTF-8
% !TeX spellcheck = de_DE
% \documentclass[english]{lni}
% \end{examplecode}
%
% \subsection{Special macros for editors}
% \DescribeMacro{\startpage}\DescribeMacro{\editor}\DescribeMacro{\booktitle}%
% \DescribeMacro{\year}In addition to the macros stated in 
% \cref{sec:titlepage} for authors, there are special editor macros to
% influence the layout of the article:
% \begin{itemize}
%   \item\cs{startpage} determines the starting page of the article. This 
% should always be an odd (right) page.
%   \item\cs{editor} states the name of the editor(s)
%   \item\cs{booktitle} holds the name of a conference
%   \item\cs{year} can be used to set the year
% \end{itemize}
%
% \subsection{Title page}\label{sec:titlepage}
% \DescribeMacro{\title}%
% \DescribeMacro{\subtitle\space(new in v1.1)}%
% The title of your work is given using the \cs{title} macro. In addition to 
% the title itself, you can add a short title to be used 
% in the header of a page:
% \begin{examplecode}[label={lst:title}]
% \title[Short title]{Title}
% \end{examplecode}
% 
% You can also add a subtitle by \cs{substitle\marg{subtitle}}.
% 
% \DescribeMacro{\author}\DescribeMacro{\email}\DescribeMacro{\footnote}%
% \DescribeMacro{\and}%
% The authors of an article are 
% given using the standard \cs{author} macro. Multiple authors are separated 
% by \cs{and}; affiliations have to be added with 
% \cs{footnote\marg{affiliations}} where you can use 
% \cs{email\marg{email address}} for the email address of an author:
% \begin{examplecode}[label={lst:author}] 
% \author[Author 1 \and Author 2]{%
%    Author 1\footnote{Affiliations including \email{email@author1}} \and%
%    Author 2\footnote{Affiliations including \email{email@author2}}}
% \end{examplecode}
% In case the authors are too long for the page header, see 
% \cref{sec:pageheader} of how to shorten the authors for the page header.
%
% \DescribeMacro{\lnidoi\space(new in v1.2)}%
% LNI provides a DOI for each paper. In case, the DOI is known, it can be
% specified using the \cs{lnidoi} macro.
% \begin{examplecode}[label={lst:lnidoi}]
% \lnidoi{18.18420/se2016_01}
% \end{examplecode}
%
% Finally \cs{maketitle} will output the formatted title page.
%
% \subsection{Abstract and keywords}
% \DescribeEnv{abstract}\DescribeEnv{keywords}%
% \DescribeMacro{\and\space(new in v1.1)}%
% Each article should start with a short (70 to 150 words) abstract and some 
% keywords. Please use the environments \env{abstract} and \env{keywords} for 
% that purpose:
% \begin{examplecode}
% \begin{abstract}
% Tell the reader what your article is about
% \end{abstract}   
% \begin{keywords}
% Give some keywords to categorize your article. You can use \and between two
% keywords to get the correct delimiter (semicolon plus space) automatically.
% \end{keywords}
% \end{examplecode}
%
% \subsection{Page header}\label{sec:pageheader}
% The template automatically sets the page headers according to the
% requirements of \LNI. From page~2 onwards, the title and the authors are 
% printed. These information has to stay in one line. In case the title is too 
% long, use the optional argument for \cs{title}:
% \begin{examplecode}
% \title[Short title]{Title}
% \end{examplecode}
%
% \DescribeMacro{\authorrunning}%
% In case there are many authors on a paper, they might not fit into the paper.
% For that purpose, additionally use \cs{authorrunning}:
% \begin{examplecode}
% \author[Firstname1 Lastname1 \and Firstname2 Lastname2% 
%    \and Firstname3 Lastname3]{Firstname1 Lastname1\footnote{...}%
%    \and Firstname2 Lastname2\footnote{...}%
%    \and Firstname3 Lastname3\footnote{...}}%
% \authorrunning{Lastname1 et al.}
% \end{examplecode}
%
% \subsection{Main text}
% \subsubsection{Headings}
% \DescribeMacro{\section}\DescribeMacro{\subsection}%
% \DescribeMacro{\subsubsection}
% You can use the standard macros \cs{section}, \cs{subsection}, \dots{} for 
% sectioning your text.
% 
% \subsubsection{Footnotes}
% \DescribeMacro{\footnote}%
% For adding a footnote, just use \cs{footnote\marg{footnote text}} where 
% needed. Please note, that the footnote counter is automatically set to the 
% correct value at the beginning of your text, i.\,e. it respects the number 
% of affiliations given on the title page.
%
% \subsubsection{Lists}
% \DescribeEnv{itemize}\DescribeEnv{enumerate}%
% The \lni{} class redefines the standard lists environments \env{itemize} and 
% \env{enumerate} to meet the requirements of the \LNI{}.
% 
% Lists can be filled as usual by adding \cs{item} macros.
%
% \subsubsection{Floating objects}
% \DescribeEnv{figure}\DescribeEnv{table}%
% The environments \env{figure} and \env{table} can be used the standard way to 
% include graphics or tables resp.
%
% However, please note, that the default placement parameters are changed to 
% \opt{htbp} by the class \lni{}. If you need some local adjustment, please use 
% the optional argument of both environments (cf.~Listing~\ref{lst:figure}).
%
% \DescribeMacro{\caption}\DescribeMacro{\label}
% A caption should be added by \cs{caption\marg{caption text}}, followed 
% immediately by a \cs{label\marg{unique label}} entry.
% \begin{examplecode}[label={lst:figure}]
% \begin{figure}[tb]
%    \includegraphics{...}
%    \caption{...}
%    \label{...}
% \end{figure}
% \end{examplecode}
%
% If you want to center floats, please \emph{do not} use the \env{center} 
% environment, but the macro \cs{centering}, which does not add extra white 
% space (cf.~Listing~\ref{lst:table}).
% \begin{examplecode}[label={lst:table}]
% \begin{table}
%    \centering
%    \begin{tabular}{lll}
%    ...
%    \end{tabular}
%    \caption{...}
%    \label{...}
% \end{table}
% \end{examplecode}
%
% \subsubsection{Listings\,/\,Source code}
% The \lni{} bundle loads the \pkg{verbatim} and \pkg{listings} package. While 
% the former is there for compatability, the later is the standard way of 
% integrating source code listings into a \LaTeX{} document.
%
% However, there are currently no config files shipped with the \lni{} bundle. 
% Please consult the documentation for help on setting up \pkg{listings} for a 
% specific programming language.
%
% \subsubsection{Math}
% If you need mathematics, you can load packages \pkg{amsmath} and \pkg{mathtools} for 
% additional features. The \lni{} class offers by default the command 
% \cs{powerset} to render the powerset symbol correctly as $\powerset$ and not 
% as Weierstrass p ($\wp$).
%
% \subsubsection{Abbreviations and initialisms}
% \DescribeMacro{\eg}\DescribeMacro{\ie}\DescribeMacro{\cf}\DescribeMacro{\etal}%
% To achieve consistent typesetting of common abbreviations, macros are predefined by the class. These macros should \emph{consistently} being used instead of writing the plain version. For example use \verb|\eg| rather than {\verb|e.g.,|}. The macros take care of spacing within and after the abbreviations.
% \begin{itemize}
% \item \cs{eg} for e.\,g.
% \item \cs{ie} for i.\,e.
% \item \cs{cf} for cf.
% \item \cs{etal} for et~al.
% \end{itemize}
%
% \DescribeMacro{\OMG}\DescribeMacro{\BPM}\DescribeMacro{\BPMN}\DescribeMacro{\UML}%
% In addition to common abbreviations, further initialisms are provided by the class for convenience and for a consistent visual appearance. Note that the class uses \textsc{smallcaps} for typesetting initialisms. The list of predefined initialisms comprises:
%
% \begin{itemize}
% \item \cs{OMG} for \textsc{omg} (Object Management Group).
% \item \cs{BPM} for \textsc{bpm} (Business Process Management).
% \item \cs{BPMN} for \textsc{bpmn} (Business Process Model and Notation).
% \item \cs{BPEL} for \textsc{bpel} (Business Process Execution Language).
% \item \cs{UML} for \textsc{uml} (Unified Modelling Language).
% \end{itemize}
%
% \DescribeMacro{\lniinitialism} You can add your own initialisms by stating \cs{lniinitialism\marg{\textbackslash initialism\_macro}\marg{text}} in the preamble.
%
% \subsection{Bibliography}\label{sec:bibliography}
% \enlargethispage{\baselineskip}The old \lni{} class file only supports \BibTeX{} with bst files for German 
% and English submissions resp. If you want to use this approach for your
% article you have to add \cs{bibliography\marg{Bib file}} at an appropriate
% position within your text. The correct bst file is loaded automatically.
% 
% With option 
% \opt{biblatex} (cf.~\cref{sec:options}) you can easily switch to the modern
% \pkg{biblatex} package. However, you have to add information on the bib 
% file(s) in your preamble using \cs{addbibresource\marg{Bib file(s)}} and call 
% \cs{printbibliography} where you want the bibliography to appear.
%
% Please note, that the \lni{} class sets 
% \texttt{biber} as the default bibliography tool. \texttt{biber} is part of 
% both major \TeX{} distributions and can easily be used within most \TeX{} 
% editors, e.\,g. by using special meta data as described in
% \cref{sec:metadata}.
%
% If you want to pass settings to \pkg{biblatex} you can use a config 
% file \texttt{biblatex.cfg}, for additional options please use the macro 
% \cs{ExecuteBibliographyOptions}. Please consult the
% \href{http://texdoc.net/pkg/biblatex}{package's documentation} for
% more information.
% \begin{examplecode}
% % !TeX program = pdflatex
% % !BIB program = biber   
% \documentclass[biblatex]{lni}
% ...
% \ExecuteBibliographyOptions{...}
% \addbibresource{FILENAME.bib}   
% ...
% \begin{document}
% ...
% \printbibliography
% ...
% \end{document}
% \end{examplecode}
%
% \section{Trouble shooting}
% This section lists the most common issues when using this template. For more
% help, please head to
% \href{https://github.com/egeerardyn/awesome-LaTeX/blob/master/README.md}%
% {the awesome \LaTeX{} list}.
%
% \begin{itemize}
% \item If the compiler error is\\
% \texttt{!pdfTeX error (font expansion): auto
% expansion is only possible with scalable fonts.},\\%
% then you have to install the
% \pkg{cm-super} package. Afterwards, run \texttt{initexmf --mkmaps} on the
% command line. A longer discussion is available at
% \url{http://tex.stackexchange.com/a/324972/9075}.
% \item If the compiler error is\\
% \texttt{!LaTeX Error: Command \textbackslash
% openbox already defined.},\\
% insert\\
% \cs{let}\cs{openbox}\cs{relax} before \cs{usepackage\{amsthm\}}.
% \item If the compiler error is\\
% \texttt{!Undefined control sequence. l.84
% \textbackslash ulp@afterend},\\
% just clean up (remove \texttt{paper.aux}) and recompile.
% \item If the compiler error is\\
% \texttt{!Package xkeyval Error: 'family\_i'
% undefined in families blx@opt@name}\\\texttt{part'.},\\
% it is an indicator that you
% switched from \BibTeX{} to \pkg{biblatex}. Clean up (remove 
% \texttt{paper.bbl}) and recompile.
% \item Errors with \BibTeX: The bst files may still report errors, although 
% the output is okay. This will be solved as soon as possible. However, you 
% might consider switching to \pkg{biblatex} (cf.~\cref{sec:bibliography}).
% \end{itemize}
%
% \section{Bugs and feature request}
% If you find a bug or have a feature request, please open an ``issue'' at the
% \href{https://github.com/gi-ev/LNI/issues}{GitHub website}.
%
% \StopEventually{^^A
%  \PrintChanges
%  \PrintIndex
% }
%
% \section{Implementation}
%
%    \begin{macrocode}
%<*class>
%    \end{macrocode}
%    \begin{macrocode}
\def\@clearglobaloption#1{%
  \def\@tempa{#1}%
  \def\@tempb{\@gobble}%
  \@for\next:=\@classoptionslist\do
    {\ifx\next\@tempa
       \message{Cleared  option \next\space from global list}%
     \else
       \edef\@tempb{\@tempb,\next}%
     \fi}%
  \let\@classoptionslist\@tempb
  \expandafter\ifx\@tempb\@gobble
    \let\@classoptionslist\@empty
  \fi}
%
\DeclareOption{latin1}{\PassOptionsToPackage{latin1}{inputenc}}
\DeclareOption{utf8}{\PassOptionsToPackage{utf8}{inputenc}}
\DeclareOption{ansinew}{\PassOptionsToPackage{ansinew}{inputenc}}
\newif\iflnienglish
\lnienglishfalse
\DeclareOption{english}{\lnienglishtrue\@clearglobaloption{english}}
\newif\ifusehyperref
\usehyperreftrue
\DeclareOption{nohyperref}{\usehyperreffalse}
\newif\ifusecleveref
\useclevereftrue
\DeclareOption{nocleveref}{\useclevereffalse}
\newif\ifusebiblatex
\usebiblatexfalse
\DeclareOption{biblatex}{\usebiblatextrue}
\newif\ifcrop
\cropfalse
\DeclareOption{crop}{\croptrue}
\newif\ifnofonts
\nofontsfalse
\DeclareOption{nofonts}{\nofontstrue\autofontsfalse}
\newif\ifoldfonts
\oldfontsfalse
\DeclareOption{oldfonts}{\oldfontstrue\autofontsfalse}
\newif\ifautofonts
\autofontstrue
\ExecuteOptions{utf8}
\DeclareOption*{\ClassWarning{Option `\CurrentOption` is not supported!}}
\ProcessOptions\relax
%
\RequirePackage{iftex}
\ifPDFTeX
   \RequirePackage{hyphsubst}
   \HyphSubstIfExists{ngerman-x-latest}%
      {\HyphSubstLet{ngerman}{ngerman-x-latest}%
       \ClassInfo{lni}{Using latest German hyphenation patterns}}%
      {\ClassWarning{lni}{Latest German hyphenation patterns could not be found!%
         \MessageBreak If you write a German article you should check your%
         installation}}%
\fi%
\LoadClass[10pt,twoside,a4paper,fleqn]{article}
\ifPDFTeX
   \RequirePackage{cmap}
   \RequirePackage{inputenc}
   \RequirePackage[T1]{fontenc}
\fi%
%
\iflnienglish
   \RequirePackage[ngerman,english]{babel}
\else
   \RequirePackage[english,ngerman]{babel}
\fi%
% Hint by http://tex.stackexchange.com/a/321067/9075 -> enable "= as dashes
\useshorthands*{"}
\addto\extrasenglish{\languageshorthands{ngerman}}
%    \end{macrocode}
% Define a modern variant of Times as the main font
%    \begin{macrocode}
\ifautofonts
   \ClassInfo{lni}{*******************************************************}
   \MessageBreak
   \ClassInfo{lni}{Checking for fonts ...}
   \ClassInfo{lni}{*******************************************************}
   \ifPDFTeX
      \IfFileExists{newtxtext.sty}
         {%
            \RequirePackage{newtxtext}
            \RequirePackage{newtxmath}
            \RequirePackage[zerostyle=b,scaled=.9]{newtxtt} 
%    \end{macrocode}
% For compatibility with version of \pkg{newtxtt} prior to v1.05 we set the 
% option \opt{straightquotes} manually for recent versions
%    \begin{macrocode}
            \@ifpackagelater{newtxtt}{2014/11/18}%
               {\txtt@upqtrue}%
               {\ClassWarning{lni}{You are using an old version of 
                `newtxtt'.\MessageBreak 
                Option `straightquotes' will not be used!}}%
%    \end{macrocode}         
%    \begin{macrocode}
         }%
         {\IfFileExists{mathptmx.sty}
            {\oldfontstrue}%
            {\nofontstrue}%
         }%
%    \end{macrocode}         
% for \hologo{XeTeX} or \hologo{LuaTeX} we use \pkg{fontspec}
%    \begin{macrocode}
   \else%
      \IfFileExists{newtxmath.sty}
         {\RequirePackage{newtxmath}}%
         {}%
      \RequirePackage[no-math]{fontspec}
      \IfFontExistsTF{texgyretrmes-regular.otf}
         {%
          \setmainfont{texgyretermes}[
             Extension = .otf,
             UprightFont = *-regular,
             BoldFont = *-bold,
             ItalicFont = *-italic,
             BoldItalicFont = *-bolditalic,
             Ligatures=TeX
             ]
         }%
         {\IfFileExists{mathptmx.sty}
            {\oldfontstrue}%
            {\nofontstrue}%
         }%
   \fi%         
\fi%         
\ifoldfonts
   \RequirePackage{mathptmx}
\else%
   \ifnofonts % nofonts activated
      \ClassWarning{lni}{Option `nofonts' set! I will use standard fonts
      \MessageBreak
      instead of the New TX fonts. Your document will NOT look like the
      \MessageBreak
      final result for publication. This should only be used if you have
      \MessageBreak
      no possibility to install fonts or upgrade your TeX installation!}%
   \fi%
\fi%
%    \begin{macrocode}
\ifPDFTeX
   \RequirePackage[%
      final,%
      tracking=smallcaps,%
      expansion=alltext,%
      protrusion=alltext-nott]{microtype}%
\else
   \RequirePackage[%
      final,%
      protrusion=alltext-nott]{microtype}%
\fi%
\SetTracking{encoding=*,shape=sc}{50}%
%    \end{macrocode}
% Introduce \cs{powerset} - hint by \url{http://matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=136492&post_id=997377}
%    \begin{macrocode}
\DeclareFontFamily{U}{MnSymbolC}{}
\DeclareSymbolFont{MnSyC}{U}{MnSymbolC}{m}{n}
\DeclareFontShape{U}{MnSymbolC}{m}{n}{
    <-6>  MnSymbolC5
   <6-7>  MnSymbolC6
   <7-8>  MnSymbolC7
   <8-9>  MnSymbolC8
   <9-10> MnSymbolC9
  <10-12> MnSymbolC10
  <12->   MnSymbolC12%
}{}
\DeclareMathSymbol{\powerset}{\mathord}{MnSyC}{180}
%    \end{macrocode}
% Support for CC icons
\RequirePackage{ccicons}
% Support for \cs{ifdefempty}
\RequirePackage{etoolbox}
% Satzspiegel
%    \begin{macrocode}
\newlength{\doihoffset}
\newlength{\doivoffset}
\ifcrop
   \RequirePackage[
     paperheight=23.5cm,paperwidth=15.5cm,
     total={12.6cm,19.2cm},
     includehead,
     headheight=20.39pt,
     headsep=.31cm,
     centering]
     {geometry}
   \RequirePackage[a4,center,cam,info]{crop}
   \renewcommand*\CROP@@info{{%
      \global\advance\CROP@index\@ne
      \def\x{\discretionary{}{}{\hbox{\kern.5em---\kern.5em}}}%
      \advance\paperwidth-20\p@
      \dimen@4pt
      \ifx\CROP@pagecolor\@empty
      \else
      \advance\dimen@\CROP@overlap
      \fi
      \hb@xt@\z@{%
         \hss
         \vbox to\z@{%
            \centering
            \hsize\paperwidth
            \vss
            \normalfont
            \normalsize
            \expandafter\csname\CROP@font\endcsname{%
               ``\jobname''\x
               \the\@rigyear/\the\month/\the\day\x
               \CROP@time\x
               page\kern.5em\thepage\x
               \#\the\CROP@index
               \strut
            }%
            \vskip\dimen@
         }%
         \hss
      }%
   }}%
   \setlength{\doihoffset}{1.45cm}
   \setlength{\doivoffset}{1.2cm}
\else
   \RequirePackage[
     total={12.6cm,19.2cm},
     includehead,
     headheight=20.39pt,
     headsep=.31cm,
     centering]
     {geometry}
   \setlength{\doihoffset}{4.2cm}
   \setlength{\doivoffset}{4.3cm}
\fi%
%    \end{macrocode}
% We change \cs{small} and \cs{Large} to get the correct baseline skips and add 
% an \cs{oldsmall}
%    \begin{macrocode}
\let\oldsmall\small%
\renewcommand\small{%
   \@setfontsize\small\@ixpt{10}%
   \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
   \abovedisplayshortskip \z@ \@plus2\p@
   \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 4\p@ \@plus2\p@ \@minus2\p@
               \parsep 2\p@ \@plus\p@ \@minus\p@
               \itemsep \parsep}%
   \belowdisplayskip \abovedisplayskip
}
\renewcommand\Large{\@setfontsize\Large{14}{17}}
%    \end{macrocode}
%    \begin{macrocode}
\RequirePackage[autostyle]{csquotes}
\ifusebiblatex
  \RequirePackage[%
    backend=biber,% UTF-8 support
    style=LNI,    % The GI style - see https://www.ctan.org/pkg/biblatex-lni
    natbib=true   % Required for \Citet
  ]{biblatex}[2016-09-15]% at least version 3.6 of biblatex is required.
%    \end{macrocode}
% \begin{macro}{\citeauthor}
%    \begin{macrocode}
  % Enable hyperlinked authors when using \citeauthor
  % Source: http://tex.stackexchange.com/a/75916/9075
  \DeclareCiteCommand{\citeauthor}%
    {\boolfalse{citetracker}%
     \boolfalse{pagetracker}%
     \usebibmacro{prenote}}%
    {\ifciteindex%
       {\indexnames{labelname}}%
       {}%
     \printtext[bibhyperref]{\printnames{labelname}}}%
    {\multicitedelim}%
    {\usebibmacro{postnote}}%
% \end{macro}
%    \begin{macrocode}
\fi%
%    \end{macrocode}
%    \begin{macrocode}
\RequirePackage{graphicx}
\RequirePackage{eso-pic}
\RequirePackage{grffile}
\RequirePackage{fancyhdr}
\RequirePackage{listings}
%    \end{macrocode}
% We fix the basewidth for lstlistings:
% The default setting of listings with ``fixed columns'' has a space 0.6em
% wide, while the characters in TX Typewriter (as in Computer Modern
% Typewriter) are 0.5em wide.
% Source: https://tex.stackexchange.com/a/179072/9075
%    \begin{macrocode}
\lstset{%
   basicstyle=\ttfamily,%
   columns=fixed,%
   basewidth=.5em,%
   xleftmargin=0.5cm,%
   captionpos=b}%
%    \end{macrocode}
% Ragged bottom -- verhindert die Ausdehnung der Seite = Veränderung der 
% Abstände
%    \begin{macrocode}
\def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil
\global\let\@textbottom\relax}}
%    \end{macrocode}
% Seitenzahlen -- Größe der Box
%    \begin{macrocode}
\renewcommand\@pnumwidth{3em}
\renewcommand\@tocrmarg{3.5em}
\def\@dottedtocline#1#2#3#4#5{%
  \ifnum #1>\c@tocdepth \else
    \vskip \z@ \@plus.2\p@
    {\leftskip #2\relax \rightskip \@tocrmarg \advance\rightskip by 0pt plus 2cm
               \parfillskip -\rightskip \pretolerance=10000
     \parindent #2\relax\@afterindenttrue
     \interlinepenalty\@M
     \leavevmode
     \@tempdima #3\relax
     \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
     {#4}\nobreak
     \leaders\hbox{$\m@th
        \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
        mu$}\hfill
     \nobreak
     \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
     \par}%
  \fi}
%    \end{macrocode}
% \begin{macro}{\title}
%    \begin{macrocode}  
\renewcommand{\title}{\@dblarg\@@title}
\def\@@title[#1]#2{\gdef\@shorttitle{#1}\gdef\@title{#2}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\subtitle}
%    \begin{macrocode}
\newcommand{\@subtitle}{}
\newcommand{\subtitle}[1]{\gdef\@subtitle{#1}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\author}
%    \begin{macrocode}
\renewcommand{\author}{\@dblarg\@@author}
\def\@@author[#1]#2{\gdef\@shortauthor{{\let\footnote\@gobble%
   \def\and{\unskip,\ }#1}}\gdef\@author{#2}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\authorrunning}
%    \begin{macrocode}
\newcommand{\authorrunning}[1]{%
   \fancyhead[LE]{\hspace{0.05cm}\oldsmall\thepage\hspace{5pt}#1}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\email}
%    \begin{macrocode}
\newcommand*{\email}[1]{{\urlstyle{same}\protect\url{#1}}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\lnidoi}
%    \begin{macrocode}
\newcommand{\@lnidoi}{}
\newcommand{\lnidoi}[1]{\gdef\@lnidoi{#1}}
%    \end{macrocode}
% \end{macro}
% Title: Kopie aus article.cls mit anderem \thispagestyle
%    \begin{macrocode}
\renewcommand\maketitle{\par%
\begingroup
    \renewcommand\thefootnote{\@arabic\c@footnote}%
    \def\@makefnmark% keine Einrückung der Fußnoten eingestellt
		 {\@textsuperscript{\normalfont\@thefnmark}}%
		 \long\def\@makefntext##1{%
		 \@setpar{\@@par
		 \@tempdima = \hsize
		 \advance\@tempdima -1em
		 \parshape \@ne 0.15cm \@tempdima}%
		 \par\parindent 0.3cm \noindent
		 \hb@xt@\z@{\hss\@textsuperscript{\normalfont\@thefnmark}\,}##1}
    \if@twocolumn
      \ifnum \col@number=\@ne
        \@maketitle
      \else
        \twocolumn[\@maketitle]%
      \fi
    \else
      \newpage
      \global\@topnum\z@   % Prevents figures from going at top of page.
      \@maketitle
    \fi
    \thispagestyle{plain}
    \@thanks   
  \endgroup
  \global\let\thanks\relax
  \global\let\maketitle\relax
  \global\let\@maketitle\relax
  \global\let\@thanks\@empty
  \global\let\@author\@empty
  \global\let\@date\@empty
  \global\let\@title\@empty
  \global\let\title\relax
  \global\let\author\relax
  \global\let\date\relax
  \global\let\and\relax
}
%    \end{macrocode}
%    \begin{macrocode}
\def\@maketitle{%
  \newpage
  \null
  \begin{center}%
  \vskip -24pt% Abstand vor dem Titel
  \raggedright % Linksbündig
  \let\footnote\thanks
    {\Large\bfseries\@title\par}%
    \ifx\@subtitle\empty\else
      \vskip 16pt
      {\normalsize\bfseries\@subtitle}
    \fi%
    \vskip 19pt% Abstand nach dem Titel
    {\normalsize%
      \lineskip .5em%
        \@author
      \par}%
    \vskip 28pt% Abstand vor dem Abstract
  \end{center}%
% output CC license and DOI (if it exists)
  \AddToShipoutPictureBG*{\AtPageLowerLeft{%
    \put(\LenToUnit{\the\doihoffset},\LenToUnit{\the\doivoffset}){%
      \ifusehyperref
        \href{https://creativecommons.org/licenses/by-sa/4.0/}{\ccbysa}
      \else
        \ccbysa
      \fi
      \ifdefempty{\@lnidoi}{}{
        \footnotesize
        \ifusehyperref
          \href{https://doi.org/\@lnidoi}{doi:\@lnidoi}
        \else
          doi:\@lnidoi
        \fi%
      }
    }
  }}
  \par
}%
%    \end{macrocode}
% \begin{environment}{abstract}
%    \begin{macrocode}
\renewenvironment*{abstract}{%
   \renewcommand{\abstractname}{Abstract}%
   \small\noindent\ignorespaces{\bfseries\abstractname:\ }%
}{\endquotation}  
%    \end{macrocode}
% \end{environment}
% \begin{environment}{keywords}
%    \begin{macrocode}
\newif\ifkeywords
\newenvironment{keywords}%
   {\global\keywordstrue\small%
    \def\and{\unskip;\space}%
    \noindent\ignorespaces{\bfseries Keywords:\ }}%
   {\global\keywordsfalse}
\let\@RIGsection\section
\pretocmd\@startsection{\ifkeywords\ClassError{lni}{keywords is an environment, not a macro}%
   {Please change \string\keywords\space to an environment}\keywordsfalse\fi}{}{}   
%    \end{macrocode}
% \end{environment}
% Section headings
%    \begin{macrocode}
\renewcommand{\section}{\@startsection{section}{1}{\z@}%
  {-16\p@ \@plus -4\p@ \@minus -4\p@}{5\p@ \@plus 4\p@ \@minus 
  4\p@}{\large\bfseries}}
\renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
  {-16\p@ \@plus -4\p@ \@minus -4\p@}{8\p@ \@plus 4\p@ \@minus 
  4\p@}{\normalsize\bfseries}}
%    \end{macrocode}
% Bildunterschriften
%    \begin{macrocode}
\RequirePackage{caption}
\DeclareCaptionFont{oldsmall}{\oldsmall}
\captionsetup[figure]{style=base,skip=4pt,font=oldsmall}
\captionsetup[table]{style=base,skip=6pt,font=oldsmall}
\captionsetup[lstlisting]{style=base,skip=6pt,font=small}
\setlength{\intextsep}{6pt}%Abstand nach der Grafik
%    \end{macrocode}
% Take care of floats
%    \begin{macrocode}
\def\fps@figure{htbp}
\def\fnum@figure{\figurename~\thefigure}
\def\@floatboxreset{%
        \reset@font
        \small
        \@setnobreak
        \@setminipage
}%
\setcounter{topnumber}{10}% maximale Anzahl gleitender Objekte am Seitenanfang
\setcounter{bottomnumber}{10}% maximale Anzahl gleitender Objekte am Seitenende
\renewcommand{\topfraction}{1.0}% Anteil den gleitende Objekte am Seitenanfang einnehmen dürfen
\renewcommand{\bottomfraction}{1.0}% Anteil den gleitende Objekte am Seitenende einnehmen dürfen
%    \end{macrocode}
% Tables
%    \begin{macrocode}
\def\fps@table{htbp}
\def\fnum@table{\tablename~\thetable}
\renewcommand{\arraystretch}{1.1}
%    \end{macrocode}
% Indention for equations with fleqn option
%    \begin{macrocode}
\setlength{\mathindent}{0.5cm}
%    \end{macrocode}
% Indention for verbatim listings
%    \begin{macrocode}
\RequirePackage{verbatim}
\def\verbatim@processline{\hskip0.5cm\the\verbatim@line\par}
%    \end{macrocode}
% Set rule width und correct size
%    \begin{macrocode}
\renewcommand\footnoterule{%
  \kern-3\p@
  \hrule\@width 5cm
  \kern2.6\p@}
\newdimen\fnindent
\fnindent0.18cm
\long\def\@makefntext#1{%
    \parindent \fnindent%
    \leftskip \fnindent% Einrückung vor der footnotemark
    \noindent
    \llap{\hb@xt@0.10cm{\hss\@makefnmark\ }}\ignorespaces#1}
%    \end{macrocode}
%    \begin{macrocode}
\setlength{\parindent}{0pt}
\setlength{\parskip}{8pt}
%    \end{macrocode}
% Set symbols for itemize
%    \begin{macrocode}
\renewcommand{\labelitemi}{$\bullet$}
\renewcommand*\itemize{%
  \ifnum \@itemdepth >\thr@@\@toodeep\else
  	\setlength{\labelsep}{0.70cm}%Abstand zum Aufzählungspunkt
    \advance\@itemdepth\@ne
    \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%   
    \expandafter
    \list  
      \csname\@itemitem\endcsname
      {\def\makelabel##1{\hss\llap{##1}}%
       \setlength{\itemsep}{8pt}%
       \setlength{\parsep}{-2pt}}%
  \fi}
%    \end{macrocode}
% and numbered lists
%    \begin{macrocode}  
  \renewcommand{\labelenumii}{\alph{enumii})}
  \renewcommand*\enumerate{%    
  \ifnum \@enumdepth >\thr@@
      \@toodeep
    \else
		\setlength{\labelsep}{0.70cm}%Abstand zur Aufzählungsnummer      
      \advance\@enumdepth \@ne
      \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
    \fi
    \@ifnextchar[{\@enumlabel@{\@enumerate@}[}{\@enumerate@}}
  \def\@enumerate@{%
    \expandafter\list\csname label\@enumctr\endcsname{%
      \usecounter{\@enumctr}%
      \def\makelabel##1{\hss\llap{##1}}
		\setlength{\labelsep}{0.6cm} %Einrückung des Aufzählungszeichens     
      \setlength{\itemsep}{8pt}%
      \setlength{\parsep}{-2pt}}
  }%
%    \end{macrocode}
% \begin{macro}{\andname}
%    \begin{macrocode}
\newcommand{\andname}{}
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
\addto\captionsngerman{%
  \renewcommand{\andname}{und}%
  \renewcommand{\figurename}{Abb.}%
  \renewcommand{\tablename}{Tab.}%
  \renewcommand{\lstlistingname}{List.}
  \renewcommand{\refname}{Literaturverzeichnis}
}%
%    \end{macrocode}
%    \begin{macrocode}
\addto\captionsenglish{%
  \renewcommand{\andname}{and}%
  \renewcommand{\figurename}{Fig.}%
  \renewcommand{\tablename}{Tab.}%
  \renewcommand{\lstlistingname}{List.}
}%
%    \end{macrocode}
% \begin{macro}{\startpage}
%    \begin{macrocode}
\newcommand*{\startpage}[1]{\setcounter{page}{#1}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\booktitle}
%    \begin{macrocode}
\newcommand*{\@booktitle}{}
\newcommand*{\booktitle}[1]{\renewcommand{\@booktitle}{#1}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\editor}
%    \begin{macrocode}
\newcommand*{\@editor}{}
\newcommand*{\editor}[1]{\renewcommand{\@editor}{#1}}
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
\AtBeginDocument{%
   \let\@rigyear\year
   \newcommand*{\@year}{\the\@rigyear}
   \renewcommand*{\year}[1]{%
      \renewcommand{\@year}{#1}%
   }%
}%
%    \end{macrocode}
% set-up for header and footer
%    \begin{macrocode}
\fancypagestyle{plain}{%
   \fancyhead{} % Löscht alle Kopfzeileneinstellungen
   \fancyhead[RO]{\small\@editor~(Hrsg.):\ \@booktitle,\hspace{1sp}\null\linebreak%
       Lecture Notes in Informatics (LNI), Gesellschaft für Informatik, Bonn~\@year%
       \hspace{5pt}\thepage\hspace{0.05cm}}
   \fancyhead[LE]{\small\@editor~(Hrsg.):\ \@booktitle,\linebreak\hspace{0.05cm}\thepage\hspace{5pt} Lecture Notes in Informatics (LNI), Gesellschaft für Informatik, Bonn~\@year}
   \fancyfoot{} % Löscht alle Fußzeileneinstellungen
   \renewcommand{\headrulewidth}{0.4pt} %Linie unter Kopfzeile 
}%
\pagestyle{fancy}
\fancyhead{} % Löscht alle Kopfzeileneinstellungen
\fancyhead[RO]{\small\@shorttitle\hspace{5pt}\thepage\hspace{0.05cm}}
\fancyhead[LE]{\hspace{0.05cm}\small\thepage\hspace{5pt}\@shortauthor}
\fancyfoot{} % Löscht alle Fußzeileneinstellungen
\renewcommand{\headrulewidth}{0.4pt} %Linie unter Kopfzeile 
%    \end{macrocode}
%    \begin{macrocode}
\RequirePackage{url}
%    \end{macrocode}
% improve wrapping of URLs - hint by http://tex.stackexchange.com/a/10419/9075
%    \begin{macrocode}
\g@addto@macro{\UrlBreaks}{\UrlOrds}
%    \end{macrocode}
%    \begin{macrocode}
\RequirePackage{xspace}
%    \end{macrocode}
%    \begin{macrocode}
\ifusehyperref
   \RequirePackage[pdfusetitle]{hyperref}
   \hypersetup{%
      pdfdisplaydoctitle,
      bookmarks=false,%
      colorlinks=true,%
      allcolors=black,%
      %%%pdfpagelayout=TwoPageRight,%
      pdfstartview=Fit%
   }%
\fi%
%    \end{macrocode}
%    \begin{macrocode}
\ifusecleveref%
   \iflnienglish
     \usepackage[capitalise,nameinlink]{cleveref}
     \crefname{section}{Sect.}{Sect.}
     \Crefname{section}{Sect.}{Sect.}
   \else
     \usepackage[ngerman,nameinlink]{cleveref}
   \fi%
   \crefname{figure}{\figurename}{\figurename}
   \Crefname{figure}{\figurename}{\figurename}
   \crefname{listing}{\lstlistingname}{\lstlistingname}
   \Crefname{listing}{\lstlistingname}{\lstlistingname}
   \crefname{table}{\tablename}{\tablename}
   \Crefname{table}{\tablename}{\tablename}
\fi%
%    \end{macrocode}
% enables correct jumping to figures when referencing
%    \begin{macrocode}
\RequirePackage[all]{hypcap}
%    \end{macrocode}
%    \begin{macrocode}
\def\and{\unskip\hspace{-0.42em},\hspace{.6em}}
%    \end{macrocode}
%    \begin{macrocode}
\ifusebiblatex
\else
   \iflnienglish
      \bibliographystyle{lni}%
   \else
      \bibliographystyle{lnig}%
   \fi%
\fi%
\newcommand*{\lni@abbrv}[1]{#1\@\xspace}
\newcommand*{\lniabbrv}[2]{\gdef#1{\lni@abbrv{#2}}}
\newcommand*{\lni@initialism}[1]{\textsc{#1}\xspace}
\newcommand*{\lniinitialism}[2]{\gdef#1{\lni@initialism{#2}}}
\newcommand*{\ie}{\lni@abbrv{i.\,e.}}
\newcommand*{\eg}{\lni@abbrv{e.\,g.}}
\newcommand*{\cf}{\lni@abbrv{cf.}}
\newcommand*{\etal}{\lni@abbrv{et~al.}}
\newcommand*{\OMG}{\lni@initialism{omg}}
\newcommand*{\BPM}{\lni@initialism{bpm}}
\newcommand*{\BPMN}{\lni@initialism{bpmn}}
\newcommand*{\BPEL}{\lni@initialism{bpel}}
\newcommand*{\UML}{\lni@initialism{uml}}
%    \end{macrocode}
% bibliography
%    \begin{macrocode}
\renewenvironment{thebibliography}[1]
{\iflnienglish\selectlanguage{english}\else\selectlanguage{ngerman}\fi
   \section*{\refname}%
   \bgroup\small%
   \list{\@biblabel{\@arabic\c@enumiv}}%
   {\settowidth\labelwidth{\@biblabel{#1}}%
      \leftmargin\labelwidth
      \advance\leftmargin\labelsep
      \@openbib@code
      \usecounter{enumiv}%
      \let\p@enumiv\@empty
      \renewcommand\theenumiv{\@arabic\c@enumiv}}%
   \sloppy
   \clubpenalty4000
   \@clubpenalty \clubpenalty
   \widowpenalty4000%
   \sfcode`\.\@m}
{\def\@noitemerr
   {\@latex@warning{Empty `thebibliography' environment}}%
   \endlist\egroup}
%    \end{macrocode}
%    \begin{macrocode}
\frenchspacing    
\tolerance 1414
\hbadness 1414
\emergencystretch 1.5em
\hfuzz 0.3pt
\widowpenalty=10000
\displaywidowpenalty=10000
\clubpenalty=9999
\interfootnotelinepenalty=9999
\brokenpenalty=2000
\vfuzz \hfuzz
\raggedbottom
%    \end{macrocode}
%    \begin{macrocode}
%</class>
%    \end{macrocode}
%\Finale
%
%\iffalse
%
%    \begin{macrocode}
%<*bibtex>
%<*eng|ger>
%    \end{macrocode}
%    \begin{macrocode}
ENTRY
  { address
    author
    booktitle
    chapter
    edition
    editor
    howpublished
    institution
    journal
    key
    month
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    volume
    year
  }
  {}
  { label extra.label sort.label }

INTEGERS { output.state before.all mid.sentence after.sentence after.block }

FUNCTION {init.state.consts}
{ #0 'before.all :=
  #1 'mid.sentence :=
  #2 'after.sentence :=
  #3 'after.block :=
}

STRINGS { s t }

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { ", " * write$ }
    { output.state after.block =
	{ add.period$ write$
	  newline$
	  "\newblock " write$
	}
	{ output.state before.all =
	    'write$
	    { add.period$ " " * write$ }
	  if$
	}
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

FUNCTION {output.check}
{ 't :=
  duplicate$ empty$
    { pop$ "empty " t * " in " * cite$ * warning$ }
    'output.nonnull
  if$
}

FUNCTION {output.bibitem}
{ newline$
  "\bibitem[" write$
  label write$
  "]{" write$
  cite$ write$
  "}" write$
  newline$
  ""
  before.all 'output.state :=
}

FUNCTION {fin.entry}
{ add.period$
  write$
  newline$
}

FUNCTION {new.block}
{ output.state before.all =
    'skip$
    { after.block 'output.state := }
  if$
}

FUNCTION {new.sentence}
{ output.state after.block =
    'skip$
    { output.state before.all =
	'skip$
	{ after.sentence 'output.state := }
      if$
    }
  if$
}

FUNCTION {not}
{   { #0 }
    { #1 }
  if$
}

FUNCTION {and}
{   'skip$
    { pop$ #0 }
  if$
}

FUNCTION {or}
{   { pop$ #1 }
    'skip$
  if$
}

FUNCTION {new.block.checka}
{ empty$
    'skip$
    'new.block
  if$
}

FUNCTION {new.block.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.block
  if$
}

FUNCTION {new.sentence.checka}
{ empty$
    'skip$
    'new.sentence
  if$
}

FUNCTION {new.sentence.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.sentence
  if$
}

FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}

FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { "{\em " swap$ * "}" * }
  if$
}

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names} %formats the names of the authors
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't 
% last name, prename(s)
     :=
      nameptr #1 >
        { namesleft #1 >
            { "; " * t * }
%
% (RT) Now here we have discovered a bug. The bibliography of the LaTeX-book shows
% the fault: If there are three or more authors, then the final ``and'' before
% the last author's name is preceeded by a comma. This looks ugly and is
% wrong.
% The original and faulty line in format.names reads
%            { numnames #2 >
% Actually the generation of the comma is dependent on the number of names
% left. Therefore:
%
            { namesleft #2 >
                { ";" * }
                'skip$
              if$
              t "others" =
                { " et~al." * }
% ``and'' changed to ``;'' 
                { "; " * t * }
              if$
            }
          if$
        }
        't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
   
}

FUNCTION {format.authors}
{ author empty$
    { "" }
    { author format.names }
  if$
  ": " * %add a : after the authors
}

FUNCTION {format.editors}
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
% use abbreviations
%</eng|ger>
%<*eng>
	{ ", eds" * }
	{ ", ed." * }
%</eng>
%<*ger>
	{ ", Hrsg." * }
	{ ", Hrsg." * }
%</ger>
%<*eng|ger>	
      if$
    }
  if$
}

FUNCTION {format.title}
{ title empty$
    { "" }
% (RT) the title as typed in the database here 
%    { title "t" change.case$ }
    'title
  if$
}

FUNCTION {n.dashify}
{ 't :=
  ""
    { t empty$ not }
    { t #1 #1 substring$ "-" =
	{ t #1 #2 substring$ "--" = not
	    { "--" *
	      t #2 global.max$ substring$ 't :=
	    }
	    {   { t #1 #1 substring$ "-" = }
		{ "-" *
		  t #2 global.max$ substring$ 't :=
		}
	      while$
	    }
	  if$
	}
	{ t #1 #1 substring$ *
	  t #2 global.max$ substring$ 't :=
	}
      if$
    }
  while$
}

FUNCTION {format.date}
{ year empty$
    { month empty$
	{ "" }
	{ "there's a month but no year in " cite$ * warning$
	  month
	}
      if$
    }
    { month empty$
	'year
	{ month " " * year * }
      if$
    }
  if$
}

FUNCTION {format.btitle}
{ title % no emphasize
}

FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
    { "~" }
    { " " }
  if$
  swap$ * *
}

FUNCTION {either.or.check}
{ empty$
    'pop$
    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  if$
}

FUNCTION {format.bvolume}
{ volume empty$
    { "" }
%</eng|ger>
%<*eng>
    { "volume" volume tie.or.space.connect
%</eng>
%<*ger>    
    { "Jgg." volume tie.or.space.connect
%</ger>
%<*eng|ger>    
      series empty$
	'skip$
%</eng|ger>
%<*eng>	
	{ " of " * series % no emphasize 
%</eng>
%<*ger>
	{ " in " * series % no emphasize 
%</ger>
%<*eng|ger>	 	
	* }
      if$
      "volume and number" number either.or.check
    }
  if$
}

FUNCTION {format.number.series}
{ volume empty$
    { number empty$
	{ series field.or.null }
	{ output.state mid.sentence =
	    { "" } %No word before number
	    { "" }
	  if$
	  series empty$
        { "" }
        { series * }
      if$          
          number tie.or.space.connect % series and then the number, eg LNI 001
        }
    if$
    }
    { "" }
  if$
}

FUNCTION {format.edition}
{ edition empty$
    { "" }
    { output.state mid.sentence =
%</eng|ger>
%<*eng>    
	{ edition "l" change.case$ " edition" * }
	{ edition "t" change.case$ " edition" * }
%</eng>
%<*ger>
	{ edition "l" change.case$ ".~Auflage" * }
	{ edition "t" change.case$ ".~Auflage" * }
%</ger>
%<*eng|ger>	
      if$
    }
  if$
}

INTEGERS { multiresult }

FUNCTION {multi.page.check}
{ 't :=
  #0 'multiresult :=
    { multiresult not
      t empty$ not
      and
    }
    { t #1 #1 substring$
      duplicate$ "-" =
      swap$ duplicate$ "," =
      swap$ "+" =
      or or
	{ #1 'multiresult := }
	{ t #2 global.max$ substring$ 't := }
      if$
    }
  while$
  multiresult
}

FUNCTION {format.pages}
{ pages empty$
    { "" }
    { pages multi.page.check
%</eng|ger>
%<*eng>
    %  -> Use abbreviation: pp. for pages, p. for page
	{ "pp." pages n.dashify tie.or.space.connect }
	{ "p." pages tie.or.space.connect }
%</eng>
%<*ger>
    %  -> Nutze Abk.: S.
	{ "S." pages n.dashify tie.or.space.connect }
	{ "S." pages tie.or.space.connect }
%</ger>
%<*eng|ger>	
      if$
    }
  if$
}

FUNCTION {format.vol.num.pages}
{ volume field.or.null
  number empty$
    'skip$
    { "(" number * ")" * *
      volume empty$
	{ "there's a number but no volume in " cite$ * warning$ }
	'skip$
      if$
    }
  if$
  pages empty$
    'skip$
    { duplicate$ empty$
	{ pop$ format.pages }
	{ ":" * pages n.dashify * }
      if$
    }
  if$
}

FUNCTION {format.chapter.pages}
{ chapter empty$
    'format.pages
    { type empty$
%</eng|ger>
%<*eng>    
	{ "chapter" }
%</eng>
%<*ger>
	{ "Kapitel" }
%</ger>
%<*eng|ger>	
	{ type "l" change.case$ }
      if$
      chapter tie.or.space.connect
      pages empty$
	'skip$
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
    { "" }
    { editor empty$
% no emphasize    
%       { "In: " booktitle emphasize * }
%       { "In: " format.editors * ", " * booktitle emphasize * }
        { "In: " booktitle  * }
        { "In (" format.editors * "): " * booktitle  * }
      if$
    }
  if$
}

FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
  month empty$ year empty$ note empty$
  and and and and and
  key empty$ not and
    { "all relevant fields are empty in " cite$ * warning$ }
    'skip$
  if$
}

FUNCTION {format.thesis.type}
{ type empty$
    'skip$
    { pop$
      type "t" change.case$
    }
  if$
}

FUNCTION {format.tr.number}
{ type empty$
%</eng|ger>
%<*eng>
    { "Technical Report" }
%</eng>
%<*ger>
    { "Bericht" }
%</ger>
%<*eng|ger>    
    'type
  if$
  number empty$
    { "t" change.case$ }
    { number tie.or.space.connect }
  if$
}

FUNCTION {format.article.crossref}
{ key empty$
    { journal empty$
	{ "need key or journal for " cite$ * " to crossref " * crossref *
	  warning$
	  ""
	}
	{ "In {\em " journal * "\/}" * }
      if$
    }
    { "In " key * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.crossref.editor}
{ editor #1 "{vv~}{ll}" format.name$
  editor num.names$ duplicate$
  #2 >
    { pop$ " et~al." * }
    { #2 <
	'skip$
	% change order of names
	{ editor #2 "{vv~}{ll}{, jj}{, f.}" format.name$ "others" =
	    { " et~al." * }
	    % ; between two editors and change order of names
        { "; " * editor #2 "{vv~}{ll}{, jj}{, f.}" format.name$ * }
	  if$
	}
      if$
    }
  if$
}

FUNCTION {format.book.crossref}
{ volume empty$
    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
      "In "
    }
%</eng|ger>
%<*eng>
    { "Volume" volume tie.or.space.connect
      " of " *
    }
%</eng>
%<*ger>
    { "Jgg." volume tie.or.space.connect
      " in " *
    }
%</ger>
%<*eng|ger>    
  if$
  editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ series empty$
	    { "need editor, key, or series for " cite$ * " to crossref " *
	      crossref * warning$
	      "" *
	    }
	    { "{\em " * series * "\/}" * }
	  if$
	}
	{ key * }
      if$
    }
    { format.crossref.editor * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.incoll.inproc.crossref}
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ booktitle empty$
	    { "need editor, key, or booktitle for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    % Add : after In
	    { "In: {\em " booktitle * "\/}" * }
	  if$
	}
	% Add : after In
	{ "In: " key * }
      if$
    }
    % Add : after In and editiors in ()
    { "In: (" format.crossref.editor * ")" * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {article}
{ output.bibitem
  format.authors %"author" output.check %% No dot after authors
  new.block
  format.title "title" output.check
  new.block
  crossref missing$
    { journal % no emphasize 
    "journal" output.check
      format.vol.num.pages output
      format.date "year" output.check
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {book}
{ output.bibitem
  author empty$
    { format.editors "author and editor" output.check }
    { format.authors %output.nonnull %%no dot after authors:
      crossref missing$
	{ "author and editor" editor either.or.check }
	'skip$
      if$
    }
  if$
  new.block
  format.btitle "title" output.check
  crossref missing$
    { format.bvolume output
      new.block
      format.number.series output
      new.sentence
      publisher "publisher" output.check
      address output
    }
    { new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date "year" output.check
  new.block
  note output
  fin.entry
}

FUNCTION {booklet}
{ output.bibitem
  format.authors output
  new.block
  format.title "title" output.check
  howpublished address new.block.checkb
  howpublished output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {inbook}
{ output.bibitem
  author empty$
    { format.editors "author and editor" output.check }
    { format.authors %*output.nonnull %%no dot after authors:
      crossref missing$
	{ "author and editor" editor either.or.check }
	'skip$
      if$
    }
  if$
  new.block
  format.btitle "title" output.check
  new.block
  crossref missing$ %changed whole order of next lines
    { 
      format.in.ed.booktitle "booktitle" output.check %added: mention title of the related book and editors
      format.bvolume output
      new.block
      format.number.series output
      % new.sentence %% no dot after the number
      publisher "publisher" output.check
      address output
    }
    { format.chapter.pages "chapter and pages" output.check
      new.block
      format.book.crossref output.nonnull
    }
  if$
  format.chapter.pages "chapter and pages" output.check
  format.edition output
  format.date "year" output.check
  new.block
  note output
  fin.entry
}

FUNCTION {incollection}
{ output.bibitem
  format.authors %"author" output.check %%no dot after authors:
  new.block
  format.title "title" output.check
  new.block
  crossref missing$
    { format.in.ed.booktitle "booktitle" output.check
      format.bvolume output
      format.number.series output
      format.chapter.pages output
      new.sentence
      publisher "publisher" output.check
      address output
      format.edition output
      format.date "year" output.check
    }
    { format.incoll.inproc.crossref output.nonnull
      format.chapter.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {inproceedings}
{ output.bibitem
  format.authors %"author" output.check %%no dot after authors:
  new.block
  format.title "title" output.check
  new.block
  crossref missing$
    { format.in.ed.booktitle "booktitle" output.check
      new.block      
      format.bvolume output
      format.number.series output
      address empty$
	{ organization publisher new.sentence.checkb
	  organization output
	  publisher output
	}
	{ organization output
          publisher output
          address output.nonnull
        }
      if$
      format.pages output
      format.date "year" output.check
    }
    { format.incoll.inproc.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {conference} { inproceedings }

FUNCTION {manual}
{ output.bibitem
  author empty$
    { organization empty$
	'skip$
	{ organization output.nonnull
	  address output
	}
      if$
    }
    { format.authors output.nonnull }
  if$
  new.block
  format.btitle "title" output.check
  author empty$
    { organization empty$
	{ address new.block.checka
	  address output
	}
	'skip$
      if$
    }
    { organization address new.block.checkb
      organization output
      address output
    }
  if$
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {mastersthesis}
{ output.bibitem
  format.authors %"author" output.check
  new.block
  format.title "title" output.check
  new.block
%</eng|ger>
%<*eng>
  "Master's thesis" format.thesis.type output.nonnull
%</eng>
%<*ger>
  "Masterarbeit" format.thesis.type output.nonnull
%</ger>
%<*eng|ger>  
  school "school" output.check
  address output
  format.date "year" output.check
  new.block
  note output
  fin.entry
}

FUNCTION {misc}
{ output.bibitem
  author empty$
    { ""  }
    { format.authors output.nonnull }
  if$
  %title howpublished new.block.checkb
  format.title output
  howpublished new.block.checka
  howpublished output
  format.date output
  new.block
  note output
  fin.entry
  empty.misc.check
}

FUNCTION {online}
{ output.bibitem
  title howpublished new.block.checkb
  format.title output
  howpublished new.block.checka
  howpublished output
  note output
  fin.entry
  empty.misc.check
}

FUNCTION {phdthesis}
{ output.bibitem
  format.authors %"author" output.check
  new.block
  format.btitle "title" output.check
  new.block
%</eng|ger>
%<*eng>
  "PhD thesis" format.thesis.type output.nonnull
%</eng>
%<*ger>
  "Dissertation" format.thesis.type output.nonnull
%</ger>
%<*eng|ger>  
  school "school" output.check
  address output
  format.date "year" output.check
  new.block
  note output
  fin.entry
}

FUNCTION {proceedings}
{ output.bibitem
  editor empty$
    { organization output }
    { format.editors output.nonnull }
  if$
  new.block
  format.btitle "title" output.check
  format.bvolume output
  format.number.series output
  address empty$
    { editor empty$
	{ publisher new.sentence.checka }
	{ organization publisher new.sentence.checkb
	  organization output
	}
      if$
      publisher output
      format.date "year" output.check
    }
    { address output.nonnull
      format.date "year" output.check
      new.sentence
      editor empty$
	'skip$
	{ organization output }
      if$
      publisher output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {techreport}
{ output.bibitem
  format.authors %"author" output.check
  new.block
  format.title "title" output.check
  new.block
  format.tr.number output.nonnull
  institution "institution" output.check
  address output
  format.date "year" output.check
  new.block
  note output
  fin.entry
}

FUNCTION {unpublished}
{ output.bibitem
  format.authors %"author" output.check
  new.block
  format.title "title" output.check
  new.block
  note "note" output.check
  format.date output
  fin.entry
}

FUNCTION {default.type} { misc }

%</eng|ger>
%<*eng>
MACRO {jan} {"January"}

MACRO {feb} {"February"}

MACRO {mar} {"March"}

MACRO {apr} {"April"}

MACRO {may} {"May"}

MACRO {jun} {"June"}

MACRO {jul} {"July"}

MACRO {aug} {"August"}

MACRO {sep} {"September"}

MACRO {oct} {"October"}

MACRO {nov} {"November"}

MACRO {dec} {"December"}
%</eng>
%<*ger>
MACRO {jan} {"Januar"}

MACRO {feb} {"Februar"}

MACRO {mar} {"März"}

MACRO {apr} {"April"}

MACRO {may} {"Mai"}

MACRO {jun} {"Juni"}

MACRO {jul} {"Juli"}

MACRO {aug} {"August"}

MACRO {sep} {"September"}

MACRO {oct} {"Oktober"}

MACRO {nov} {"November"}

MACRO {dec} {"Dezember"}
%</ger>
%<*eng|ger>

MACRO {acmcs} {"ACM Computing Surveys"}

MACRO {acta} {"Acta Informatica"}

MACRO {cacm} {"Communications of the ACM"}

MACRO {ibmjrd} {"IBM Journal of Research and Development"}

MACRO {ibmsj} {"IBM Systems Journal"}

MACRO {ieeese} {"IEEE Transactions on Software Engineering"}

MACRO {ieeetc} {"IEEE Transactions on Computers"}

MACRO {ieeetcad}
 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}

MACRO {ipl} {"Information Processing Letters"}

MACRO {jacm} {"Journal of the ACM"}

MACRO {jcss} {"Journal of Computer and System Sciences"}

MACRO {scp} {"Science of Computer Programming"}

MACRO {sicomp} {"SIAM Journal on Computing"}

MACRO {tocs} {"ACM Transactions on Computer Systems"}

MACRO {tods} {"ACM Transactions on Database Systems"}

MACRO {tog} {"ACM Transactions on Graphics"}

MACRO {toms} {"ACM Transactions on Mathematical Software"}

MACRO {toois} {"ACM Transactions on Office Information Systems"}

MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}

MACRO {tcs} {"Theoretical Computer Science"}

READ

FUNCTION {sortify}
{ purify$
  "l" change.case$
}

INTEGERS { len }

FUNCTION {chop.word}
{ 's :=
  'len :=
  s #1 len substring$ =
    { s len #1 + global.max$ substring$ }
    's
  if$
}

INTEGERS { et.al.char.used }

FUNCTION {initialize.et.al.char.used}
{ #0 'et.al.char.used :=
}

EXECUTE {initialize.et.al.char.used}

FUNCTION {format.lab.names}
{ 's :=
  s num.names$ 'numnames :=
  numnames #1 >
    { numnames #3 > %create short entry for 3 authors max
        { #1 'namesleft := } %if more than 3 authors take only first one
        { numnames 'namesleft := }
      if$
      #1 'nameptr :=
      ""
        { namesleft #0 > }
        { nameptr numnames =
            { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ 
            "others" =
                { pop$ s #1 "{ll}" format.name$ #2 text.prefix$ %% second sign of first author if there are others
                }
                { s nameptr "{v{}}{l{}}" format.name$ * } %%formats last author
              if$
            }
            { s nameptr "{v{}}{l{}}" format.name$ * } %%formats first, and if three, also the second author
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
      numnames #3 > 
        { pop$ s #1 "{ll}" format.name$ #2 text.prefix$ } % if more than 3 authors take second letter of first name
        'skip$
      if$
    }
    { s #1 "{v{}}{l{}}" format.name$
      duplicate$ text.length$ #2 <
        { pop$ s #1 "{ll}" format.name$ #2 text.prefix$} %get rid of the rest of the name (only first two letters are needed for one author)
        'skip$
      if$
    }
  if$
}

FUNCTION {author.key.label} %% sets the author abbreviation in []
{ author empty$
    { key empty$
	{ title #1 #2 substring$ } % Use First two letters of title if there is no author
	{ key #3 text.prefix$ }
      if$
    }
    { author format.lab.names }
  if$
}

FUNCTION {author.editor.key.label}
{ author empty$
    { editor empty$
	{ key empty$
	    { title #1 #2 substring$ }% Use First two letters of title if there is no editor
	    { key #3 text.prefix$ }
	  if$
	}
	{ editor format.lab.names }
      if$
    }
    { author format.lab.names }
  if$
}

FUNCTION {author.key.organization.label}
{ author empty$
    { key empty$
	{ organization empty$
	    { cite$ #1 #3 substring$ }
	    { "The " #4 organization chop.word #3 text.prefix$ }
	  if$
	}
	{ key #3 text.prefix$ }
      if$
    }
    { author format.lab.names }
  if$
}

FUNCTION {editor.key.organization.label}
{ editor empty$
    { key empty$
	{ organization empty$
	    { cite$ #1 #3 substring$ }
	    { "The " #4 organization chop.word #3 text.prefix$ }
	  if$
	}
	{ key #3 text.prefix$ }
      if$
    }
    { editor format.lab.names }
  if$
}

FUNCTION {calc.label}
{ type$ "book" =
  type$ "inbook" =
  or
    'author.editor.key.label
    { type$ "proceedings" =
	'editor.key.organization.label
	{ type$ "manual" =
	    'author.key.organization.label
	    'author.key.label
	  if$
	}
      if$
    }
  if$
  duplicate$
  year field.or.null purify$ #-1 #2 substring$
  *
  'label :=
  year field.or.null purify$ #-1 #4 substring$
  *
  sortify 'sort.label :=
}

FUNCTION {sort.format.names}
{ 's :=
  #1 'nameptr :=
  ""
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { nameptr #1 >
	{ "   " * }
	'skip$
      if$
      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
      nameptr numnames = t "others" = and
	{ "et al" * }
	{ t sortify * }
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {sort.format.title}
{ 't :=
  "A " #2
    "An " #3
      "The " #4 t chop.word
    chop.word
  chop.word
  sortify
  #1 global.max$ substring$
}

FUNCTION {author.sort}
{ author empty$
    { key empty$
	{ "to sort, need author or key in " cite$ * warning$
	  ""
	}
	{ key sortify }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {author.editor.sort}
{ author empty$
   { editor empty$
	{ key empty$
	    { "to sort, need author, editor, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ editor sort.format.names }
      if$
   }
   { author sort.format.names }
  if$
}

FUNCTION {author.organization.sort}
{ author empty$
    { organization empty$
	{ key empty$
	    { "to sort, need author, organization, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ "The " #4 organization chop.word sortify }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {editor.organization.sort}
{ editor empty$
    { organization empty$
	{ key empty$
	    { "to sort, need editor, organization, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ "The " #4 organization chop.word sortify }
      if$
    }
    { editor sort.format.names }
  if$
}

FUNCTION {presort}
{ calc.label
  sort.label
  "    "
  *
  type$ "book" =
  type$ "inbook" =
  or
    'author.editor.sort
    { type$ "proceedings" =
	'editor.organization.sort
	{ type$ "manual" =
	    'author.organization.sort
	    'author.sort
	  if$
	}
      if$
    }
  if$
  *
  "    "
  *
  year field.or.null sortify
  *
  "    "
  *
  title field.or.null
  sort.format.title
  *
  #1 entry.max$ substring$
  'sort.key$ :=
}

ITERATE {presort}

SORT

STRINGS { longest.label last.sort.label next.extra }

INTEGERS { longest.label.width last.extra.num }

FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
  #0 int.to.chr$ 'last.sort.label :=
  "" 'next.extra :=
  #0 'longest.label.width :=
  #0 'last.extra.num :=
}

FUNCTION {forward.pass}
{ last.sort.label sort.label =
    { last.extra.num #1 + 'last.extra.num :=
      last.extra.num int.to.chr$ 'extra.label :=
    }
    { "a" chr.to.int$ 'last.extra.num :=
      "" 'extra.label :=
      sort.label 'last.sort.label :=
    }
  if$
}

FUNCTION {reverse.pass}
{ next.extra "b" =
    { "a" 'extra.label := }
    'skip$
  if$
  label extra.label * 'label :=
  label width$ longest.label.width >
    { label 'longest.label :=
      label width$ 'longest.label.width :=
    }
    'skip$
  if$
  extra.label 'next.extra :=
}

EXECUTE {initialize.longest.label}

ITERATE {forward.pass}

REVERSE {reverse.pass}

FUNCTION {begin.bib}
{ et.al.char.used
% to make it compatible with singlepass, we use \def
%    { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ }
    { "\gdef\etalchar#1{$^{#1}$}" write$ newline$ } 
    'skip$
  if$
  preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
}

EXECUTE {begin.bib}

EXECUTE {init.state.consts}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{thebibliography}" write$ newline$
}

EXECUTE {end.bib}
%</eng|ger>
%</bibtex>
%<*template>
%%% Um einen Artikel auf deutsch zu schreiben, genügt es die Klasse ohne 
%%% Parameter zu laden.
\documentclass[]{lni}
%%% To write an article in English, please use the option ``english'' in order 
%%% to get the correct hyphenation patterns and terms.
%%% \documentclass[english]{class}
%%
\begin{document}
%%% Mehrere Autoren werden durch \and voneinander getrennt.
%%% Die Fußnote enthält die Adresse sowie eine E-Mail-Adresse.
%%% Das optionale Argument (sofern angegeben) wird für die Kopfzeile verwendet.
\title[Ein Kurztitel]{Ein sehr langer Titel über mehrere Zeilen mit sehr vielen 
Worten und noch mehr Buchstaben}
%%%\subtitle{Untertitel / Subtitle} % if needed
\author[Vorname1 Nachname1 \and Firstname2 Lastname2]
{Vorname1 Nachname1\footnote{Universität, Abteilung, Straße, Postleitzahl Ort, 
Land \email{emailaddress@author1}} \and
Firstname2 Lastname2\footnote{University, Department, Address, Country 
\email{emailaddress@author2}}}
\startpage{11} % Beginn der Seitenzählung für diesen Beitrag / Start page 
%numbering at this number
\editor{Herausgeber et al.} % Names of Editors
\booktitle{Name-der-Konferenz} % Name of book title
\year{2017}
%%%\lnidoi{18.18420/provided-by-editor-02} % if known
\maketitle

\begin{abstract}
This is a brief overview of the paper, which should be 70 to 150 words long and 
include the most relevant points. This has to be a single paragraph.
\end{abstract}
\begin{keywords}
Schlagwort1 \and Schlagwort2 %Keyword1 \and Keyword2
\end{keywords}
%%% Beginn des Artikeltexts
\section{Überschrift/Heading}

%%% Angabe der .bib-Datei (ohne Endung) / State .bib file (for BibTeX usage)
\bibliography{mybibfile} %\printbibliography if you use biblatex/Biber
\end{document}
%</template>
%<*exampledebib>
% Encoding: UTF-8

@InProceedings{ABC01,
  author   = {N. Abraham and U. Bibel and P. Corleone},
  title    = {Formatting Contributions for Proceedings},
  pages    = {46-53},
  crossref = {Gl01},
}

@InBook{Az09,
  pages    = {135-162},
  title    = {Die Fußnote in LNI-Bänden},
  author   = {Azubi, L. and others},
  crossref = {Gl09},
}

@Book{AB00,
  title     = {Formatierungsrichtlinien für Tagungsbände},
  publisher = {Format-Verlag},
  year      = {2000},
  author    = {K. Abel and U. Bibel},
  address   = {Bonn},
}

@Book{Ez10,
  title     = {The Magic Format -- Your Way to Pretty Books},
  publisher = {Noah \& Sons},
  year      = {2010},
  author    = {O. Ezgarani},
}

@Article{Gl06,
  author  = {H. I. Glück},
  title   = {Formatierung leicht gemacht},
  journal = {Formatierungsjournal},
  volume  = {11},
  number  = {09},
  year    = {2009},
  pages   = {23-27},
}

@Book{Wa14,
  title     = {Essenzen der Informatik},
  publisher = {Verlag Formvoll},
  year      = {2014},
  author    = {K. Wasser and H. Feuer and R. Erde and H. Licht},
}

@Book{Wa14b,
  title     = {Ganz neue Essenzen der Informatik im selben Jahr},
  publisher = {Format-Verlag},
  year      = {2014},
  author    = {K. Wasser and H. Feuer and R. Erde and H. Licht},
}

@Proceedings{Gl01,
  title     = {Proc. 7th Int. Conf. on Formatting of Workshop-Proceedings},
  year      = {2001},
  editor    = {Glück, H. I.},
  address   = {San Francisco},
  publisher = {Noah \& Sons},
  booktitle = {Proc. 7th Int. Conf. on Formatting of Workshop-Proceedings},
}

@Book{Gl09,
  title     = {Formatierung 2009},
  publisher = {Format-Verlag},
  year      = {2009},
  editor    = {H. I. Glück},
  number    = {999},
  series    = {LNI},
  address   = {Bonn},
  booktitle = {Formatierung 2009},
}

@Misc{XX14,
  title        = {Anteil an Frauen in der Informatik},
  label        = {An},
  howpublished = {Statistics Worldwide},
  year         = {2014},
}

@Online{GI14,
  author = {{Gesellschaft für Informatik e.\,V.}},
  label  = {GI},
  year  = {2014},
  url  =  {http://www.gi-ev.de},
  urldate = {2014-12-24}
}

@Comment{jabref-meta: databaseType:biblatex;}
%</exampledebib>
%<*exampledetex>
%% Dies gibt Warnungen aus, sollten veraltete LaTeX-Befehle verwendet werden
\RequirePackage[l2tabu, orthodox]{nag}

\documentclass[utf8,biblatex]{lni}
\bibliography{lni-paper-example-de}

%% Schöne Tabellen mittels \toprule, \midrule, \bottomrule
\usepackage{booktabs}

%% Zu Demonstrationszwecken
\usepackage[math]{blindtext}
\usepackage{mwe}

%% BibLaTeX-Sonderkonfiguration,
%% falls man schnell eine existierende Bibliographie wiederverwenden will, aber nicht die .bib-Datei händisch anpassen möchte.
%% Bitte \iffalse und \fi entfernen, dann ist diese Konfiguration aktiviert.

\iffalse
\AtEveryBibitem{%
  \ifentrytype{article}{%
  }{%
    \clearfield{doi}%
    \clearfield{issn}%
    \clearfield{url}%
    \clearfield{urldate}%
  }%
  \ifentrytype{inproceedings}{%
  }{%
    \clearfield{doi}%
    \clearfield{issn}%
    \clearfield{url}%
    \clearfield{urldate}%
  }%
}
\fi

\begin{document}
%%% Mehrere Autoren werden durch \and voneinander getrennt.
%%% Die Fußnote enthält die Adresse sowie eine E-Mail-Adresse.
%%% Das optionale Argument (sofern angegeben) wird für die Kopfzeile verwendet.
\title[Ein Kurztitel]{Ein sehr langer Titel über mehrere Zeilen mit sehr vielen Worten und noch mehr Buchstaben}
%%%\subtitle{Untertitel / Subtitle} % falls benötigt
\author[Vorname1 Nachname1 \and Vorname2 Nachname2]
{Vorname1 Nachname1\footnote{Universität, Abteilung, Straße, Postleitzahl Ort, Land \email{emailaddress@author1}} \and
 Vorname2 Nachname2\footnote{University, Department, Address, Country \email{emailaddress@author2}}}
\startpage{11} % Beginn der Seitenzählung für diesen Beitrag
\editor{Herausgeber et al.}    % Namen der Herausgeber
\booktitle{Name-der-Konferenz} % Name des Tagungsband
\year{2017}
%%%\lnidoi{18.18420/provided-by-editor-02} % Falls bekannt
\maketitle

\begin{abstract}
Die \LaTeX-Klasse \texttt{lni} setzt die Layout-Vorgaben für Beiträge in LNI Konferenzbänden um.
Dieses Dokument beschreibt ihre Verwendung und ist ein Beispiel für die entsprechende Darstellung.
Der Abstract ist ein kurzer Überblick über die Arbeit der zwischen 70 und 150 Wörtern lang sein und das Wichtigste enthalten sollte.
Die Formatierung erfolgt automatisch innerhalb des abstract-Bereichs.
\end{abstract}

\begin{keywords}
LNI Guidelines \and \LaTeX Vorlage
\end{keywords}

\section{Verwendung}
Die GI gibt unter \url{http://www.gi-ev.de/LNI} Vorgaben für die Formatierung von Dokumenten in der LNI Reihe.
Für \LaTeX-Dokumente werden diese durch die Dokumentenklasse \texttt{lni} realisiert.

Dieses Dokument basiert auf der offiziellen Dokumentation, simplifiziert und setzt grundlegendes LaTeX-Wissen voraus.
Es werden generische Platzhalter an die entsprechenden Stellen (wie beispielsweise die Authoren-Angaben) gesetzt und nicht weiter an anderer Stelle dokumentiert.

Dieses Template ist wie folgt gegliedert:
\Cref{sec:demos} zeigt Demonstrationen der LNI-Verlage.
\Cref{sec:lniconformance} zeigt die Einhaltung der Richtlinien durch einfachen Text.

\section{Demonstrationen}
\label{sec:demos}
Das Symbol für Potenzmengen ($\powerset$) wird korrekt angezeigt.
Es ist kein Weierstraß-p ($\wp$) mehr.

Spitze Klammen können direkt eingegeben werden: <test />

Hier eine kleine Demonstration von \href{https://www.ctan.org/pkg/microtype}{microtype}:
\blindtext

\section{Demonstration der Einhaltung der Richtlinien}
\label{sec:lniconformance}

\subsection{Literaturverzeichnis}
Der letzte Abschnitt zeigt ein beispielhaftes Literaturverzeichnis für Bücher mit einem Autor \cite{Ez10} und zwei AutorInnen \cite{AB00}, einem Beitrag in Proceedings mit drei AutorInnen \cite{ABC01}, einem Beitrag in einem LNI Band mit mehr als drei AutorInnen \cite{Az09}, zwei Bücher mit den jeweils selben vier AutorInnen im selben Erscheinungsjahr \cite{Wa14} und \cite{Wa14b}, ein Journal \cite{Gl06}, eine Website \cite{GI14} bzw.\ anderweitige Literatur ohne konkrete AutorInnenschaft \cite{XX14}.
Es wird biblatex verwendet, da es UTF8 sauber unterstützt und \href{https://github.com/gi-ev/LNI/issues/5}{im Gegensatz zu lni.bst} keine Fehler beim bibtexen auftreten.

Referenzen sollten nicht direkt als Subjekt eingebunden werden, sondern immer nur durch Authorenanganben:
Beispiel: \Citet{AB00} geben ein Beispiel, aber auch \citet{Az09}.
Hinweis: Großes C bei \texttt{Citet}, wenn es am Satzanfang steht. Dies ist analog zu \texttt{Cref}.

Formatierung und Abkürzungen werden für die Referenzen \texttt{book}, \texttt{inbook}, \texttt{proceedings}, \texttt{inproceedings}, \texttt{article}, \texttt{online} und \texttt{misc} automatisch vorgenommen.
Mögliche Felder für Referenzen können der Beispieldatei \texttt{lni-paper-example-de.bib} entnommen werden.
Andere Referenzen sowie Felder müssen allenfalls nachträglich angepasst werden.

\subsection{Abbildungen}
\Cref{fig:demo} zeigt eine Abbildung.

\begin{figure}
  \centering
  \includegraphics[width=.8\textwidth]{example-image}
  \caption{Demographik}
  \label{fig:demo}
\end{figure}

\subsection{Tabellen}
\Cref{tab:demo} zeigt eine Tabelle.

\begin{table}
\centering
\begin{tabular}{lll}
\toprule
Überschriftsebenen & Beispiel & Schriftgröße und -art \\
\midrule
Titel (linksbündig) & Der Titel \ldots & 14 pt, Fett\\
Überschrift 1 & 1 Einleitung & 12 pt, Fett\\
Überschrift 2 & 2.1 Titel & 10 pt, Fett\\
\bottomrule
\end{tabular}
\caption{Die Überschriftsarten}
\label{tab:demo}
\end{table}

\subsection{Programmcode}
Die LNI-Formatvorlage verlangt die Einrückung von Listings vom linken Rand.
In der \texttt{lni}-Dokumentenklasse ist dies für die \texttt{verbatim}-Umgebung realisiert.

\begin{verbatim}
public class Hello {
    public static void main (String[] args) {
        System.out.println("Hello World!");
    }
}
\end{verbatim}

Alternativ kann auch die \texttt{lstlisting}-Umgebung verwendet werden.

\Cref{L1} zeigt uns ein Beispiel, das mit Hilfe der \texttt{lstlisting}-Umgebung realisiert ist.

\begin{lstlisting}[caption={Beschreibung}, label=L1]
public class Hello {
    public static void main (String[] args) {
        System.out.println("Hello World!");
    }
}
\end{lstlisting}

\subsection{Formeln und Gleichungen}

Die korrekte Einrückung und Nummerierung für Formeln ist bei den Umgebungen \texttt{equation} und \texttt{eqnarray} gewährleistet.

\begin{equation}
  1=4-3
\end{equation}
und
\begin{eqnarray}
  2=7-5\\
  3=2-1
\end{eqnarray}

%% \bibliography{lni-paper-example-de.tex} ist hier nicht erlaubt: biblatex erwartet dies bei der Preambel
%% Starten Sie "biber paper", um eine Biliographie zu erzeugen.
\printbibliography

\end{document}
%</exampledetex>
%    \end{macrocode}
%\fi 
