% \iffalse meta-comment %<*internal> \iffalse % %<*internal> \fi \def\nameofplainTeX{plain} \ifx\fmtname\nameofplainTeX\else \expandafter\begingroup \fi % %<*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. %% %%*************************************************** % Changelog: % % 1.0 (07.04.17), Martin Sievers % - Revised version % % (17.12.14), Judith Michael, Alpen-Adria-Universität Klagenfurt, Austria % Changes: % - Last Name before the prename % - ; between Autors % - : before title % - Lable: Abbreviation of name of first author instead of + (former: A+09 or WFEL14, now Az09 and Wa14) % - Lable: Use first 2 letters of title if there is no author % - add : after In (functions inproceedings and inbook) % - no emphasize of titles % - editors in bracelets () % - correct order of reference infos % - correct signs (.,:()) between reference infos % - Add second prename % - change order of series (not: "number" in "series", now "series" "number" % %%*************************************************** % \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. %% %%*************************************************** % Changelog: % % 1.0 (07.04.17), Martin Sievers % - Revised version % % (17.12.14), Judith Michael, Alpen-Adria-Universität Klagenfurt, Austria % Changes: % - Last Name before the prename % - ; between Autors % - : before title % - Lable: Abbreviation of name of first author instead of + (former: A+09 or WFEL14, now Az09 and Wa14) % - Lable: Use first 2 letters of title if there is no author % - add : after In (functions inproceedings and inbook) % - no emphasize of titles % - editors in bracelets () % - correct order of reference infos % - correct signs (.,:()) between reference infos % - Add second prename % - change order of series (not: "number" in "series", now "series" "number" % %%*************************************************** % \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 \postamble Copyright (C) 2016-2017 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 and the derived files lni.pdf lni.cls lni-author-template.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}} } % %\endbatchfile %<*internal> \usedir{source/latex/lni} \generate{ \usepreamble\classpre \file{\jobname.ins}{\from{\jobname.dtx}{install}} } \nopreamble\nopostamble \usedir{doc/latex/lni} \generate{ %%%\file{README.md}{\from{\jobname.dtx}{readme}} \file{lni-author-template.tex}{\from{\jobname.dtx}{template}} } \ifx\fmtname\nameofplainTeX \expandafter\endbatchfile \else \expandafter\endgroup \fi % % \fi % % \iffalse %<*driver> \ProvidesFile{lni.dtx} % %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesClass{lni} %<*class> [2017/04/07 v1.0 Official class for submissions to the ``Lecture Notes in Informatics''] % %<*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} \newcommand*{\MiKTeX}{\textsf{MiK\TeX{}}} \usepackage[% pdftitle={lni: Official LaTeX class for submissions to the ``Lecture Notes in Informatics'', published by the GI}, pdfauthor={Martin Sievers}, urlcolor=blue,% linktocpage,% 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,email,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} % % \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} % % \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\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 \LNI{} 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}{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 you should copy all files (cls, tex, pdf and bst) to % your local TEXMF tree and 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 got to \href{www.ctan.org}{CTAN} % to download missing packages. % % \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. % % \DescribeMacro{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}). % % \DescribeMacro{utf8}\DescribeMacro{latin1}\DescribeMacro{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. % % \DescribeMacro{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}. Please see as well % \cref{sec:bibliography}. % % \DescribeMacro{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. % % \DescribeMacro{nohyperref}\pkg{hyperref} is used for colored hyperlink within the % articles. If you consider problems or just do not want that feature, you can % disable it by using the option \opt{nohyperref}. % % \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 = en_GB % \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}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} % % \DescribeMacro{\author}\DescribeMacro{\email}\DescribeMacro{\footnote}% % 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. % % Finally \cs{maketitle} will output the formatted title page. % % \subsection{Abstract and keywords} % Each article should start with a short 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 % \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} % \authors[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 \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$). % % \subsection{Bibliography}\label{sec:bibliography} % 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} % % \newpage % \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@namepart'.},\\ % 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/sieversMartin/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} \ExecuteOptions{utf8} \DeclareOption*{\ClassWarning{Option `\CurrentOption` is not supported!}} \ProcessOptions\relax \RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} \LoadClass[10pt,twoside,a4paper,fleqn]{article} \RequirePackage{cmap} \RequirePackage{inputenc} \RequirePackage[T1]{fontenc} \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} \RequirePackage{newtxtext} \RequirePackage{newtxmath} \RequirePackage[zerostyle=b,straightquotes,scaled=.9]{newtxtt} \RequirePackage[% final,% tracking=smallcaps,% expansion=alltext,% protrusion=alltext-nott]{microtype}% \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} % Satzspiegel % \begin{macrocode} \RequirePackage[ a4paper, total={12.6cm,19.2cm}, includehead, headheight=20.39pt, headsep=.31cm, centering] {geometry} % \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. % 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}}% \fi% % \end{macrocode} % \begin{macrocode} \RequirePackage{graphicx} \RequirePackage{grffile} \RequirePackage{fancyhdr} \RequirePackage{listings} % \end{macrocode} % \begin{macrocode} % Ragged bottom -- verhindert die Ausdehnung der Seite = Veränderung der Abstände \def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil \global\let\@textbottom\relax}} % Seitenzahlen -- Größe der Box \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{macrocode} \renewcommand{\title}{\@dblarg\@@title} \def\@@title[#1]#2{\gdef\@shorttitle{#1}\gdef\@title{#2}} % \end{macrocode} % \begin{macrocode} \renewcommand{\author}{\@dblarg\@@author} \def\@@author[#1]#2{\gdef\@shortauthor{{\let\footnote\@gobble% \def\and{\unskip,\ }#1}}\gdef\@author{#2}} % \end{macrocode} % \begin{macrocode} \newcommand{\authorrunning}[1]{\fancyhead[LE]{\hspace{0.05cm}\small\thepage\hspace{5pt}#1}} % \end{macrocode} % \begin{macrocode} \newcommand*{\email}[1]{{\urlstyle{same}\protect\url{#1}}} % \end{macrocode} % \begin{macrocode} % Title: Kopie aus article.cls mit anderem \thispagestyle \renewcommand\maketitle{\par% % Keine Vertikale Einrückung über dem Titel auf der Titelseite %\changepage{0mm}{0mm}{0mm}{0mm}{0mm}{0.56cm}{0mm}{0mm}{0mm} \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 {\fontsize{14}{17}\fontseries{b}\selectfont \@title \par}% \vskip 19pt% Abstand nach dem Titel {\fontsize{10}{12}\selectfont \lineskip .5em% \@author \par}% \vskip 28pt% Abstand vor dem Abstract \end{center}% \par } % \end{macrocode} % \begin{macrocode} % Abstract \renewenvironment*{abstract}{% \renewcommand{\abstractname}{Abstract} \fontsize{9}{10}\selectfont \noindent\ignorespaces{\bfseries \abstractname:\ }% }{\endquotation} % \end{macrocode} % \begin{macrocode} % Keywords \newif\ifkeywords \newenvironment{keywords}{\global\keywordstrue\fontsize{9}{10}\selectfont \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 to an environment}\keywordsfalse\fi}{}{} % \end{macrocode} % 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@}{\fontsize{12}{14}\fontseries{b}\selectfont}} \renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}% {-16\p@ \@plus -4\p@ \@minus -4\p@}{8\p@ \@plus 4\p@ \@minus 4\p@}{\fontsize{10}{12}\fontseries{b}\selectfont}} % \end{macrocode} % Bildunterschriften % \begin{macrocode} \setlength{\abovecaptionskip}{4pt}%Abstand vor der Bildunterschrift \setlength{\belowcaptionskip}{0pt}%Abstand nach der Bildunterschrift \setlength{\intextsep}{6pt}%Abstand nach der Grafik \long\def\@makecaption#1#2{% \vskip\abovecaptionskip {\small \sbox\@tempboxa{#1: #2}% \ifdim \wd\@tempboxa >\hsize #1: #2\par \else \global \@minipagefalse \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% \fi} \vskip\belowcaptionskip} % \end{macrocode} % Abbildungen % \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} % Tabellen % \begin{macrocode} \def\fps@table{htbp} \def\fnum@table{\tablename~\thetable} \renewcommand{\arraystretch}{1.1}%Abstand zu Linien in Tabelle \renewenvironment{table} {\setlength\abovecaptionskip{6\p@}% \setlength\belowcaptionskip{0\p@}% \@float{table}} {\end@float} \renewenvironment{table*} {\setlength\abovecaptionskip{6\p@}% \setlength\belowcaptionskip{0\p@}% \@dblfloat{table}} {\end@dblfloat} % \end{macrocode} % Gleichungen mit richtiger Einrückung, 0.5cm % fleqn-Option oben % \begin{macrocode} \setlength{\mathindent}{0.5cm} % \end{macrocode} % listings mit richtiger einrückung, 0.5 cm % \begin{macrocode} \RequirePackage{verbatim} \def\verbatim@processline{\hskip0.5cm\the\verbatim@line\par} % \end{macrocode} % \begin{macrocode} % Fussnoten mit 5cm Linie und richtiger Größe \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} % Absatzeinzüge und Abstände \setlength{\parindent}{0pt} \setlength{\parskip}{8pt} % \end{macrocode} % Aufzählungen mit Punkt % \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} % Nummierierte Aufzählung % \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{macrocode} \newcommand{\andname}{} \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{macrocode} \newcommand*{\startpage}[1]{\setcounter{page}{#1}} % \end{macrocode} % \begin{macrocode} \newcommand*{\@booktitle}{} \newcommand*{\booktitle}[1]{\renewcommand{\@booktitle}{#1}} % \end{macrocode} % \begin{macrocode} \newcommand*{\@editor}{} \newcommand*{\editor}[1]{\renewcommand{\@editor}{#1}} % \end{macrocode} % \begin{macrocode} \AtBeginDocument{% \let\@rigyear\year \newcommand*{\@year}{\the\@rigyear} \renewcommand*{\year}[1]{% \renewcommand{\@year}{#1}% }% }% % \end{macrocode} % Kopfzeileneinstellungen % \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 } % \end{macrocode} % \begin{macrocode} \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} \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{listing}{\lstlistingname}{\lstlistingname} \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% % \end{macrocode} % bibliography % \begin{macrocode} \renewenvironment{thebibliography}[1] {\iflnienglish\selectlanguage{english}\else\selectlanguage{ngerman}\fi \section*{\refname}% \bgroup\fontsize{9}{10}\selectfont \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 % Abstand nach Satzende \widowpenalty=10000 % Vermeidet "widows & orphans" \clubpenalty=10000 % \end{macrocode} % \begin{macrocode} % % \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> { ", eds" * } { ", ed." * } % %<*ger> { ", Hrsg." * } { ", Hrsg." * } % %<*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> { "volume" volume tie.or.space.connect % %<*ger> { "Jgg." volume tie.or.space.connect % %<*eng|ger> series empty$ 'skip$ % %<*eng> { " of " * series % no emphasize % %<*ger> { " in " * series % no emphasize % %<*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> { edition "l" change.case$ " edition" * } { edition "t" change.case$ " edition" * } % %<*ger> { edition "l" change.case$ ".~Auflage" * } { edition "t" change.case$ ".~Auflage" * } % %<*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> % -> Use abbreviation: pp. for pages, p. for page { "pp." pages n.dashify tie.or.space.connect } { "p." pages tie.or.space.connect } % %<*ger> % -> Nutze Abk.: S. { "S." pages n.dashify tie.or.space.connect } { "S." pages tie.or.space.connect } % %<*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> { "chapter" } % %<*ger> { "Kapitel" } % %<*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> { "Technical Report" } % %<*ger> { "Bericht" } % %<*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> { "Volume" volume tie.or.space.connect " of " * } % %<*ger> { "Jgg." volume tie.or.space.connect " in " * } % %<*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> "Master's thesis" format.thesis.type output.nonnull % %<*ger> "Masterarbeit" format.thesis.type output.nonnull % %<*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> "PhD thesis" format.thesis.type output.nonnull % %<*ger> "Dissertation" format.thesis.type output.nonnull % %<*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> 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"} % %<*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"} % %<*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} % % %<*template> %% !TeX encoding = UTF-8 %% !TeX program = pdflatex %% !BIB program = bibtex %% %%% 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. \author[Vorname1 Name1\and Vorname2 Name2] {Vorname1 Nachname1\footnote{Einrichtung/Universität, Abteilung, Anschrift, Postleitzahl Ort, \email{emailadresse@author1}}\and Vorname2 Nachname2\footnote{Einrichtung/Universität, Abteilung, Anschrift, Postleitzahl Ort, \email{emailadresse@author2}} und weitere Autorinnen und Autoren in der gleichen Notation} % \title[Kurztitel (falls nötig)]{Titel} % \startpage{11}% Beginn der Seitenzählung für diesen Beitrag \editor{Herausgeber et al.} \booktitle{Name-der-Konferenz} \year{2017} \maketitle \begin{abstract} Hier kommt die Zusammenfassung hin Add your abstract here \end{abstract} \begin{keywords} Hier kommen die Keywords hin Add your keywords here \end{keywords} %%% Beginn des Artikeltexts \section{Überschrift} %%% Angabe der .bib-Datei (ohne Endung) \bibliography{mybibfile} \end{document} % % \end{macrocode} %\fi