From 6d52d1e7b217b30b19c36b7c16b70daf9cacb71d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 10 Apr 2017 01:15:24 +0000 Subject: new lni (10Apr17) git-svn-id: svn://tug.org/texlive/trunk@43730 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/bibtex/bst/lni/lni.bst | 1301 ++++++++++ Master/texmf-dist/bibtex/bst/lni/lnig.bst | 1301 ++++++++++ Master/texmf-dist/doc/latex/lni/README.md | 32 + .../doc/latex/lni/lni-author-template.tex | 40 + .../texmf-dist/doc/latex/lni/lni-instructions.pdf | 1 + Master/texmf-dist/doc/latex/lni/lni.pdf | Bin 0 -> 352123 bytes Master/texmf-dist/source/latex/lni/lni.dtx | 2580 ++++++++++++++++++++ Master/texmf-dist/source/latex/lni/lni.ins | 120 + Master/texmf-dist/tex/latex/lni/lni.cls | 423 ++++ Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/tlpsrc/collection-publishers.tlpsrc | 1 + Master/tlpkg/tlpsrc/lni.tlpsrc | 0 12 files changed, 5800 insertions(+), 1 deletion(-) create mode 100755 Master/texmf-dist/bibtex/bst/lni/lni.bst create mode 100755 Master/texmf-dist/bibtex/bst/lni/lnig.bst create mode 100755 Master/texmf-dist/doc/latex/lni/README.md create mode 100755 Master/texmf-dist/doc/latex/lni/lni-author-template.tex create mode 120000 Master/texmf-dist/doc/latex/lni/lni-instructions.pdf create mode 100755 Master/texmf-dist/doc/latex/lni/lni.pdf create mode 100755 Master/texmf-dist/source/latex/lni/lni.dtx create mode 100755 Master/texmf-dist/source/latex/lni/lni.ins create mode 100755 Master/texmf-dist/tex/latex/lni/lni.cls create mode 100755 Master/tlpkg/tlpsrc/lni.tlpsrc diff --git a/Master/texmf-dist/bibtex/bst/lni/lni.bst b/Master/texmf-dist/bibtex/bst/lni/lni.bst new file mode 100755 index 00000000000..7434b05a524 --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/lni/lni.bst @@ -0,0 +1,1301 @@ +%% +%% This is file `lni.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% lni.dtx (with options: `bibtex,eng') +%% +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 + := + nameptr #1 > + { namesleft #1 > + { "; " * t * } + { namesleft #2 > + { ";" * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { "; " * 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 > +{ ", eds" * } +{ ", ed." * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + '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$ + { "" } + { "volume" volume tie.or.space.connect + series empty$ +'skip$ +{ " of " * series % no emphasize +* } + 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 = +{ edition "l" change.case$ " edition" * } +{ edition "t" change.case$ " edition" * } + 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 + % -> Use abbreviation: pp. for pages, p. for page +{ "pp." pages n.dashify tie.or.space.connect } +{ "p." pages tie.or.space.connect } + 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$ +{ "chapter" } +{ 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$ + { "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$ + { "Technical Report" } + '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$ +{ 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 " + } + { "Volume" volume tie.or.space.connect + " of " * + } + 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$ +} +{ "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 + "Master's thesis" format.thesis.type output.nonnull + 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 + "PhD thesis" format.thesis.type output.nonnull + 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 } + +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"} + +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 + { "\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} +%% +%% 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 +%% +%% End of file `lni.bst'. diff --git a/Master/texmf-dist/bibtex/bst/lni/lnig.bst b/Master/texmf-dist/bibtex/bst/lni/lnig.bst new file mode 100755 index 00000000000..1859cfc8c0e --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/lni/lnig.bst @@ -0,0 +1,1301 @@ +%% +%% This is file `lnig.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% lni.dtx (with options: `bibtex,ger') +%% +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 + := + nameptr #1 > + { namesleft #1 > + { "; " * t * } + { namesleft #2 > + { ";" * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { "; " * 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 > +{ ", Hrsg." * } +{ ", Hrsg." * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + '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$ + { "" } + { "Jgg." volume tie.or.space.connect + series empty$ +'skip$ +{ " in " * series % no emphasize +* } + 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 = +{ edition "l" change.case$ ".~Auflage" * } +{ edition "t" change.case$ ".~Auflage" * } + 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 + % -> Nutze Abk.: S. +{ "S." pages n.dashify tie.or.space.connect } +{ "S." pages tie.or.space.connect } + 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$ +{ "Kapitel" } +{ 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$ + { "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$ + { "Bericht" } + '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$ +{ 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 " + } + { "Jgg." volume tie.or.space.connect + " in " * + } + 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$ +} +{ "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 + "Masterarbeit" format.thesis.type output.nonnull + 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 + "Dissertation" format.thesis.type output.nonnull + 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 } + +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"} + +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 + { "\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} +%% +%% 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 +%% +%% End of file `lnig.bst'. diff --git a/Master/texmf-dist/doc/latex/lni/README.md b/Master/texmf-dist/doc/latex/lni/README.md new file mode 100755 index 00000000000..2e080478ab6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/lni/README.md @@ -0,0 +1,32 @@ +# lni + +``` +---------------------------------------------------------------------------- +lni -- A class for submissions to the ``Lecture Notes in Informatics'' +(c) 2016-2017 Gesellschaft für Informatik (GI) +Version: 1.0 +Maintainer: 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 +---------------------------------------------------------------------------- +``` + +This is the official version of the class “lni” for submissions to the +“[Lecture Notes in Informatics]” published by the “Gesellschaft für Informatik” +([GI]). + +It is based on previous templates created on behalf of the GI. + +Stable versions are always uploaded to CTAN. In addition you'll find the most +recent developer version on GitHub at . +The most recent documentation is available at +. It includes a short +description how to use the template and also provides trouble shooting hints. + +## Changelog + +* v1.0: First upload of the revised version + + [GI]: https://www.gi.de/ + [Lecture Notes in Informatics]: https://www.gi.de/service/publikationen/lni.html diff --git a/Master/texmf-dist/doc/latex/lni/lni-author-template.tex b/Master/texmf-dist/doc/latex/lni/lni-author-template.tex new file mode 100755 index 00000000000..e4e50108de1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/lni/lni-author-template.tex @@ -0,0 +1,40 @@ +%% !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} diff --git a/Master/texmf-dist/doc/latex/lni/lni-instructions.pdf b/Master/texmf-dist/doc/latex/lni/lni-instructions.pdf new file mode 120000 index 00000000000..3a6a63c6cc1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/lni/lni-instructions.pdf @@ -0,0 +1 @@ +lni.pdf \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/lni/lni.pdf b/Master/texmf-dist/doc/latex/lni/lni.pdf new file mode 100755 index 00000000000..82ae3bb9495 Binary files /dev/null and b/Master/texmf-dist/doc/latex/lni/lni.pdf differ diff --git a/Master/texmf-dist/source/latex/lni/lni.dtx b/Master/texmf-dist/source/latex/lni/lni.dtx new file mode 100755 index 00000000000..86c7a65522a --- /dev/null +++ b/Master/texmf-dist/source/latex/lni/lni.dtx @@ -0,0 +1,2580 @@ +% \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 diff --git a/Master/texmf-dist/source/latex/lni/lni.ins b/Master/texmf-dist/source/latex/lni/lni.ins new file mode 100755 index 00000000000..cd3230d749f --- /dev/null +++ b/Master/texmf-dist/source/latex/lni/lni.ins @@ -0,0 +1,120 @@ +%% +%% This is file `lni.ins', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% lni.dtx (with options: `install') +%% -------:| ----------------------------------------------------------------- +%% 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 +%% +\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 +\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 +%% +%% 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 +%% +%% End of file `lni.ins'. diff --git a/Master/texmf-dist/tex/latex/lni/lni.cls b/Master/texmf-dist/tex/latex/lni/lni.cls new file mode 100755 index 00000000000..ee32a6ec214 --- /dev/null +++ b/Master/texmf-dist/tex/latex/lni/lni.cls @@ -0,0 +1,423 @@ +%% +%% This is file `lni.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% lni.dtx (with options: `class') +%% -------:| ----------------------------------------------------------------- +%% 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 +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesClass{lni} + [2017/04/07 v1.0 Official class for submissions to the ``Lecture Notes in Informatics''] +\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 +\useshorthands*{"} +\addto\extrasenglish{\languageshorthands{ngerman}} +\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}% +\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} +\RequirePackage[ + a4paper, + total={12.6cm,19.2cm}, + includehead, + headheight=20.39pt, + headsep=.31cm, + centering] + {geometry} +\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% +\RequirePackage{graphicx} +\RequirePackage{grffile} +\RequirePackage{fancyhdr} +\RequirePackage{listings} +\def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil +\global\let\@textbottom\relax}} + +\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} +\renewcommand{\title}{\@dblarg\@@title} +\def\@@title[#1]#2{\gdef\@shorttitle{#1}\gdef\@title{#2}} +\renewcommand{\author}{\@dblarg\@@author} +\def\@@author[#1]#2{\gdef\@shortauthor{{\let\footnote\@gobble% + \def\and{\unskip,\ }#1}}\gdef\@author{#2}} +\newcommand{\authorrunning}[1]{\fancyhead[LE]{\hspace{0.05cm}\small\thepage\hspace{5pt}#1}} +\newcommand*{\email}[1]{{\urlstyle{same}\protect\url{#1}}} +\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 +} +\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 +} +\renewenvironment*{abstract}{% + \renewcommand{\abstractname}{Abstract} + \fontsize{9}{10}\selectfont + \noindent\ignorespaces{\bfseries \abstractname:\ }% +}{\endquotation} +\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}{}{} +\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}} +\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} +\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 +\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} +\setlength{\mathindent}{0.5cm} +\RequirePackage{verbatim} +\def\verbatim@processline{\hskip0.5cm\the\verbatim@line\par} +\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} +\setlength{\parindent}{0pt} +\setlength{\parskip}{8pt} +\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} + \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}} + } +\newcommand{\andname}{} +\addto\captionsngerman{% + \renewcommand{\andname}{und}% + \renewcommand{\figurename}{Abb.}% + \renewcommand{\tablename}{Tab.}% + \renewcommand{\lstlistingname}{List.} + \renewcommand{\refname}{Literaturverzeichnis} +} +\addto\captionsenglish{% + \renewcommand{\andname}{and}% + \renewcommand{\figurename}{Fig.}% + \renewcommand{\tablename}{Tab.}% + \renewcommand{\lstlistingname}{List.} +} +\newcommand*{\startpage}[1]{\setcounter{page}{#1}} +\newcommand*{\@booktitle}{} +\newcommand*{\booktitle}[1]{\renewcommand{\@booktitle}{#1}} +\newcommand*{\@editor}{} +\newcommand*{\editor}[1]{\renewcommand{\@editor}{#1}} +\AtBeginDocument{% + \let\@rigyear\year + \newcommand*{\@year}{\the\@rigyear} + \renewcommand*{\year}[1]{% + \renewcommand{\@year}{#1}% + }% +}% +\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 +\RequirePackage{url} +\g@addto@macro{\UrlBreaks}{\UrlOrds} +\ifusehyperref + \RequirePackage[pdfusetitle]{hyperref} + \hypersetup{% + pdfdisplaydoctitle, + bookmarks=false,% + colorlinks=true,% + allcolors=black,% + %%%pdfpagelayout=TwoPageRight,% + pdfstartview=Fit% + }% +\fi% +\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% +\RequirePackage[all]{hypcap} +\def\and{\unskip\hspace{-0.42em},\hspace{.6em}} +\ifusebiblatex +\else + \iflnienglish + \bibliographystyle{lni}% + \else + \bibliographystyle{lnig}% + \fi% +\fi% +\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} +\frenchspacing % Abstand nach Satzende +\widowpenalty=10000 % Vermeidet "widows & orphans" +\clubpenalty=10000 +%% +%% 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 +%% +%% End of file `lni.cls'. diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 29e5bcf915e..c167fd72ad5 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -370,7 +370,7 @@ my @TLP_working = qw( lion-msc lipsum lisp-on-tex listbib listing listings listings-ext listlbls listliketab listofitems listofsymbols - lithuanian liturg lkproof lm lm-math lmake lobster2 + lithuanian liturg lkproof lm lm-math lmake lni lobster2 locality localloc logbox logical-markup-utils logicproof logicpuzzle logpap logreq lollipop longdivision longfbox longfigure longnamefilelist loops diff --git a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc index c630220bd08..ec1bd5a2fb8 100644 --- a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc @@ -81,6 +81,7 @@ depend kluwer depend ksp-thesis depend langsci depend lion-msc +depend lni depend lps depend matc3 depend matc3mem diff --git a/Master/tlpkg/tlpsrc/lni.tlpsrc b/Master/tlpkg/tlpsrc/lni.tlpsrc new file mode 100755 index 00000000000..e69de29bb2d -- cgit v1.2.3