├── .editorconfig ├── .gitattributes ├── .github ├── dependabot.yml ├── pull_request_template.md └── workflows │ └── check.yml ├── .gitignore ├── .vscode └── extensions.json ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── Texlivefile ├── lni-author-template.tex ├── lni-paper-example-de.bib ├── lni-paper-example-de.tex ├── lni.cls ├── lni.dtx ├── lni.ins └── prepare_for_CTAN /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | .git* text eol=lf 2 | *.bib text eol=lf 3 | *.bst text eol=lf 4 | *.cls text eol=lf 5 | *.dtx text eol=lf 6 | *.ins text eol=lf 7 | *.md text eol=lf 8 | *.sh text eol=lf 9 | *.tex text eolf=lf diff=tex 10 | *.yml text eol=lf 11 | *.json text eol=lf 12 | prepare_for_CTAN text eol=lf 13 | 14 | *.pdf binary 15 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.github/workflows/check.yml: -------------------------------------------------------------------------------- 1 | name: check 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | tags: 8 | - v* 9 | pull_request: 10 | schedule: 11 | - cron: '1 2 5 * *' 12 | workflow_dispatch: 13 | 14 | concurrency: 15 | group: ${{ github.workflow }}-${{ github.ref }} 16 | cancel-in-progress: true 17 | 18 | jobs: 19 | cache: 20 | runs-on: ubuntu-latest 21 | steps: 22 | - name: Check out code 23 | uses: actions/checkout@v4 24 | - name: Install TeX Live 25 | uses: zauguin/install-texlive@v3 26 | with: 27 | package_file: Texlivefile 28 | build: 29 | needs: [cache] 30 | runs-on: ubuntu-latest 31 | strategy: 32 | fail-fast: false 33 | matrix: 34 | engine: [pdflatex, lualatex] 35 | steps: 36 | - name: Check out code 37 | uses: actions/checkout@v4 38 | 39 | - name: Install TeX Live 40 | uses: zauguin/install-texlive@v3 41 | with: 42 | package_file: Texlivefile 43 | 44 | - name: Generate lni.cls, *.tex, ... 45 | run: | 46 | pdflatex lni.ins 47 | pdflatex lni.dtx 48 | pdflatex lni.dtx 49 | pdflatex lni.dtx 50 | 51 | - name: Check for modifications 52 | run: | 53 | git update-index --refresh 54 | if ! git diff-index --quiet HEAD --; then 55 | echo "Worktree is not clean." 56 | git diff-index --name-status HEAD 57 | exit 1 58 | fi 59 | 60 | - name: Generate mybibfile.bib 61 | run: touch mybibfile.bib 62 | 63 | # lni-author-template 64 | - run: ${{ matrix.engine }} lni-author-template 65 | - run: texlogsieve lni-author-template.log 66 | 67 | # lni-paper-example-de 68 | - run: ${{ matrix.engine }} lni-paper-example-de 69 | - run: biber lni-paper-example-de 70 | - run: ${{ matrix.engine }} lni-paper-example-de 71 | - run: ${{ matrix.engine }} lni-paper-example-de 72 | - run: texlogsieve lni-paper-example-de.log 73 | 74 | - name: Upload build result 75 | uses: actions/upload-artifact@v4 76 | with: 77 | name: PDFs-${{ matrix.engine }} 78 | path: | 79 | lni-author-template.pdf 80 | lni-paper-example*.pdf 81 | *.log 82 | 83 | - name: Prepare GH pages content 84 | if: github.ref == 'refs/heads/main' && matrix.engine == 'lualatex' 85 | run: | 86 | set -e 87 | mkdir /tmp/gh-pages 88 | cp *.pdf /tmp/gh-pages 89 | 90 | - name: Deploy to GH pages 91 | uses: peaceiris/actions-gh-pages@v4 92 | if: github.ref == 'refs/heads/main' && matrix.engine == 'lualatex' 93 | with: 94 | github_token: ${{ secrets.GITHUB_TOKEN }} 95 | publish_dir: /tmp/gh-pages 96 | force_orphan: true 97 | 98 | - name: Install dependencies for ctanify 99 | if: matrix.engine != 'lualatex' 100 | uses: awalsh128/cache-apt-pkgs-action@latest 101 | with: 102 | packages: libfile-copy-recursive-perl 103 | version: 1.0 104 | 105 | - name: Prepare for CTAN 106 | if: matrix.engine != 'lualatex' 107 | run: ./prepare_for_CTAN 108 | 109 | - name: Upload CTAN build 110 | if: matrix.engine != 'lualatex' 111 | uses: actions/upload-artifact@v4 112 | with: 113 | name: CTAN-${{ matrix.engine }} 114 | path: '*.tar.gz' 115 | 116 | - name: pkgcheck 117 | if: matrix.engine != 'lualatex' 118 | run: | 119 | wget https://codeberg.org/ManfredLotz/pkgcheck/raw/branch/master/bin/pkgcheck 120 | chmod u+x pkgcheck 121 | # blocked by https://codeberg.org/ManfredLotz/pkgcheck/issues/9 122 | # ./pkgcheck lni.tar.gz 123 | 124 | changelog: 125 | name: CHANGELOG.md 126 | runs-on: ubuntu-latest 127 | steps: 128 | - name: Check out code 129 | uses: actions/checkout@v4 130 | - uses: jbangdev/jbang-action@v0.119.0 131 | with: 132 | script: com.github.nbbrd.heylogs:heylogs-cli:0.9.2:bin 133 | scriptargs: "check CHANGELOG.md" 134 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | lni.pdf 2 | lni-author-template*.pdf 3 | lni-paper-example-*.pdf 4 | 5 | mybibfile.bib 6 | 7 | *.old 8 | 9 | *.hd 10 | 11 | texlogsieve 12 | 13 | LNI-english.lbx 14 | LNI-ngerman.lbx 15 | LNI.bbx 16 | LNI.cbx 17 | 18 | ## Core latex/pdflatex auxiliary files: 19 | *.aux 20 | *.lof 21 | *.log 22 | *.lot 23 | *.fls 24 | *.out 25 | *.toc 26 | *.fmt 27 | 28 | ## Intermediate documents: 29 | *.dvi 30 | *-converted-to.* 31 | # these rules might exclude image files for figures etc. 32 | # *.ps 33 | # *.eps 34 | # *.pdf 35 | 36 | ## Bibliography auxiliary files (bibtex/biblatex/biber): 37 | *.bbl 38 | *.bcf 39 | *.blg 40 | *-blx.aux 41 | *-blx.bib 42 | *.brf 43 | *.run.xml 44 | 45 | ## Build tool auxiliary files: 46 | *.fdb_latexmk 47 | *.synctex 48 | *.synctex.gz 49 | *.synctex.gz(busy) 50 | *.pdfsync 51 | 52 | ## Auxiliary and intermediate files from other packages: 53 | # algorithms 54 | *.alg 55 | *.loa 56 | 57 | # achemso 58 | acs-*.bib 59 | 60 | # amsthm 61 | *.thm 62 | 63 | # beamer 64 | *.nav 65 | *.snm 66 | *.vrb 67 | 68 | # cprotect 69 | *.cpt 70 | 71 | #(e)ledmac/(e)ledpar 72 | *.end 73 | *.[1-9] 74 | *.[1-9][0-9] 75 | *.[1-9][0-9][0-9] 76 | *.[1-9]R 77 | *.[1-9][0-9]R 78 | *.[1-9][0-9][0-9]R 79 | *.eledsec[1-9] 80 | *.eledsec[1-9]R 81 | *.eledsec[1-9][0-9] 82 | *.eledsec[1-9][0-9]R 83 | *.eledsec[1-9][0-9][0-9] 84 | *.eledsec[1-9][0-9][0-9]R 85 | 86 | # glossaries 87 | *.acn 88 | *.acr 89 | *.glg 90 | *.glo 91 | *.gls 92 | 93 | # gnuplottex 94 | *-gnuplottex-* 95 | 96 | # hyperref 97 | *.brf 98 | 99 | # knitr 100 | *-concordance.tex 101 | *.tikz 102 | *-tikzDictionary 103 | 104 | # listings 105 | *.lol 106 | 107 | # makeidx 108 | *.idx 109 | *.ilg 110 | *.ind 111 | *.ist 112 | 113 | # minitoc 114 | *.maf 115 | *.mtc 116 | *.mtc[0-9] 117 | *.mtc[1-9][0-9] 118 | 119 | # minted 120 | _minted* 121 | *.pyg 122 | 123 | # morewrites 124 | *.mw 125 | 126 | # mylatexformat 127 | *.fmt 128 | 129 | # nomencl 130 | *.nlo 131 | 132 | # sagetex 133 | *.sagetex.sage 134 | *.sagetex.py 135 | *.sagetex.scmd 136 | 137 | # sympy 138 | *.sout 139 | *.sympy 140 | sympy-plots-for-*.tex/ 141 | 142 | # pdfcomment 143 | *.upa 144 | *.upb 145 | 146 | #pythontex 147 | *.pytxcode 148 | pythontex-files-*/ 149 | 150 | # Texpad 151 | .texpadtmp 152 | 153 | # TikZ & PGF 154 | *.dpth 155 | *.md5 156 | *.auxlock 157 | 158 | # todonotes 159 | *.tdo 160 | 161 | # xindy 162 | *.xdy 163 | 164 | # xypic precompiled matrices 165 | *.xyc 166 | 167 | # WinEdt 168 | *.bak 169 | *.sav 170 | 171 | # endfloat 172 | *.ttt 173 | *.fff 174 | 175 | # Latexian 176 | TSWLatexianTemp* 177 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "EditorConfig.EditorConfig" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/). 6 | 7 | ## [2.0] - 2025-02-05 8 | 9 | ### Removed 10 | 11 | - We removed BibTeX support (`lni.bst` and `lnig.bst`) - biblatex is the only supported tooling for the bibliography. [#144](https://github.com/gi-ev/LNI/issues/144) 12 | 13 | ### Fixed 14 | 15 | - Left margin for nested lists [#175](https://github.com/gi-ev/LNI/issues/175) 16 | 17 | ## [1.10] - 2024-07-23 18 | 19 | ### Changed 20 | 21 | - Footnotes are set as superscripts in the footer 22 | - URLs are set using the text font instead of a typewriter font 23 | 24 | ### Fixed 25 | 26 | - Support for multiple affiliations [#173](https://github.com/gi-ev/LNI/issues/173) 27 | 28 | ## [1.9] - 2024-07-01 29 | 30 | ### Added 31 | 32 | - Support for multiple affiliations [#158](https://github.com/gi-ev/LNI/issues/158) 33 | 34 | ## [1.8.1] - 2024-01-08 35 | 36 | ### Changed 37 | 38 | - Option `defaultsups` now active for package `newtxtext` 39 | 40 | ### Fixed 41 | 42 | - Fixed `There's no line here to end.` error for more than two `\affil` calls 43 | - Fixed `\footnote` 44 | 45 | ## [1.8] - 2023-11-26 46 | 47 | ### Added 48 | 49 | - Added option `anonymous` for anonymizing an article ([#100](https://github.com/gi-ev/LNI/pull/100)) 50 | - Added `\pdfoutput=1` to fix compatibility with [arXiv](https://arxiv.org/) ([#81](https://github.com/gi-ev/LNI/issues/81)) 51 | - Added more links to `biblatex-lni` to documentation ([#90](https://github.com/gi-ev/LNI/issues/90)) 52 | - Added `\yearofpublication` to documentation ([#89](https://github.com/gi-ev/LNI/pull/89)) 53 | - New macro `\affil` for an easier way to enter afiliations (see the documentation and lni-paper-example-de.tex for more details) 54 | 55 | ### Changed 56 | 57 | - Improved spacing in and around lists to better match the Word template ([#102](https://github.com/gi-ev/LNI/pull/102)) 58 | - Synced title spacing with Word template ([#104](https://github.com/gi-ev/LNI/pull/104)) 59 | - (chore) `build.sh` assumes `*.md` are formatted using LF line endings, removed `dos2unix` dependency. 60 | - Improvement for documentation ([#89](https://github.com/gi-ev/LNI/issues/89), [#90](https://github.com/gi-ev/LNI/issues/90), [#93](https://github.com/gi-ev/LNI/issues/93), [#95](https://github.com/gi-ev/LNI/issues/95), [#96](https://github.com/gi-ev/LNI/issues/96)) 61 | - Changed delimiter between keywords to comma (,) 62 | - Load `amsmath` explictly 63 | - `author` now holds four arguments to integrate email and ORCID id. 64 | 65 | ### Fixed 66 | 67 | - hyperref option `linktoc` fixed to `all` instead of `both` 68 | - Fixed output in bst files ([#97](https://github.com/gi-ev/LNI/issues/97)) 69 | - Hyperlinked bibliographic entries work again ([#107](https://github.com/gi-ev/LNI/issues/107)) 70 | - `\footnote` is not used for pdf bookmarks ([#87](https://github.com/gi-ev/LNI/issues/87)) 71 | - Footnotes are always set at the bottom of the page ([#122](https://github.com/gi-ev/LNI/issues/122)) 72 | - Handling of `fleqn` option for `amsmath` 73 | 74 | ### Removed 75 | 76 | - Removed support for `ccicons` 77 | - Removed option `nohyperref` ([#131](https://github.com/gi-ev/LNI/issues/131)) 78 | 79 | ## [1.7] - 2021-03-02 80 | 81 | ### Changed 82 | 83 | - Change loading of latest ngerman hyphenation patterns ([#47](https://github.com/gi-ev/LNI/issues/47)) 84 | - Change `\year` to `\yearofpublication` to avoid problems ([#85](https://github.com/gi-ev/LNI/issues/85)) 85 | 86 | ### Fixed 87 | 88 | - Fix setting of pdf metadata ([#87](https://github.com/gi-ev/LNI/issues/87)) 89 | 90 | ## [1.6] - 2019-10-14 91 | 92 | ### Added 93 | 94 | - Optional argument for `\booktitle` to support a short book title for running headers 95 | - New macro `\booksubtitle` 96 | - Add support for `selnolig` (LuaTeX-only) 97 | 98 | ### Changed 99 | 100 | - `\email` now generates a `mailto:` hyperlink 101 | - Example file: `align` instead of `eqnarray` 102 | - Add `driver=none` option to `geometry` for better crop results (independent from engine) 103 | 104 | ### Fixed 105 | 106 | - Global options are passed to `article` class ([#78](https://github.com/gi-ev/LNI/issues/78)) 107 | - Finally fix BiBTeX issue thanks to @ytzemih ([#6](https://github.com/gi-ev/LNI/issues/6)) 108 | - `hyperref` is loaded without options to make it more compatible with other packages like `authorarchive` 109 | - `hypcap` is only loaded if `hyperref` has been loaded before. 110 | 111 | ## [1.5] - 2019-04-04 112 | 113 | ### Added 114 | 115 | - Load package `textcomp` by default and add option `upquote` to `listings` package ([#69](https://github.com/gi-ev/LNI/issues/69)) 116 | - New option `norunningheads` to remove all running headers from the document 117 | ([#77](https://github.com/gi-ev/LNI/issues/77)) 118 | 119 | ### Changed 120 | 121 | - `\refname` changed to `Bibliography` for English texts 122 | 123 | ### Fixed 124 | 125 | - German paper example: Correct language `Java` at example listing 126 | - Packages `hyperef`, `cleveref` and `hypcap` are always at the end of the preamble ([#71](https://github.com/gi-ev/LNI/issues/71)) 127 | - Option `bookmarks` of `hyperref` now set at load-time. Had no effect before. 128 | - Layout for English texts (subtitle) 129 | - URL for GI in example file 130 | 131 | ## [1.4] - 2018-01-15 132 | 133 | ### Added 134 | 135 | - New option `oldfonts` to use the class file on older systems by loading the `mathptmx` font package ([#56](https://github.com/gi-ev/LNI/issues/56)) 136 | - New macros added (taken from `emisa.dtx`) ([#57](https://github.com/gi-ev/LNI/issues/57)) 137 | - Hint to word limit for abstract ([#60](https://github.com/gi-ev/LNI/issues/60)) 138 | - Full example for an article in German ([#63](https://github.com/gi-ev/LNI/issues/63)) 139 | 140 | ### Changed 141 | 142 | - Package `caption` is loaded in order to make the class more robust ([#59](https://github.com/gi-ev/LNI/issues/59)) 143 | 144 | ### Fixed 145 | 146 | - Basewidth for `lstlistings` ([#62](https://github.com/gi-ev/LNI/issues/62)) 147 | - Adapting captions of `lstlistings` 148 | - License statement of paper: CC-BY-SA instead of CC-BY-NC ([#67](https://github.com/gi-ev/LNI/issues/67)) 149 | - Font size for `\large` 150 | - Font size bug regarding the running header and the captions 151 | 152 | ## [1.3] - 2017-05-15 153 | 154 | ### Added 155 | 156 | - New option `nofonts` to use the class file on older systems ([#53](https://github.com/gi-ev/LNI/issues/53)) 157 | 158 | ### Changed 159 | 160 | - Use more stable syntax for font loading with `fontspec` ([#54](https://github.com/gi-ev/LNI/issues/54)) 161 | 162 | ## [1.2] - 2017-05-05 163 | 164 | ### Added 165 | 166 | - Quick start section for README.md ([#48](https://github.com/gi-ev/LNI/issues/48)) 167 | - New macro `\lnidoi` to add DOI to pages (DOI provided by editor) 168 | - General (partial) support for `XeTeX` and `LuaTeX` using the `iftex` package ([#51](https://github.com/gi-ev/LNI/issues/51)) 169 | 170 | ### Changed 171 | 172 | - Option `straightquotes` is set manually for package `newtxtt` to gain compatibility with versions prior to v1.05 ([#49](https://github.com/gi-ev/LNI/issues/49)) 173 | 174 | ## [1.1] - 2017-04-19 175 | 176 | ### Added 177 | 178 | - New macro `\subtitle` ([#44](https://github.com/gi-ev/LNI/issues/44)) 179 | - New keyword delimiter `\and` ([#43](https://github.com/gi-ev/LNI/issues/43)) 180 | - New files CHANGELOG.md and CONTRIBUTING.md 181 | - New option `crop` for crop marks 182 | - Check for latest German hyphenation patterns ([#47](https://github.com/gi-ev/LNI/issues/47)) 183 | 184 | ### Changed 185 | 186 | - CTAN script to include new files 187 | - Documentation 188 | 189 | ### Fixed 190 | 191 | - Definition of `\Crefname` to always gets "Abb." instead of "ABB." etc. ([#45](https://github.com/gi-ev/LNI/pull/45)) 192 | 193 | ## [1.0] - 2017-04-07 194 | 195 | First release of the revised files 196 | 197 | [2.0]: https://github.com/gi-ev/LNI/compare/v1.10...v2.0 198 | [1.10]: https://github.com/gi-ev/LNI/compare/v1.9...v1.10 199 | [1.9]: https://github.com/gi-ev/LNI/compare/v1.8.1...v1.9 200 | [1.8.1]: https://github.com/gi-ev/LNI/compare/v1.8...v1.8.1 201 | [1.8]: https://github.com/gi-ev/LNI/compare/v1.7...v1.8 202 | [1.7]: https://github.com/gi-ev/LNI/compare/v1.6...v1.7 203 | [1.6]: https://github.com/gi-ev/LNI/compare/v1.5...v1.6 204 | [1.5]: https://github.com/gi-ev/LNI/compare/v1.4...v1.5 205 | [1.4]: https://github.com/gi-ev/LNI/compare/v1.3...v1.4 206 | [1.3]: https://github.com/gi-ev/LNI/compare/v1.2...v1.3 207 | [1.2]: https://github.com/gi-ev/LNI/compare/v1.1...v1.2 208 | [1.1]: https://github.com/gi-ev/LNI/compare/v1.0...v1.1 209 | [1.0]: https://github.com/gi-ev/LNI/releases/tag/v1.0 210 | 211 | 212 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | You can report bugs and request features using the [issues page](https://github.com/gi-ev/lni/issues). 4 | 5 | We love code contributions. 6 | You can easily work on the code if you have a GitHub account ([get one](https://github.com/join)). 7 | For that, please [fork the repository](https://help.github.com/articles/fork-a-repo/), work on the code, and submit a [pull request](https://help.github.com/articles/about-pull-requests/). 8 | 9 | ## LaTeX hints 10 | 11 | We base on [reitzig's TeXLive Docker Images](https://github.com/reitzig/texlive-docker), which are small. 12 | They require each new package listed in `Texlivefile`. 13 | Thus, if you add a new LaTeX package, please also add it into that file. 14 | 15 | You can have a full `bash` environment to experiment by using following command (assuming you are on Windows and checked out the repository at `c:\git-repositories\LNI`): 16 | 17 | docker run -it --rm -v c:\git-repositories\LNI:/work/src reitzig/texlive-base:2023.1 work bash 18 | 19 | After `cd /work/src`, you are in the directory hosting `lni.dtx` and all other files. 20 | 21 | You can check successful generation of `lni.cls` based on `lni.dtx` using following command: 22 | 23 | docker run --rm -v c:\git-repositories\LNI:/work/src reitzig/texlive-base:2023.1 work 24 | 25 | ⚠ Running that command overwrites `lni.cls` (based on `lni.dtx`), so be careful. ⚠ 26 | 27 | ## CI checks 28 | 29 | We have a GitHub workflow running, which checks the complete build using that Docker image. 30 | 31 | ## Hints on GitHub usage 32 | 33 | Take a look at GitHub's excellent overview on the [GitHub flow](https://guides.github.com/introduction/flow/index.html). 34 | The [Feature Branch Workflow](https://de.atlassian.com/git/tutorials/comparing-workflows#feature-branch-workflow) forms the basis of this kind of development. 35 | 36 | In other words: 37 | 38 | 1. Fork the project 39 | 2. Clone the repo: 40 | 41 | git clone git@github.com:your-username/LNI.git 42 | 43 | 3. Create a new branch `patch` (or another speaking name) 44 | 45 | git checkout -b patch 46 | 47 | 4. Make your changes. 48 | 5. Commit your changes. 49 | Thereby, try to write a [good commit message](https://github.com/joelparkerhenderson/git_commit_message). 50 | 6. Push your changes (to your repository) 51 | 7. [submit a pull request](https://github.com/gi-ev/lni/compare/) 52 | 8. At this point you're waiting on us. 53 | We like to at least comment on pull requests as soon as possible. 54 | We may suggest some changes or improvements or alternatives. 55 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The LaTeX Project Public License 2 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 3 | 4 | LPPL Version 1.3c 2008-05-04 5 | 6 | Copyright 1999 2002-2008 LaTeX3 Project 7 | Everyone is allowed to distribute verbatim copies of this 8 | license document, but modification of it is not allowed. 9 | 10 | 11 | PREAMBLE 12 | ======== 13 | 14 | The LaTeX Project Public License (LPPL) is the primary license under 15 | which the LaTeX kernel and the base LaTeX packages are distributed. 16 | 17 | You may use this license for any work of which you hold the copyright 18 | and which you wish to distribute. This license may be particularly 19 | suitable if your work is TeX-related (such as a LaTeX package), but 20 | it is written in such a way that you can use it even if your work is 21 | unrelated to TeX. 22 | 23 | The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE', 24 | below, gives instructions, examples, and recommendations for authors 25 | who are considering distributing their works under this license. 26 | 27 | This license gives conditions under which a work may be distributed 28 | and modified, as well as conditions under which modified versions of 29 | that work may be distributed. 30 | 31 | We, the LaTeX3 Project, believe that the conditions below give you 32 | the freedom to make and distribute modified versions of your work 33 | that conform with whatever technical specifications you wish while 34 | maintaining the availability, integrity, and reliability of 35 | that work. If you do not see how to achieve your goal while 36 | meeting these conditions, then read the document `cfgguide.tex' 37 | and `modguide.tex' in the base LaTeX distribution for suggestions. 38 | 39 | 40 | DEFINITIONS 41 | =========== 42 | 43 | In this license document the following terms are used: 44 | 45 | `Work' 46 | Any work being distributed under this License. 47 | 48 | `Derived Work' 49 | Any work that under any applicable law is derived from the Work. 50 | 51 | `Modification' 52 | Any procedure that produces a Derived Work under any applicable 53 | law -- for example, the production of a file containing an 54 | original file associated with the Work or a significant portion of 55 | such a file, either verbatim or with modifications and/or 56 | translated into another language. 57 | 58 | `Modify' 59 | To apply any procedure that produces a Derived Work under any 60 | applicable law. 61 | 62 | `Distribution' 63 | Making copies of the Work available from one person to another, in 64 | whole or in part. Distribution includes (but is not limited to) 65 | making any electronic components of the Work accessible by 66 | file transfer protocols such as FTP or HTTP or by shared file 67 | systems such as Sun's Network File System (NFS). 68 | 69 | `Compiled Work' 70 | A version of the Work that has been processed into a form where it 71 | is directly usable on a computer system. This processing may 72 | include using installation facilities provided by the Work, 73 | transformations of the Work, copying of components of the Work, or 74 | other activities. Note that modification of any installation 75 | facilities provided by the Work constitutes modification of the Work. 76 | 77 | `Current Maintainer' 78 | A person or persons nominated as such within the Work. If there is 79 | no such explicit nomination then it is the `Copyright Holder' under 80 | any applicable law. 81 | 82 | `Base Interpreter' 83 | A program or process that is normally needed for running or 84 | interpreting a part or the whole of the Work. 85 | 86 | A Base Interpreter may depend on external components but these 87 | are not considered part of the Base Interpreter provided that each 88 | external component clearly identifies itself whenever it is used 89 | interactively. Unless explicitly specified when applying the 90 | license to the Work, the only applicable Base Interpreter is a 91 | `LaTeX-Format' or in the case of files belonging to the 92 | `LaTeX-format' a program implementing the `TeX language'. 93 | 94 | 95 | 96 | CONDITIONS ON DISTRIBUTION AND MODIFICATION 97 | =========================================== 98 | 99 | 1. Activities other than distribution and/or modification of the Work 100 | are not covered by this license; they are outside its scope. In 101 | particular, the act of running the Work is not restricted and no 102 | requirements are made concerning any offers of support for the Work. 103 | 104 | 2. You may distribute a complete, unmodified copy of the Work as you 105 | received it. Distribution of only part of the Work is considered 106 | modification of the Work, and no right to distribute such a Derived 107 | Work may be assumed under the terms of this clause. 108 | 109 | 3. You may distribute a Compiled Work that has been generated from a 110 | complete, unmodified copy of the Work as distributed under Clause 2 111 | above, as long as that Compiled Work is distributed in such a way that 112 | the recipients may install the Compiled Work on their system exactly 113 | as it would have been installed if they generated a Compiled Work 114 | directly from the Work. 115 | 116 | 4. If you are the Current Maintainer of the Work, you may, without 117 | restriction, modify the Work, thus creating a Derived Work. You may 118 | also distribute the Derived Work without restriction, including 119 | Compiled Works generated from the Derived Work. Derived Works 120 | distributed in this manner by the Current Maintainer are considered to 121 | be updated versions of the Work. 122 | 123 | 5. If you are not the Current Maintainer of the Work, you may modify 124 | your copy of the Work, thus creating a Derived Work based on the Work, 125 | and compile this Derived Work, thus creating a Compiled Work based on 126 | the Derived Work. 127 | 128 | 6. If you are not the Current Maintainer of the Work, you may 129 | distribute a Derived Work provided the following conditions are met 130 | for every component of the Work unless that component clearly states 131 | in the copyright notice that it is exempt from that condition. Only 132 | the Current Maintainer is allowed to add such statements of exemption 133 | to a component of the Work. 134 | 135 | a. If a component of this Derived Work can be a direct replacement 136 | for a component of the Work when that component is used with the 137 | Base Interpreter, then, wherever this component of the Work 138 | identifies itself to the user when used interactively with that 139 | Base Interpreter, the replacement component of this Derived Work 140 | clearly and unambiguously identifies itself as a modified version 141 | of this component to the user when used interactively with that 142 | Base Interpreter. 143 | 144 | b. Every component of the Derived Work contains prominent notices 145 | detailing the nature of the changes to that component, or a 146 | prominent reference to another file that is distributed as part 147 | of the Derived Work and that contains a complete and accurate log 148 | of the changes. 149 | 150 | c. No information in the Derived Work implies that any persons, 151 | including (but not limited to) the authors of the original version 152 | of the Work, provide any support, including (but not limited to) 153 | the reporting and handling of errors, to recipients of the 154 | Derived Work unless those persons have stated explicitly that 155 | they do provide such support for the Derived Work. 156 | 157 | d. You distribute at least one of the following with the Derived Work: 158 | 159 | 1. A complete, unmodified copy of the Work; 160 | if your distribution of a modified component is made by 161 | offering access to copy the modified component from a 162 | designated place, then offering equivalent access to copy 163 | the Work from the same or some similar place meets this 164 | condition, even though third parties are not compelled to 165 | copy the Work along with the modified component; 166 | 167 | 2. Information that is sufficient to obtain a complete, 168 | unmodified copy of the Work. 169 | 170 | 7. If you are not the Current Maintainer of the Work, you may 171 | distribute a Compiled Work generated from a Derived Work, as long as 172 | the Derived Work is distributed to all recipients of the Compiled 173 | Work, and as long as the conditions of Clause 6, above, are met with 174 | regard to the Derived Work. 175 | 176 | 8. The conditions above are not intended to prohibit, and hence do not 177 | apply to, the modification, by any method, of any component so that it 178 | becomes identical to an updated version of that component of the Work as 179 | it is distributed by the Current Maintainer under Clause 4, above. 180 | 181 | 9. Distribution of the Work or any Derived Work in an alternative 182 | format, where the Work or that Derived Work (in whole or in part) is 183 | then produced by applying some process to that format, does not relax or 184 | nullify any sections of this license as they pertain to the results of 185 | applying that process. 186 | 187 | 10. a. A Derived Work may be distributed under a different license 188 | provided that license itself honors the conditions listed in 189 | Clause 6 above, in regard to the Work, though it does not have 190 | to honor the rest of the conditions in this license. 191 | 192 | b. If a Derived Work is distributed under a different license, that 193 | Derived Work must provide sufficient documentation as part of 194 | itself to allow each recipient of that Derived Work to honor the 195 | restrictions in Clause 6 above, concerning changes from the Work. 196 | 197 | 11. This license places no restrictions on works that are unrelated to 198 | the Work, nor does this license place any restrictions on aggregating 199 | such works with the Work by any means. 200 | 201 | 12. Nothing in this license is intended to, or may be used to, prevent 202 | complete compliance by all parties with all applicable laws. 203 | 204 | 205 | NO WARRANTY 206 | =========== 207 | 208 | There is no warranty for the Work. Except when otherwise stated in 209 | writing, the Copyright Holder provides the Work `as is', without 210 | warranty of any kind, either expressed or implied, including, but not 211 | limited to, the implied warranties of merchantability and fitness for a 212 | particular purpose. The entire risk as to the quality and performance 213 | of the Work is with you. Should the Work prove defective, you assume 214 | the cost of all necessary servicing, repair, or correction. 215 | 216 | In no event unless required by applicable law or agreed to in writing 217 | will The Copyright Holder, or any author named in the components of the 218 | Work, or any other party who may distribute and/or modify the Work as 219 | permitted above, be liable to you for damages, including any general, 220 | special, incidental or consequential damages arising out of any use of 221 | the Work or out of inability to use the Work (including, but not limited 222 | to, loss of data, data being rendered inaccurate, or losses sustained by 223 | anyone as a result of any failure of the Work to operate with any other 224 | programs), even if the Copyright Holder or said author or said other 225 | party has been advised of the possibility of such damages. 226 | 227 | 228 | MAINTENANCE OF THE WORK 229 | ======================= 230 | 231 | The Work has the status `author-maintained' if the Copyright Holder 232 | explicitly and prominently states near the primary copyright notice in 233 | the Work that the Work can only be maintained by the Copyright Holder 234 | or simply that it is `author-maintained'. 235 | 236 | The Work has the status `maintained' if there is a Current Maintainer 237 | who has indicated in the Work that they are willing to receive error 238 | reports for the Work (for example, by supplying a valid e-mail 239 | address). It is not required for the Current Maintainer to acknowledge 240 | or act upon these error reports. 241 | 242 | The Work changes from status `maintained' to `unmaintained' if there 243 | is no Current Maintainer, or the person stated to be Current 244 | Maintainer of the work cannot be reached through the indicated means 245 | of communication for a period of six months, and there are no other 246 | significant signs of active maintenance. 247 | 248 | You can become the Current Maintainer of the Work by agreement with 249 | any existing Current Maintainer to take over this role. 250 | 251 | If the Work is unmaintained, you can become the Current Maintainer of 252 | the Work through the following steps: 253 | 254 | 1. Make a reasonable attempt to trace the Current Maintainer (and 255 | the Copyright Holder, if the two differ) through the means of 256 | an Internet or similar search. 257 | 258 | 2. If this search is successful, then enquire whether the Work 259 | is still maintained. 260 | 261 | a. If it is being maintained, then ask the Current Maintainer 262 | to update their communication data within one month. 263 | 264 | b. If the search is unsuccessful or no action to resume active 265 | maintenance is taken by the Current Maintainer, then announce 266 | within the pertinent community your intention to take over 267 | maintenance. (If the Work is a LaTeX work, this could be 268 | done, for example, by posting to comp.text.tex.) 269 | 270 | 3a. If the Current Maintainer is reachable and agrees to pass 271 | maintenance of the Work to you, then this takes effect 272 | immediately upon announcement. 273 | 274 | b. If the Current Maintainer is not reachable and the Copyright 275 | Holder agrees that maintenance of the Work be passed to you, 276 | then this takes effect immediately upon announcement. 277 | 278 | 4. If you make an `intention announcement' as described in 2b. above 279 | and after three months your intention is challenged neither by 280 | the Current Maintainer nor by the Copyright Holder nor by other 281 | people, then you may arrange for the Work to be changed so as 282 | to name you as the (new) Current Maintainer. 283 | 284 | 5. If the previously unreachable Current Maintainer becomes 285 | reachable once more within three months of a change completed 286 | under the terms of 3b) or 4), then that Current Maintainer must 287 | become or remain the Current Maintainer upon request provided 288 | they then update their communication data within one month. 289 | 290 | A change in the Current Maintainer does not, of itself, alter the fact 291 | that the Work is distributed under the LPPL license. 292 | 293 | If you become the Current Maintainer of the Work, you should 294 | immediately provide, within the Work, a prominent and unambiguous 295 | statement of your status as Current Maintainer. You should also 296 | announce your new status to the same pertinent community as 297 | in 2b) above. 298 | 299 | 300 | WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE 301 | ====================================================== 302 | 303 | This section contains important instructions, examples, and 304 | recommendations for authors who are considering distributing their 305 | works under this license. These authors are addressed as `you' in 306 | this section. 307 | 308 | Choosing This License or Another License 309 | ---------------------------------------- 310 | 311 | If for any part of your work you want or need to use *distribution* 312 | conditions that differ significantly from those in this license, then 313 | do not refer to this license anywhere in your work but, instead, 314 | distribute your work under a different license. You may use the text 315 | of this license as a model for your own license, but your license 316 | should not refer to the LPPL or otherwise give the impression that 317 | your work is distributed under the LPPL. 318 | 319 | The document `modguide.tex' in the base LaTeX distribution explains 320 | the motivation behind the conditions of this license. It explains, 321 | for example, why distributing LaTeX under the GNU General Public 322 | License (GPL) was considered inappropriate. Even if your work is 323 | unrelated to LaTeX, the discussion in `modguide.tex' may still be 324 | relevant, and authors intending to distribute their works under any 325 | license are encouraged to read it. 326 | 327 | A Recommendation on Modification Without Distribution 328 | ----------------------------------------------------- 329 | 330 | It is wise never to modify a component of the Work, even for your own 331 | personal use, without also meeting the above conditions for 332 | distributing the modified component. While you might intend that such 333 | modifications will never be distributed, often this will happen by 334 | accident -- you may forget that you have modified that component; or 335 | it may not occur to you when allowing others to access the modified 336 | version that you are thus distributing it and violating the conditions 337 | of this license in ways that could have legal implications and, worse, 338 | cause problems for the community. It is therefore usually in your 339 | best interest to keep your copy of the Work identical with the public 340 | one. Many works provide ways to control the behavior of that work 341 | without altering any of its licensed components. 342 | 343 | How to Use This License 344 | ----------------------- 345 | 346 | To use this license, place in each of the components of your work both 347 | an explicit copyright notice including your name and the year the work 348 | was authored and/or last substantially modified. Include also a 349 | statement that the distribution and/or modification of that 350 | component is constrained by the conditions in this license. 351 | 352 | Here is an example of such a notice and statement: 353 | 354 | %% pig.dtx 355 | %% Copyright 2005 M. Y. Name 356 | % 357 | % This work may be distributed and/or modified under the 358 | % conditions of the LaTeX Project Public License, either version 1.3 359 | % of this license or (at your option) any later version. 360 | % The latest version of this license is in 361 | % http://www.latex-project.org/lppl.txt 362 | % and version 1.3 or later is part of all distributions of LaTeX 363 | % version 2005/12/01 or later. 364 | % 365 | % This work has the LPPL maintenance status `maintained'. 366 | % 367 | % The Current Maintainer of this work is M. Y. Name. 368 | % 369 | % This work consists of the files pig.dtx and pig.ins 370 | % and the derived file pig.sty. 371 | 372 | Given such a notice and statement in a file, the conditions 373 | given in this license document would apply, with the `Work' referring 374 | to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being 375 | generated from `pig.dtx' using `pig.ins'), the `Base Interpreter' 376 | referring to any `LaTeX-Format', and both `Copyright Holder' and 377 | `Current Maintainer' referring to the person `M. Y. Name'. 378 | 379 | If you do not want the Maintenance section of LPPL to apply to your 380 | Work, change `maintained' above into `author-maintained'. 381 | However, we recommend that you use `maintained', as the Maintenance 382 | section was added in order to ensure that your Work remains useful to 383 | the community even when you can no longer maintain and support it 384 | yourself. 385 | 386 | Derived Works That Are Not Replacements 387 | --------------------------------------- 388 | 389 | Several clauses of the LPPL specify means to provide reliability and 390 | stability for the user community. They therefore concern themselves 391 | with the case that a Derived Work is intended to be used as a 392 | (compatible or incompatible) replacement of the original Work. If 393 | this is not the case (e.g., if a few lines of code are reused for a 394 | completely different task), then clauses 6b and 6d shall not apply. 395 | 396 | 397 | Important Recommendations 398 | ------------------------- 399 | 400 | Defining What Constitutes the Work 401 | 402 | The LPPL requires that distributions of the Work contain all the 403 | files of the Work. It is therefore important that you provide a 404 | way for the licensee to determine which files constitute the Work. 405 | This could, for example, be achieved by explicitly listing all the 406 | files of the Work near the copyright notice of each file or by 407 | using a line such as: 408 | 409 | % This work consists of all files listed in manifest.txt. 410 | 411 | in that place. In the absence of an unequivocal list it might be 412 | impossible for the licensee to determine what is considered by you 413 | to comprise the Work and, in such a case, the licensee would be 414 | entitled to make reasonable conjectures as to which files comprise 415 | the Work. 416 | 417 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # lni - LaTeX class for submissions to the ``Lecture Notes in Informatics'' 2 | 3 | ```yaml 4 | ---------------------------------------------------------------------------- 5 | lni -- A class for submissions to the ``Lecture Notes in Informatics'' 6 | (c) 2016-2025 Gesellschaft für Informatik (GI) 7 | Version: 2.0 8 | Maintainer: Martin Sievers 9 | Email: martin.sievers@schoenerpublizieren.de 10 | License: Released under the LaTeX Project Public License v1.3c or later 11 | See: https://www.latex-project.org/lppl/ 12 | ---------------------------------------------------------------------------- 13 | ``` 14 | 15 | This is the official version of the class “lni” for submissions to the 16 | “[Lecture Notes in Informatics]” published by the “Gesellschaft für Informatik” 17 | ([GI]). 18 | It is based on previous templates created on behalf of the GI. 19 | 20 | ## Quick start 21 | 22 | Download [`lni-author-template.tex`](https://github.com/gi-ev/LNI/blob/main/lni-author-template.tex) and edit it in your favorite LaTeX editor. 23 | 24 | ## Improved usage 25 | 26 | By default [BibTeX](https://www.ctan.org/pkg/bibtex) is used as bibliography tool. 27 | In case you want to use [biblatex](https://www.ctan.org/pkg/biblatex) together with [Biber](https://www.ctan.org/pkg/biber) (strongly recommended), use the specialized package [biblatex-lni](https://ctan.org/pkg/biblatex-lni). 28 | The easiest way is to add `biblatex` as class option - or to directly start at `lni-paper-example-de.tex`. 29 | 30 | ## Links 31 | 32 | - Documentation: [`lni.pdf`](https://gi-ev.github.io/LNI/lni.pdf). It includes a short description how to use the template and also provides troubleshooting hints. 33 | - Changes: [`CHANGELOG.md`](https://github.com/gi-ev/LNI/blob/main/CHANGELOG.md#changelog) for a version history. 34 | - Stable versions: Always uploaded to CTAN and available at . 35 | - Developer repository: 36 | 37 | The following links are based on the current development state: 38 | 39 | - Longer German paper example: [`lni-paper-example-de.tex`](https://github.com/gi-ev/LNI/blob/main/lni-paper-example-de.tex). 40 | You will also need [`lni-paper-example-de.bib`](https://github.com/gi-ev/LNI/blob/main/lni-paper-example-de.bib). 41 | The PDF is available at [`lni-paper-example-de.pdf`](https://gi-ev.github.io/LNI/lni-paper-example-de.pdf). 42 | - Rendered `lni-author-template.tex`: [`lni-author-template.pdf`](https://gi-ev.github.io/LNI/lni-author-template.pdf). 43 | 44 | ## Note 45 | 46 | You should use `pdflatex` as `xelatex` and `lualatex` lack some features of the class file. 47 | 48 | [GI]: https://gi.de/ 49 | [Lecture Notes in Informatics]: https://gi.de/service/publikationen/lni 50 | -------------------------------------------------------------------------------- /Texlivefile: -------------------------------------------------------------------------------- 1 | latex-bin 2 | amsmath 3 | auxhook 4 | babel-english 5 | babel-german 6 | bera 7 | blindtext 8 | biber 9 | biblatex 10 | biblatex-lni 11 | bigintcalc 12 | bitset 13 | booktabs 14 | caption 15 | carlisle 16 | ccicons 17 | cleveref 18 | cm-super 19 | cmap 20 | collection-fontsrecommended 21 | csquotes 22 | ctanify 23 | dehyph-exptl 24 | dtxdescribe 25 | enumitem 26 | epstopdf-pkg 27 | eso-pic 28 | etoolbox 29 | fancyhdr 30 | fancyvrb 31 | fontspec 32 | footmisc 33 | geometry 34 | gettitlestring 35 | graphics 36 | grffile 37 | hologo 38 | hypcap 39 | hycolor 40 | hyperref 41 | hyphen-german 42 | hypdoc 43 | infwarerr 44 | intcalc 45 | kvsetkeys 46 | kvdefinekeys 47 | letltxmacro 48 | libertine 49 | libertinus 50 | listings 51 | ltxcmds 52 | luatex 53 | luatexbase 54 | microtype 55 | mnsymbol 56 | mwe 57 | nag 58 | newfloat 59 | newtx 60 | newtxtt 61 | oberdiek 62 | orcidlink 63 | pdfescape 64 | pgf 65 | pict2e 66 | preprint 67 | refcount 68 | rerunfilecheck 69 | selnolig 70 | siunitx 71 | tex-gyre 72 | texlogsieve 73 | tools 74 | uniquecounter 75 | upquote 76 | url 77 | xcolor 78 | xpatch 79 | xstring 80 | -------------------------------------------------------------------------------- /lni-author-template.tex: -------------------------------------------------------------------------------- 1 | % !TeX encoding = UTF-8 2 | % !TeX program = pdflatex 3 | % !BIB program = biber 4 | 5 | %%% To write an article in English, please use the option ``english'' in order 6 | %%% to get the correct hyphenation patterns and terms. 7 | %%% \documentclass[english]{class} 8 | %%% for anonymizing an article you can use the ``anonymous'' option. 9 | %%% 10 | %%% Um einen Artikel auf deutsch zu schreiben, genügt es die Klasse ohne 11 | %%% Parameter zu laden. 12 | %%% Zur Anonymisierung kann die ``anonymous'' Option genutzt werden. 13 | \documentclass[]{lni} 14 | %% 15 | \begin{document} 16 | %%% Mehrere Autoren werden durch \and voneinander getrennt. 17 | %%% Die Fußnote enthält die Adresse sowie eine E-Mail-Adresse. 18 | %%% Das optionale Argument (sofern angegeben) wird für die Kopfzeile verwendet. 19 | \title[Ein Kurztitel]{Ein sehr langer Titel über mehrere Zeilen mit sehr vielen 20 | Worten und noch mehr Buchstaben} 21 | %% \subtitle{Untertitel / Subtitle} % if needed 22 | \author[1,2]{Firstname1 Lastname1}{firstname1.lastname1@affiliation1.org}{0000-0000-0000-0000} 23 | \author[2]{Firstname2 Lastname2}{firstname2.lastname2@affiliation2.org}{0000-0000-0000-0000} 24 | \author[3]{Firstname3 Lastname3}{firstname3.lastname3@affiliation1.org}{0000-0000-0000-0000} 25 | \author[1]{Firstname4 Lastname4}{firstname4.lastname4@affiliation1.org}{0000-0000-0000-0000}% 26 | \affil[1]{Universität 1\\Abteilung\\Straße\\Postleitzahl Ort\\Land} 27 | \affil[2]{University 2 \\Department\\Address\\Country} 28 | \affil[3]{University 3\\Department\\Address\\Country} 29 | \maketitle 30 | 31 | \begin{abstract} 32 | Dies ist eine kurze Übersicht über das Dokument mit einer Länge von 33 | 70 bis 150 Wörtern. Es sollte ein Absatz sein, der die relevantesten 34 | Aspekte enthält. 35 | \end{abstract} 36 | \begin{keywords} 37 | Schlagwort1 \and Schlagwort2 %Keyword1 \and Keyword2 38 | \end{keywords} 39 | %%% Beginn des Artikeltexts 40 | \section{Überschrift/Heading} 41 | 42 | %% \printbibliography 43 | \end{document} 44 | -------------------------------------------------------------------------------- /lni-paper-example-de.bib: -------------------------------------------------------------------------------- 1 | 2 | @InProceedings{ABC01, 3 | author = {Abraham, N. and Bibel, U. and Corleone, P.}, 4 | title = {Formatting Contributions for Proceedings}, 5 | pages = {46-53}, 6 | crossref = {Gl01}, 7 | } 8 | 9 | @InBook{Az09, 10 | pages = {135-162}, 11 | title = {Die Fußnote in LNI-Bänden}, 12 | author = {Azubi, L. and others}, 13 | crossref = {Gl09}, 14 | } 15 | 16 | @Book{AB00, 17 | title = {Formatierungsrichtlinien für Tagungsbände}, 18 | publisher = {Format-Verlag}, 19 | year = {2000}, 20 | author = {Abel, K. and Bibel, U.}, 21 | address = {Bonn}, 22 | } 23 | 24 | @Book{Ez10, 25 | title = {The Magic Format -- Your Way to Pretty Books}, 26 | publisher = {Noah \& Sons}, 27 | year = {2010}, 28 | author = {Ezgarani, O.}, 29 | } 30 | 31 | @Article{Gl06, 32 | author = {Glück, H. I.}, 33 | title = {Formatierung leicht gemacht}, 34 | journal = {Formatierungsjournal}, 35 | volume = {11}, 36 | number = {09}, 37 | year = {2009}, 38 | pages = {23-27}, 39 | } 40 | 41 | @Book{Wa14, 42 | title = {Essenzen der Informatik}, 43 | publisher = {Verlag Formvoll}, 44 | year = {2014}, 45 | author = {Wasser, K. and Feuer, H. and Erde, R. and Licht, H.}, 46 | } 47 | 48 | @Book{Wa14b, 49 | title = {Ganz neue Essenzen der Informatik im selben Jahr}, 50 | publisher = {Format-Verlag}, 51 | year = {2014}, 52 | author = {Wasser, K. and Feuer, H. and Erde, R. and Licht, H.}, 53 | } 54 | 55 | @Proceedings{Gl01, 56 | title = {Proc. 7th Int. Conf. on Formatting of Workshop-Proceedings}, 57 | year = {2001}, 58 | editor = {Glück, H. I.}, 59 | address = {San Francisco}, 60 | publisher = {Noah \& Sons}, 61 | booktitle = {Proc. 7th Int. Conf. on Formatting of Workshop-Proceedings}, 62 | } 63 | 64 | @Book{Gl09, 65 | title = {Formatierung 2009}, 66 | publisher = {Format-Verlag}, 67 | year = {2009}, 68 | editor = {Glück, H. I.}, 69 | number = {999}, 70 | series = {LNI}, 71 | address = {Bonn}, 72 | booktitle = {Formatierung 2009}, 73 | } 74 | 75 | @Misc{XX14, 76 | title = {Anteil an Frauen in der Informatik}, 77 | label = {An}, 78 | howpublished = {Statistics Worldwide}, 79 | year = {2014}, 80 | } 81 | 82 | @Online{GI19, 83 | author = {{Gesellschaft für Informatik e.\,V.}}, 84 | label = {GI}, 85 | year = {2019}, 86 | url = {http://www.gi.de}, 87 | urldate = {2019-03-21} 88 | } 89 | 90 | @Comment{jabref-meta: databaseType:biblatex;} 91 | -------------------------------------------------------------------------------- /lni-paper-example-de.tex: -------------------------------------------------------------------------------- 1 | % !TeX encoding = UTF-8 2 | % !TeX spellcheck = de_DE 3 | % !BIB program = biber 4 | 5 | \documentclass{lni} 6 | \addbibresource{lni-paper-example-de.bib} 7 | 8 | %% Schöne Tabellen mittels \toprule, \midrule, \bottomrule 9 | \usepackage{booktabs} 10 | 11 | %% Zu Demonstrationszwecken 12 | \usepackage[]{blindtext} 13 | 14 | \begin{document} 15 | %%% Mehrere Autoren werden durch \and voneinander getrennt. 16 | %%% Die Fußnote enthält die Adresse sowie eine E-Mail-Adresse. 17 | %%% Das optionale Argument (sofern angegeben) wird für die Kopfzeile verwendet. 18 | \title[Ein Kurztitel]{Ein sehr langer Titel über mehrere Zeilen mit sehr vielen Worten und noch mehr Buchstaben} 19 | %%%\subtitle{Untertitel / Subtitle} % falls benötigt 20 | \author[1]{Vorname1 Nachname1}{vorname1.name1@affiliation1.de}{0000-0000-0000-0000} 21 | \author[2]{Vorname2 Nachname2}{vorname2.name2@affiliation2.de}{0000-0000-0000-0000} 22 | \author[1]{Vorname3 Nachname3}{vorname3.name3@affiliation1.de}{0000-0000-0000-0000} 23 | \author[1]{Vorname4 Nachname4}{vorname4.name4@affiliation1.de}{0000-0000-0000-0000}% 24 | \affil[1]{Universität\\Abteilung\\Straße\\Postleitzahl Ort\\Land} 25 | \affil[2]{University\\Department\\Address\\Country} 26 | \maketitle 27 | 28 | \begin{abstract} 29 | Die \LaTeX-Klasse \texttt{lni} setzt die Layout-Vorgaben für Beiträge in LNI Konferenzbänden um. 30 | Dieses Dokument beschreibt ihre Verwendung und ist ein Beispiel für die entsprechende Darstellung. 31 | Der Abstract ist ein kurzer Überblick über die Arbeit der zwischen 70 und 150 Wörtern lang sein und das Wichtigste enthalten sollte. 32 | Die Formatierung erfolgt automatisch innerhalb des abstract-Bereichs. 33 | \end{abstract} 34 | 35 | \begin{keywords} 36 | LNI Guidelines \and \LaTeX\ Vorlage 37 | \end{keywords} 38 | 39 | \section{Verwendung} 40 | Die GI gibt unter \url{http://www.gi-ev.de/LNI} Vorgaben für die Formatierung von Dokumenten in der LNI Reihe. 41 | Für \LaTeX-Dokumente werden diese durch die Dokumentenklasse \texttt{lni} realisiert. 42 | 43 | Dieses Dokument basiert auf der offiziellen Dokumentation, simplifiziert und setzt grundlegendes LaTeX-Wissen voraus. 44 | Es werden generische Platzhalter an die entsprechenden Stellen (wie beispielsweise die Autoren-Angaben) gesetzt und nicht weiter an anderer Stelle dokumentiert. 45 | 46 | Dieses Template ist wie folgt gegliedert: 47 | \Cref{sec:demos} zeigt Demonstrationen der LNI-Verlage. 48 | \Cref{sec:lniconformance} zeigt die Einhaltung der Richtlinien durch einfachen Text. 49 | 50 | \section{Demonstrationen} 51 | \label{sec:demos} 52 | Das Symbol für Potenzmengen ($\powerset$) wird korrekt angezeigt. 53 | Es ist kein Weierstraß-p ($\wp$) mehr. 54 | 55 | Spitze Klammen können direkt eingegeben werden: 56 | 57 | Anonymisierungen können mittels anonymous-Option in der documentclass automatisch vorgenommen werden. Dafür gibt es das \texttt{anon}-Makro, z.\,B. \anon{Geheim für Review} und \anon[nur für Review]{nur für finale Version}. 58 | 59 | Hier eine kleine Demonstration von \href{https://www.ctan.org/pkg/microtype}{microtype}: 60 | \blindtext 61 | 62 | \section{Demonstration der Einhaltung der Richtlinien} 63 | \label{sec:lniconformance} 64 | 65 | \subsection{Literaturverzeichnis} 66 | Der letzte Abschnitt zeigt ein beispielhaftes Literaturverzeichnis für Bücher mit einem Autor \cite{Ez10} und zwei AutorInnen \cite{AB00}, einem Beitrag in Proceedings mit drei AutorInnen \cite{ABC01}, einem Beitrag in einem LNI Band mit mehr als drei AutorInnen \cite{Az09}, zwei Bücher mit den jeweils selben vier AutorInnen im selben Erscheinungsjahr \cite{Wa14} und \cite{Wa14b}, ein Journal \cite{Gl06}, eine Website \cite{GI19} bzw.\ anderweitige Literatur ohne konkrete AutorInnenschaft \cite{XX14}. 67 | Es wird biblatex verwendet, da es UTF8 sauber unterstützt und viele Erweiterungen mit bringt. 68 | 69 | Referenzen sollten nicht direkt als Subjekt eingebunden werden, sondern immer nur durch Authorenanganben: 70 | Beispiel: \Citet{AB00} geben ein Beispiel, aber auch \citet{Az09}. 71 | Hinweis: Großes C bei \texttt{Citet}, wenn es am Satzanfang steht. Dies ist analog zu \texttt{Cref}. 72 | 73 | Formatierung und Abkürzungen werden für die Referenzen \texttt{book}, \texttt{inbook}, \texttt{proceedings}, \texttt{inproceedings}, \texttt{article}, \texttt{online} und \texttt{misc} automatisch vorgenommen. 74 | Mögliche Felder für Referenzen können der Beispieldatei \texttt{lni-paper-example-de.bib} entnommen werden. 75 | Andere Referenzen sowie Felder müssen allenfalls nachträglich angepasst werden. 76 | 77 | \subsection{Abbildungen} 78 | \Cref{fig:demo} zeigt eine Abbildung. 79 | 80 | \begin{figure} 81 | \centering 82 | \includegraphics[width=.8\textwidth]{example-image} 83 | \caption{Demographik} 84 | \label{fig:demo} 85 | \end{figure} 86 | 87 | \subsection{Tabellen} 88 | \Cref{tab:demo} zeigt eine Tabelle. 89 | 90 | \begin{table} 91 | \centering 92 | \begin{tabular}{lll} 93 | \toprule 94 | Überschriftsebenen & Beispiel & Schriftgröße und -art \\ 95 | \midrule 96 | Titel (linksbündig) & Der Titel \ldots & 14 pt, Fett\\ 97 | Überschrift 1 & 1 Einleitung & 12 pt, Fett\\ 98 | Überschrift 2 & 2.1 Titel & 10 pt, Fett\\ 99 | \bottomrule 100 | \end{tabular} 101 | \caption{Die Überschriftsarten} 102 | \label{tab:demo} 103 | \end{table} 104 | 105 | \subsection{Programmcode} 106 | Die LNI-Formatvorlage verlangt die Einrückung von Listings vom linken Rand. 107 | In der \texttt{lni}-Dokumentenklasse ist dies für die \texttt{verbatim}-Umgebung realisiert. 108 | 109 | \begin{verbatim} 110 | public class Hello { 111 | public static void main (String[] args) { 112 | System.out.println("Hello World!"); 113 | } 114 | } 115 | \end{verbatim} 116 | 117 | Alternativ kann auch die \texttt{lstlisting}-Umgebung verwendet werden. 118 | 119 | \Cref{java-hello-world} zeigt uns ein Beispiel, das mit Hilfe der \texttt{lstlisting}-Umgebung realisiert ist. Ein anderes Beispiel ist \cref{python-hello-world}. 120 | 121 | \begin{lstlisting}[caption={Ein Java-Programm}, label=java-hello-world, language=Java] 122 | public class Hello { 123 | public static void main (String[] args) { 124 | System.out.println("Hello World!"); 125 | } 126 | } 127 | \end{lstlisting} 128 | 129 | \begin{lstlisting}[caption={Ein Python-Programm}, label=python-hello-world, language=Python] 130 | # This program prints Hello, world! 131 | 132 | print('Hello, world!') 133 | \end{lstlisting} 134 | 135 | \subsection{Formeln und Gleichungen} 136 | 137 | Die korrekte Einrückung und Nummerierung für Formeln ist bei den Umgebungen 138 | \texttt{equation} und \texttt{align} gewährleistet. 139 | 140 | \begin{equation} 141 | 1=4-3 142 | \end{equation} 143 | und 144 | \begin{align} 145 | 2&=7-5\\ 146 | 3&=2-1 147 | \end{align} 148 | 149 | %% Starten Sie "biber lni-paper-example-de", um eine Bibliographie zu erzeugen. 150 | \printbibliography 151 | 152 | \end{document} 153 | -------------------------------------------------------------------------------- /lni.cls: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `lni.cls', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% lni.dtx (with options: `class') 8 | %% --------| ----------------------------------------------------------------- 9 | %% lni:| A class for submissions to the ``Lecture Notes in Informatics'' 10 | %% Author:| Martin Sievers 11 | %% Email:| martin.sievers@schoenerpublizieren.de 12 | %% License:| Released under the LaTeX Project Public License v1.3c or later 13 | %% See:| http://www.latex-project.org/lppl.txt 14 | %% --------| ----------------------------------------------------------------- 15 | \NeedsTeXFormat{LaTeX2e}[1999/12/01] 16 | \ProvidesClass{lni} 17 | [2025/02/05 v2.0 Official class for submissions to the ``Lecture Notes 18 | in Informatics''] 19 | \RequirePackage{iftex}\ifluatex\else\pdfoutput=1\fi% 20 | \def\@clearglobaloption#1{% 21 | \def\@tempa{#1}% 22 | \def\@tempb{\@gobble}% 23 | \@for\next:=\@classoptionslist\do 24 | {\ifx\next\@tempa 25 | \message{Cleared option \next\space from global list}% 26 | \else 27 | \edef\@tempb{\@tempb,\next}% 28 | \fi}% 29 | \let\@classoptionslist\@tempb 30 | \expandafter\ifx\@tempb\@gobble 31 | \let\@classoptionslist\@empty 32 | \fi} 33 | \DeclareOption{latin1}{% 34 | \PassOptionsToPackage{latin1}{inputenc} 35 | \ClassNoteNoLine{lni}{The option `latin1` will be removed from the class with the next major release}} 36 | \DeclareOption{utf8}{% 37 | \PassOptionsToPackage{utf8}{inputenc} 38 | \ClassNoteNoLine{lni}{The option `utf8` will be removed from the class with the next major release as it is the only valid value}} 39 | \DeclareOption{ansinew}{% 40 | \PassOptionsToPackage{ansinew}{inputenc} 41 | \ClassNoteNoLine{lni}{The option `ansinew` will be removed from the class with the next major release}} 42 | \newif\iflnienglish 43 | \lnienglishfalse 44 | \DeclareOption{english}{\lnienglishtrue\@clearglobaloption{english}} 45 | \newif\ifusehyperref 46 | \usehyperreftrue 47 | \DeclareOption{nohyperref}{% 48 | \ClassWarningNoLine{lni}{The option `nohyperref` has been deactivated and will be removed from the class with the next major release}} 49 | \newif\ifusecleveref 50 | \useclevereftrue 51 | \DeclareOption{nocleveref}{\useclevereffalse} 52 | \newif\ifcrop 53 | \cropfalse 54 | \DeclareOption{crop}{\croptrue} 55 | \newif\ifnofonts 56 | \nofontsfalse 57 | \DeclareOption{nofonts}{% 58 | \nofontstrue\autofontsfalse 59 | \ClassNoteNoLine{lni}{The option `nofonts` will be removed from the class with the next major release}} 60 | \newif\ifoldfonts 61 | \oldfontsfalse 62 | \DeclareOption{oldfonts}{% 63 | \oldfontstrue\autofontsfalse 64 | \ClassNoteNoLine{lni}{The option `oldfonts` will be removed from the class with the next major release}} 65 | \newif\ifautofonts 66 | \autofontstrue 67 | \newif\ifnorunningheads 68 | \DeclareOption{norunningheads}{% 69 | \norunningheadstrue 70 | \ClassNoteNoLine{lni}{The option `norunningheads` will be removed from the class with the next major release}} 71 | \newif\ifrunningheads 72 | \DeclareOption{runningheads}{\norunningheadsfalse} 73 | \newif\ifanonymous 74 | \anonymousfalse 75 | \DeclareOption{anonymous}{\anonymoustrue} 76 | \newcommand{\anon}[2][\iflnienglish ANONYMIZED\else ANONYMISIERT\fi]{% 77 | \ifanonymous% 78 | {\color{orange}#1}% 79 | \else% 80 | #2% 81 | \fi} 82 | \ExecuteOptions{utf8,norunningheads} 83 | \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} 84 | \ProcessOptions\relax 85 | \PassOptionsToPackage{fleqn}{amsmath} 86 | \LoadClass[10pt,twoside,a4paper]{article} 87 | \ifPDFTeX 88 | \RequirePackage{cmap} 89 | \RequirePackage{inputenc} 90 | \RequirePackage[T1]{fontenc} 91 | \RequirePackage[full]{textcomp} 92 | \fi% 93 | \iflnienglish 94 | \RequirePackage[ngerman,english]{babel} 95 | \else 96 | \RequirePackage[english,ngerman]{babel} 97 | \babelprovide[hyphenrules=ngerman-x-latest]{ngerman} 98 | \ClassInfo{lni}{Using latest German hyphenation patterns}% 99 | \fi% 100 | \useshorthands*{"} 101 | \addto\extrasenglish{\languageshorthands{ngerman}} 102 | \ifautofonts 103 | \ClassInfo{lni}{*******************************************************} 104 | \MessageBreak 105 | \ClassInfo{lni}{Checking for fonts ...} 106 | \ClassInfo{lni}{*******************************************************} 107 | \ifPDFTeX 108 | \IfFileExists{newtxtext.sty} 109 | {% 110 | \RequirePackage[defaultsups]{newtxtext} 111 | \RequirePackage{newtxmath} 112 | \RequirePackage[zerostyle=b,scaled=.9]{newtxtt} 113 | \@ifpackagelater{newtxtt}{2014/11/18}% 114 | {\txtt@upqtrue}% 115 | {\ClassWarning{lni}{You are using an old version of 116 | `newtxtt'.\MessageBreak 117 | Option `straightquotes' will not be used!}}% 118 | }% 119 | {\IfFileExists{mathptmx.sty} 120 | {\oldfontstrue}% 121 | {\nofontstrue}% 122 | }% 123 | \else% 124 | \IfFileExists{newtxmath.sty} 125 | {\RequirePackage{newtxmath}}% 126 | {}% 127 | \RequirePackage[no-math]{fontspec} 128 | \IfFontExistsTF{texgyretermes-regular.otf} 129 | {% 130 | \setmainfont{texgyretermes}[ 131 | Extension = .otf, 132 | UprightFont = *-regular, 133 | BoldFont = *-bold, 134 | ItalicFont = *-italic, 135 | BoldItalicFont = *-bolditalic, 136 | Ligatures=TeX 137 | ] 138 | }% 139 | {\IfFileExists{mathptmx.sty} 140 | {\oldfontstrue}% 141 | {\nofontstrue}% 142 | }% 143 | \fi% 144 | \fi% 145 | \ifoldfonts 146 | \RequirePackage{mathptmx} 147 | \else% 148 | \ifnofonts % nofonts activated 149 | \ClassWarning{lni}{Option `nofonts' set! I will use standard fonts 150 | \MessageBreak 151 | instead of the New TX fonts. Your document will NOT look like the 152 | \MessageBreak 153 | final result for publication. This should only be used if you have 154 | \MessageBreak 155 | no possibility to install fonts or upgrade your TeX installation!}% 156 | \fi% 157 | \fi% 158 | \ifPDFTeX 159 | \RequirePackage[% 160 | final,% 161 | tracking=smallcaps,% 162 | expansion=alltext,% 163 | protrusion=alltext-nott]{microtype}% 164 | \else 165 | \RequirePackage[% 166 | final,% 167 | protrusion=alltext-nott]{microtype}% 168 | \ifluatex 169 | \iflnienglish 170 | \RequirePackage[english]{selnolig}% 171 | \else 172 | \RequirePackage[ngerman]{selnolig}% 173 | \fi% 174 | \fi% 175 | \fi% 176 | \SetTracking{encoding=*,shape=sc}{50}% 177 | \DeclareFontFamily{U}{MnSymbolC}{} 178 | \DeclareSymbolFont{MnSyC}{U}{MnSymbolC}{m}{n} 179 | \DeclareFontShape{U}{MnSymbolC}{m}{n}{ 180 | <-6> MnSymbolC5 181 | <6-7> MnSymbolC6 182 | <7-8> MnSymbolC7 183 | <8-9> MnSymbolC8 184 | <9-10> MnSymbolC9 185 | <10-12> MnSymbolC10 186 | <12-> MnSymbolC12% 187 | }{} 188 | \DeclareMathSymbol{\powerset}{\mathord}{MnSyC}{180} 189 | \RequirePackage{etoolbox} 190 | \newlength{\doihoffset} 191 | \newlength{\doivoffset} 192 | \ifcrop 193 | \RequirePackage[ 194 | paperheight=23.5cm,paperwidth=15.5cm, 195 | total={12.6cm,19.2cm}, 196 | includehead, 197 | headheight=20.39pt, 198 | headsep=.31cm, 199 | centering, 200 | driver=none] 201 | {geometry} 202 | \RequirePackage[a4,center,cam,info]{crop} 203 | \renewcommand*\CROP@@info{{% 204 | \global\advance\CROP@index\@ne 205 | \def\x{\discretionary{}{}{\hbox{\kern.5em---\kern.5em}}}% 206 | \advance\paperwidth-20\p@ 207 | \dimen@4pt 208 | \ifx\CROP@pagecolor\@empty 209 | \else 210 | \advance\dimen@\CROP@overlap 211 | \fi 212 | \hb@xt@\z@{% 213 | \hss 214 | \vbox to\z@{% 215 | \centering 216 | \hsize\paperwidth 217 | \vss 218 | \normalfont 219 | \normalsize 220 | \expandafter\csname\CROP@font\endcsname{% 221 | ``\jobname''\x 222 | \the\year/\the\month/\the\day\x 223 | \CROP@time\x 224 | page\kern.5em\thepage\x 225 | \#\the\CROP@index 226 | \strut 227 | }% 228 | \vskip\dimen@ 229 | }% 230 | \hss 231 | }% 232 | }}% 233 | \setlength{\doihoffset}{1.45cm} 234 | \setlength{\doivoffset}{1.2cm} 235 | \else 236 | \RequirePackage[ 237 | total={12.6cm,19.2cm}, 238 | includehead, 239 | headheight=20.39pt, 240 | headsep=.31cm, 241 | centering] 242 | {geometry} 243 | \setlength{\doihoffset}{4.2cm} 244 | \setlength{\doivoffset}{4.3cm} 245 | \fi% 246 | \let\oldsmall\small% 247 | \renewcommand\small{% 248 | \@setfontsize\small\@ixpt{10}% 249 | \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ 250 | \abovedisplayshortskip \z@ \@plus2\p@ 251 | \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ 252 | \def\@listi{\leftmargin\leftmargini 253 | \topsep 4\p@ \@plus2\p@ \@minus2\p@ 254 | \parsep 2\p@ \@plus\p@ \@minus\p@ 255 | \itemsep \parsep}% 256 | \belowdisplayskip \abovedisplayskip 257 | } 258 | \renewcommand\Large{\@setfontsize\Large{14}{17}} 259 | \RequirePackage[autostyle]{csquotes} 260 | \RequirePackage[% 261 | backend=biber,% UTF-8 support 262 | date=year, 263 | style=LNI, % The GI style - see https://www.ctan.org/pkg/biblatex-lni 264 | natbib=true % Required for \Citet 265 | ]{biblatex}[2016-09-15]% at least version 3.6 of biblatex is required. 266 | % Enable hyperlinked authors when using \citeauthor 267 | % Source: http://tex.stackexchange.com/a/75916/9075 268 | \DeclareCiteCommand{\citeauthor}% 269 | {\boolfalse{citetracker}% 270 | \boolfalse{pagetracker}% 271 | \usebibmacro{prenote}}% 272 | {\ifciteindex% 273 | {\indexnames{labelname}}% 274 | {}% 275 | \printtext[bibhyperref]{\printnames{labelname}}}% 276 | {\multicitedelim}% 277 | {\usebibmacro{postnote}}% 278 | \RequirePackage{amsmath} 279 | \RequirePackage{etoolbox} 280 | \RequirePackage{graphicx} 281 | \RequirePackage{eso-pic} 282 | \RequirePackage{grffile} 283 | \RequirePackage{fancyhdr} 284 | \RequirePackage{listings} 285 | \RequirePackage{enumitem} 286 | \RequirePackage[hang]{footmisc} 287 | \setlength{\footnotemargin}{1em} 288 | \long\def\@makefntext#1{% 289 | \def\@makefnmark{\rlap{\normalfont\textsuperscript{\@thefnmark}}}% 290 | \ifFN@hangfoot 291 | \bgroup 292 | \setbox\@tempboxa\hbox{% 293 | \ifdim\footnotemargin>0pt 294 | \hb@xt@\footnotemargin{\@makefnmark\hss}% 295 | \else 296 | \@makefnmark 297 | \fi 298 | }% 299 | \leftmargin\wd\@tempboxa 300 | \rightmargin\z@ 301 | \linewidth \columnwidth 302 | \advance \linewidth -\leftmargin 303 | \parshape \@ne \leftmargin \linewidth 304 | \@totalleftmargin \leftmargin 305 | \footnotesize 306 | \@setpar{{\@@par}}% 307 | \leavevmode 308 | \llap{\box\@tempboxa}% 309 | \parskip\hangfootparskip\relax 310 | \parindent\hangfootparindent\relax 311 | \else 312 | \parindent1em 313 | \noindent 314 | \ifdim\footnotemargin>\z@ 315 | \hb@xt@ \footnotemargin{\hss\@makefnmark}% 316 | \else 317 | \ifdim\footnotemargin=\z@ 318 | \llap{\@makefnmark}% 319 | \else 320 | \llap{\hb@xt@ -\footnotemargin{\@makefnmark\hss}}% 321 | \fi 322 | \fi 323 | \fi 324 | \footnotelayout#1% 325 | \ifFN@hangfoot 326 | \par\egroup 327 | \fi 328 | } 329 | \lstset{% 330 | basicstyle=\ttfamily,% 331 | columns=fixed,% 332 | basewidth=.5em,% 333 | xleftmargin=0.5cm,% 334 | captionpos=b,% 335 | upquote}% 336 | \def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil 337 | \global\let\@textbottom\relax}} 338 | \renewcommand\@pnumwidth{3em} 339 | \renewcommand\@tocrmarg{3.5em} 340 | \def\@dottedtocline#1#2#3#4#5{% 341 | \ifnum #1>\c@tocdepth \else 342 | \vskip \z@ \@plus.2\p@ 343 | {\leftskip #2\relax \rightskip \@tocrmarg \advance\rightskip by 0pt plus 2cm 344 | \parfillskip -\rightskip \pretolerance=10000 345 | \parindent #2\relax\@afterindenttrue 346 | \interlinepenalty\@M 347 | \leavevmode 348 | \@tempdima #3\relax 349 | \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip 350 | {#4}\nobreak 351 | \leaders\hbox{$\m@th 352 | \mkern \@dotsep mu\hbox{.}\mkern \@dotsep 353 | mu$}\hfill 354 | \nobreak 355 | \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}% 356 | \par}% 357 | \fi} 358 | \renewcommand{\title}{\@dblarg\@@title} 359 | \def\@@title[#1]#2{% 360 | \gdef\@shorttitle{#1}\gdef\@title{#2}} 361 | \newcommand{\subtitle}[1]{\gdef\@subtitle{#1}} 362 | \RequirePackage{authblk} 363 | \newcommand{\@authlisthead}{} 364 | \newtoks\@temptokenb 365 | \newtoks\@temptokenc 366 | \renewcommand\Authsep{, } 367 | \renewcommand\Authands{\iflanguage{ngerman}{ und }{, and }} 368 | \renewcommand\Authand{\iflanguage{ngerman}{ und }{ and }} 369 | \NewDocumentCommand{\multiaffil}{ >{\SplitList{,}} m m m}{% 370 | \gdef\@currEmail{#2} 371 | \gdef\@currOrcid{#3} 372 | \ProcessList{#1}{\@multiaffil} 373 | } 374 | 375 | \newcommand{\@multiaffil}[1]{% 376 | \ifcsundef{@emailsandorcids#1}{\csgdef{@emailsandorcids#1}{}}{}% 377 | \ifcsempty{@emailsandorcids#1}% 378 | {\protected@csxappto{@emailsandorcids#1}{% 379 | \if\relax\@currEmail\relax\else\email{\@currEmail}\fi\if\relax\@currOrcid\relax\else,\ \orcid{\@currOrcid}\fi}}% 380 | {\protected@csxappto{@emailsandorcids#1}{% 381 | \if\relax\@currEmail\relax\else;\ \email{\@currEmail}\fi\if\relax\@currOrcid\relax\else,\ \orcid{\@currOrcid}\fi}}% 382 | } 383 | 384 | \renewcommand\author[4][]{% 385 | \ifnewaffil\addtocounter{affil}{1}% 386 | \edef\AB@thenote{\arabic{affil}}% 387 | \fi% 388 | \if\relax#1\relax\def\AB@note{\AB@thenote}\else\def\AB@note{#1}% 389 | \setcounter{Maxaffil}{0}\fi 390 | \ifnum\value{authors}=0\def\@firstauthor{#2}\fi 391 | \ifnum\value{authors}>1\relax 392 | \@namedef{@sep\number\c@authors}{\Authsep}\fi 393 | \addtocounter{authors}{1}% 394 | \begingroup 395 | \let\protect\@unexpandable@protect \let\and\AB@pand 396 | \def\thanks{\protect\thanks}\def\footnote{\protect\footnote}% 397 | \@temptokena=\expandafter{\AB@authors}% 398 | \@temptokenb=\expandafter{\AB@authors}% 399 | {\def\\{\protect\\[\@affilsep]\protect\Affilfont 400 | \protect\AB@resetsep}% 401 | \xdef\AB@author{\AB@blk@and#2}% 402 | \ifnewaffil\gdef\AB@las{}\gdef\AB@lasx{\protect\Authand}\gdef\AB@as{}% 403 | \xdef\AB@authors{\the\@temptokena\AB@blk@and}% 404 | \else 405 | \xdef\AB@authors{\the\@temptokena\AB@as\AB@au@str}% 406 | \global\let\AB@las\AB@lasx\gdef\AB@lasx{\protect\Authands}% 407 | \gdef\AB@as{\Authsep}% 408 | \fi 409 | \gdef\AB@au@str{#2}}% 410 | \@temptokena=\expandafter{\AB@authlist}% 411 | \@temptokenb=\expandafter{\@authlisthead}% 412 | \let\\=\authorcr 413 | \xdef\AB@authlist{\the\@temptokena 414 | \protect\@nameuse{@sep\number\c@authors}% 415 | \protect\Authfont#2\if\relax#4\relax\else\,\orcidlink{#4}\fi\AB@authnote{\AB@note}}% 416 | \xdef\@authlisthead{\the\@temptokenb 417 | \protect\@nameuse{@sep\number\c@authors}% 418 | \protect\Authfont#2}% 419 | \endgroup 420 | \ifnum\value{authors}>2\relax 421 | \@namedef{@sep\number\c@authors}{\Authands}\fi 422 | \ifcsundef{@emailsandorcids\AB@note}{\csgdef{@emailsandorcids\AB@note}{}}{}% 423 | \sbox\z@{\@tempcnta=0#1\relax}% 424 | \expandafter\ifdim\wd\z@>\z@\relax 425 | \multiaffil{#1}{#3}{#4} 426 | \else 427 | \ifcsundef{@emailsandorcids\AB@note}{\csgdef{@emailsandorcids\AB@note}{}}{}% 428 | \ifcsempty{@emailsandorcids\AB@note}% 429 | {\csgappto{@emailsandorcids\AB@note}{% 430 | \if\relax#3\relax\else\email{#3}\fi\if\relax#4\relax\else,\ \orcid{#4}\fi}}% 431 | {\csgappto{@emailsandorcids\AB@note}{% 432 | \if\relax#3\relax\else;\ \email{#3}\fi\if\relax#4\relax\else,\ \orcid{#4}\fi}}% 433 | \fi% 434 | \newaffilfalse 435 | } 436 | \renewcommand\@author{% 437 | \ifx\AB@affillist\AB@empty\AB@author\else 438 | \ifnum\value{affil}>\value{Maxaffil}\def\rlap##1{##1}% 439 | \AB@authlist\AB@affillist 440 | \else\AB@authors% 441 | \fi% 442 | \fi% 443 | } 444 | \renewcommand\affil[2][]{% 445 | \newaffiltrue\let\AB@blk@and\AB@pand 446 | \if\relax#1\relax\def\AB@note{\AB@thenote}\else\def\AB@note{#1}% 447 | \setcounter{Maxaffil}{0}\fi% 448 | \begingroup 449 | \let\protect\@unexpandable@protect 450 | \def\thanks{\protect\thanks}\def\footnotetext{\protect\footnotetext}% 451 | \@temptokena=\expandafter{\AB@authors}% 452 | {\def\\{\protect\\\protect\Affilfont}\xdef\AB@temp{#2}}% 453 | \xdef\AB@authors{\the\@temptokena\AB@las\AB@au@str 454 | \protect\\[\affilsep]\protect\Affilfont\AB@temp}% 455 | \gdef\AB@las{}\gdef\AB@au@str{}% 456 | {\def\\{, \ignorespaces}\xdef\AB@temp{#2}}% 457 | \@temptokena=\expandafter{\AB@affillist}% 458 | \xdef\AB@affillist{\the\@temptokena 459 | \footnotetext[\AB@note]{% 460 | \raggedright\AB@temp\ifcsempty{@emailsandorcids\AB@note}{}{, \csuse{@emailsandorcids\AB@note}}}% 461 | } 462 | \endgroup 463 | \setcounter{footnote}{#1} 464 | } 465 | \newcommand{\authorrunning}[1]{% 466 | \fancyhead[LE]{\hspace{0.05cm}\oldsmall\thepage\hspace{5pt}\ifanonymous\iflnienglish Anonymized for review\else Anonymisiert für Review\fi\else#1\fi}} 467 | \newcommand*{\email}[1]{\href{mailto:#1}{\urlstyle{same}\protect\nolinkurl{#1}}} 468 | \newcommand*{\orcid}[1]{% 469 | \unskip~\orcidlink{#1}\,\href{https://orcid.org/#1}{https://orcid.org/#1}}% 470 | \newcommand{\@lnidoi}{} 471 | \newcommand{\lnidoi}{% 472 | \begingroup\catcode`\_12 \lnidoi@i} 473 | \newcommand{\lnidoi@i}[1]{% 474 | \gdef\@lnidoi{#1}\endgroup} 475 | \renewcommand\maketitle{\par% 476 | \begingroup 477 | \renewcommand\thefootnote{\@arabic\c@footnote}% 478 | \if@twocolumn 479 | \ifnum \col@number=\@ne 480 | \@maketitle 481 | \else 482 | \twocolumn[\@maketitle]% 483 | \fi% 484 | \else 485 | \newpage 486 | \global\@topnum\z@% Prevents figures from going at top of page. 487 | \@maketitle 488 | \fi% 489 | \ifnorunningheads 490 | \thispagestyle{empty} 491 | \else 492 | \thispagestyle{plain} 493 | \fi% 494 | \@thanks 495 | \endgroup 496 | \HyXeTeX@CheckUnicode 497 | \HyPsd@PrerenderUnicode{\@authlisthead}% 498 | \ifanonymous\else\pdfstringdef\@pdfauthor{\@authlisthead}\fi% 499 | \HyXeTeX@CheckUnicode 500 | \HyPsd@PrerenderUnicode{\@title}% 501 | \pdfstringdef\@pdftitle{\@title}% 502 | \global\let\thanks\relax 503 | \global\let\maketitle\relax 504 | \global\let\@maketitle\relax 505 | \global\let\@thanks\@empty 506 | \global\let\@author\@empty 507 | \global\let\@date\@empty 508 | \global\let\@title\@empty 509 | \global\let\@subtitle\@empty 510 | \global\let\title\relax 511 | \global\let\author\relax 512 | \global\let\date\relax 513 | \global\let\and\relax 514 | } 515 | \def\@maketitle{% 516 | \newpage 517 | \null 518 | \begin{center}% 519 | \vskip -27pt% Abstand vor dem Titel 520 | \raggedright% Linksbündig 521 | \let\footnote\thanks 522 | {\Large\bfseries\@title\par}% 523 | \ifx\@subtitle\empty\vskip 9pt\else % Abstand nach dem Titel 524 | \ifx\@subtitle\undefined\vskip 9pt\else 525 | \vskip 9pt 526 | {\normalsize\bfseries\@subtitle}% 527 | \vskip 15pt% Abstand nach dem Titel 528 | \fi% 529 | \fi% 530 | {\normalsize% 531 | \lineskip .5em% 532 | \ifanonymous 533 | \iflnienglish 534 | Anonymized for review\footnote{placeholder for contact information} 535 | \else 536 | Anonymisiert für Review\footnote{Platzhalter für Kontaktinformationen} 537 | \fi% 538 | \else 539 | \@author 540 | \fi% 541 | \par}% 542 | \vskip 21pt% Abstand vor dem Abstract 543 | \end{center}% 544 | \AddToShipoutPictureBG*{\AtPageLowerLeft{% 545 | \put(\LenToUnit{\the\doihoffset},\LenToUnit{\the\doivoffset}){% 546 | \ifanonymous 547 | \else 548 | \ifdefempty{\@lnidoi}% 549 | {}% 550 | {\footnotesize\href{https://doi.org/\@lnidoi}{doi:\@lnidoi}} 551 | \fi% 552 | }% 553 | }}% 554 | \par 555 | }% 556 | \renewenvironment*{abstract}{% 557 | \renewcommand{\abstractname}{Abstract}% 558 | \small\noindent\ignorespaces{\bfseries\abstractname:\ }% 559 | }{\endquotation} 560 | \newif\ifkeywords 561 | \newenvironment{keywords}% 562 | {\global\keywordstrue\small% 563 | \def\and{\unskip,\space}% 564 | \vskip -2pt\noindent\ignorespaces{\bfseries Keywords:\ }}% 565 | {\global\keywordsfalse} 566 | \let\@RIGsection\section 567 | \pretocmd\@startsection{% 568 | \ifkeywords\ClassError{lni}% 569 | {keywords is an environment, not a macro}% 570 | {Please change \string\keywords\space to an environment}% 571 | \keywordsfalse% 572 | \fi% 573 | }{}{} 574 | \renewcommand{\section}{\@startsection{section}{1}{\z@}% 575 | {-16\p@ \@plus -4\p@ \@minus -4\p@}{5\p@ \@plus 4\p@ \@minus 576 | 4\p@}{\large\bfseries}} 577 | \renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}% 578 | {-16\p@ \@plus -4\p@ \@minus -4\p@}{8\p@ \@plus 4\p@ \@minus 579 | 4\p@}{\normalsize\bfseries}} 580 | \RequirePackage{caption} 581 | \DeclareCaptionFont{oldsmall}{\oldsmall} 582 | \captionsetup[figure]{style=base,skip=4pt,font=oldsmall} 583 | \captionsetup[table]{style=base,skip=6pt,font=oldsmall} 584 | \captionsetup[lstlisting]{style=base,skip=6pt,font=small} 585 | \setlength{\intextsep}{6pt}%Abstand nach der Grafik 586 | \def\fps@figure{htbp} 587 | \def\fnum@figure{\figurename~\thefigure} 588 | \def\@floatboxreset{% 589 | \reset@font 590 | \small 591 | \@setnobreak 592 | \@setminipage 593 | }% 594 | \setcounter{topnumber}{10}% maximale Anzahl gleitender Objekte am Seitenanfang 595 | \setcounter{bottomnumber}{10}% maximale Anzahl gleitender Objekte am Seitenende 596 | \renewcommand{\topfraction}{1.0}% Anteil den gleitende Objekte am Seitenanfang einnehmen dürfen 597 | \renewcommand{\bottomfraction}{1.0}% Anteil den gleitende Objekte am Seitenende einnehmen dürfen 598 | \def\fps@table{htbp} 599 | \def\fnum@table{\tablename~\thetable} 600 | \renewcommand{\arraystretch}{1.1} 601 | \setlength{\mathindent}{0.5cm} 602 | \RequirePackage{verbatim} 603 | \def\verbatim@processline{\hskip0.5cm\the\verbatim@line\par} 604 | \robustify{\footnote} 605 | \renewcommand\footnoterule{% 606 | \vfill\kern-3\p@ 607 | \hrule\@width 5cm 608 | \kern2.6\p@} 609 | \setlength{\parindent}{0pt} 610 | \setlength{\parskip}{8pt} 611 | \setlist{topsep=0pt,itemsep=7pt,parsep=-2pt,leftmargin=*} 612 | \setlist[itemize]{labelsep=0.70cm}%Abstand zur Aufzählungsnummer 613 | \setlist[itemize,1]{label=$\bullet$} 614 | \setlist[itemize,2]{topsep=9pt} 615 | \setlist[enumerate]{labelsep=0.60cm}%Einrückung des Aufzählungszeichens 616 | \setlist[enumerate,2]{label=\alph*),topsep=9pt} 617 | \newcommand{\andname}{} 618 | \addto\captionsngerman{% 619 | \renewcommand{\andname}{und}% 620 | \renewcommand{\figurename}{Abb.}% 621 | \renewcommand{\tablename}{Tab.}% 622 | \renewcommand{\lstlistingname}{List.}% 623 | \renewcommand{\refname}{Literaturverzeichnis}% 624 | }% 625 | \addto\captionsenglish{% 626 | \renewcommand{\andname}{and}% 627 | \renewcommand{\figurename}{Fig.}% 628 | \renewcommand{\tablename}{Tab.}% 629 | \renewcommand{\lstlistingname}{List.}% 630 | \renewcommand{\refname}{Bibliography}% 631 | }% 632 | \newcommand*{\startpage}[1]{\setcounter{page}{#1}} 633 | \def\@bookshorttitle{} 634 | \newcommand{\booktitle}{\@dblarg\@@booktitle} 635 | \def\@@booktitle[#1]#2{\gdef\@bookshorttitle{#1}\gdef\@booktitle{#2}} 636 | \newcommand{\booksubtitle}[1]{\gdef\@booksubtitle{#1}} 637 | \newcommand*{\@editor}{} 638 | \newcommand*{\editor}[1]{\renewcommand{\@editor}{#1}} 639 | \newcommand*{\@yearofpublication}{\the\year} 640 | \newcommand*{\yearofpublication}[1]{\renewcommand*{\@yearofpublication}{#1}} 641 | \fancypagestyle{plain}{% 642 | \fancyhead{} % Löscht alle Kopfzeileneinstellungen 643 | \fancyhead[RO]{% 644 | \small\@editor~(Hrsg.):\ 645 | \ifdefempty{\@bookshorttitle}% 646 | {}% 647 | {\@bookshorttitle,\hspace{1sp}}% 648 | \null\linebreak% 649 | Lecture Notes in Informatics (LNI), Gesellschaft für Informatik, 650 | Bonn~\@yearofpublication% 651 | \hspace{5pt}\thepage\hspace{0.05cm}% 652 | }% 653 | \fancyhead[LE]{% 654 | \small\@editor~(Hrsg.):\ 655 | \ifdefempty{\@bookshorttitle}% 656 | {}% 657 | {\@bookshorttitle,\hspace{1sp}}% 658 | \linebreak\hspace{0.05cm}\thepage\hspace{5pt} Lecture Notes 659 | in Informatics (LNI), Gesellschaft für Informatik, 660 | Bonn~\@yearofpublication% 661 | }% 662 | \fancyfoot{}% Löscht alle Fußzeileneinstellungen 663 | \renewcommand{\headrulewidth}{0.4pt}% Linie unter Kopfzeile 664 | }% 665 | \ifnorunningheads 666 | \pagestyle{empty} 667 | \else 668 | \pagestyle{fancy} 669 | \fancyhead{}% Löscht alle Kopfzeileneinstellungen 670 | \fancyhead[RO]{\small\@shorttitle\hspace{5pt}\thepage\hspace{0.05cm}} 671 | \fancyhead[LE]{\hspace{0.05cm}\small\thepage\hspace{5pt}\ifanonymous\iflnienglish Anonymized for review\else Anonymisiert für Review\fi\else\@authlisthead\fi} 672 | \fancyfoot{}% Löscht alle Fußzeileneinstellungen 673 | \renewcommand{\headrulewidth}{0.4pt} %Linie unter Kopfzeile 674 | \fi% 675 | \RequirePackage{url} 676 | \urlstyle{same} 677 | \g@addto@macro{\UrlBreaks}{\UrlOrds} 678 | \RequirePackage{xspace} 679 | \AddToHook{env/document/begin}[lni/loadhyperref]{% 680 | \RequirePackage[bookmarks=false]{hyperref} 681 | \hypersetup{% 682 | pdfdisplaydoctitle,% 683 | colorlinks=true,% 684 | allcolors=black,% 685 | pdfstartview=Fit,% 686 | }% 687 | \pdfstringdefDisableCommands{% 688 | \def\footnote#1{}% 689 | } 690 | \RequirePackage{orcidlink}% 691 | \RequirePackage[all]{hypcap}% 692 | }% 693 | \DeclareHookRule{env/document/begin}{lni/loadhyperref}{before}{biblatex} 694 | \ifusecleveref% 695 | \AtEndPreamble{% 696 | \iflnienglish 697 | \RequirePackage[capitalise,nameinlink]{cleveref} 698 | \crefname{section}{Sect.}{Sect.} 699 | \Crefname{section}{Sect.}{Sect.} 700 | \else 701 | \RequirePackage[ngerman,nameinlink]{cleveref} 702 | \fi% 703 | \crefname{figure}{\figurename}{\figurename} 704 | \Crefname{figure}{\figurename}{\figurename} 705 | \crefname{listing}{\lstlistingname}{\lstlistingname} 706 | \Crefname{listing}{\lstlistingname}{\lstlistingname} 707 | \crefname{table}{\tablename}{\tablename} 708 | \Crefname{table}{\tablename}{\tablename} 709 | }% 710 | \fi% 711 | \def\and{\texorpdfstring{\unskip\hspace{-0.42em},\hspace{.6em}}{, }}% 712 | \newcommand*{\lni@abbrv}[1]{#1\@\xspace} 713 | \newcommand*{\lniabbrv}[2]{\gdef#1{\lni@abbrv{#2}}} 714 | \newcommand*{\lni@initialism}[1]{\textsc{#1}\xspace} 715 | \newcommand*{\lniinitialism}[2]{\gdef#1{\lni@initialism{#2}}} 716 | \newcommand*{\ie}{\lni@abbrv{i.\,e.}} 717 | \newcommand*{\eg}{\lni@abbrv{e.\,g.}} 718 | \newcommand*{\cf}{\lni@abbrv{cf.}} 719 | \newcommand*{\etal}{\lni@abbrv{et~al.}} 720 | \newcommand*{\OMG}{\lni@initialism{omg}} 721 | \newcommand*{\BPM}{\lni@initialism{bpm}} 722 | \newcommand*{\BPMN}{\lni@initialism{bpmn}} 723 | \newcommand*{\BPEL}{\lni@initialism{bpel}} 724 | \newcommand*{\UML}{\lni@initialism{uml}} 725 | \renewenvironment{thebibliography}[1] 726 | {\iflnienglish\selectlanguage{english}\else\selectlanguage{ngerman}\fi 727 | \section*{\refname}% 728 | \bgroup\small% 729 | \list{\@biblabel{\@arabic\c@enumiv}}% 730 | {\settowidth\labelwidth{\@biblabel{#1}}% 731 | \leftmargin\labelwidth 732 | \advance\leftmargin\labelsep 733 | \@openbib@code 734 | \usecounter{enumiv}% 735 | \let\p@enumiv\@empty 736 | \renewcommand\theenumiv{\@arabic\c@enumiv}}% 737 | \sloppy 738 | \clubpenalty4000 739 | \@clubpenalty \clubpenalty 740 | \widowpenalty4000% 741 | \sfcode`\.\@m} 742 | {\def\@noitemerr 743 | {\@latex@warning{Empty `thebibliography' environment}}% 744 | \endlist\egroup} 745 | \frenchspacing 746 | \tolerance 1414 747 | \hbadness 1414 748 | \emergencystretch 1.5em 749 | \hfuzz 0.3pt 750 | \widowpenalty=10000 751 | \displaywidowpenalty=10000 752 | \clubpenalty=9999 753 | \interfootnotelinepenalty=9999 754 | \brokenpenalty=2000 755 | \vfuzz \hfuzz 756 | \raggedbottom 757 | %% 758 | %% Copyright (C) 2016-2025 by Gesellschaft für Informatik e.V. (GI) 759 | %% 760 | %% This work may be distributed and/or modified under the 761 | %% conditions of the LaTeX Project Public License (LPPL), either 762 | %% version 1.3c of this license or (at your option) any later 763 | %% version. The latest version of this license is in the file: 764 | %% 765 | %% http://www.latex-project.org/lppl.txt 766 | %% 767 | %% This work is "maintained" (as per LPPL maintenance status) by 768 | %% Martin Sievers. 769 | %% 770 | %% This work consists of the file lni.dtx 771 | %% lni.ins 772 | %% README.md 773 | %% CHANGELOG.md 774 | %% and the derived files lni.pdf 775 | %% lni.cls 776 | %% lni-author-template.tex 777 | %% lni-paper-example-de.bib 778 | %% lni-paper-example-de.tex 779 | %% 780 | %% End of file `lni.cls'. 781 | -------------------------------------------------------------------------------- /lni.dtx: -------------------------------------------------------------------------------- 1 | % \iffalse meta-comment 2 | %<*internal> 3 | \iffalse 4 | % 5 | %<*internal> 6 | \fi 7 | \def\nameofplainTeX{plain} 8 | \ifx\fmtname\nameofplainTeX\else 9 | \expandafter\begingroup 10 | \fi 11 | % 12 | %<*install> 13 | \input docstrip.tex 14 | \keepsilent 15 | \askforoverwritefalse 16 | \declarepreamble\classpre 17 | --------| ----------------------------------------------------------------- 18 | lni:| A class for submissions to the ``Lecture Notes in Informatics'' 19 | Author:| Martin Sievers 20 | Email:| martin.sievers@schoenerpublizieren.de 21 | License:| Released under the LaTeX Project Public License v1.3c or later 22 | See:| http://www.latex-project.org/lppl.txt 23 | --------| ----------------------------------------------------------------- 24 | \endpreamble 25 | 26 | \def\templatepre{% 27 | \perCent\space !TeX encoding = UTF-8^^J% 28 | \perCent\space !TeX program = pdflatex^^J% 29 | \perCent\space !BIB program = biber^^J% 30 | } 31 | 32 | \def\templatepreger{% 33 | \perCent\space !TeX encoding = UTF-8^^J% 34 | \perCent\space !TeX spellcheck = de_DE^^J% 35 | \perCent\space !BIB program = biber^^J% 36 | } 37 | 38 | \postamble 39 | 40 | Copyright (C) 2016-2025 by Gesellschaft für Informatik e.V. (GI) 41 | 42 | This work may be distributed and/or modified under the 43 | conditions of the LaTeX Project Public License (LPPL), either 44 | version 1.3c of this license or (at your option) any later 45 | version. The latest version of this license is in the file: 46 | 47 | http://www.latex-project.org/lppl.txt 48 | 49 | This work is "maintained" (as per LPPL maintenance status) by 50 | Martin Sievers. 51 | 52 | This work consists of the file lni.dtx 53 | lni.ins 54 | README.md 55 | CHANGELOG.md 56 | and the derived files lni.pdf 57 | lni.cls 58 | lni-author-template.tex 59 | lni-paper-example-de.bib 60 | lni-paper-example-de.tex 61 | \endpostamble 62 | 63 | \usedir{tex/latex/lni} 64 | \AddGenerationDate 65 | \generate{ 66 | \usepreamble\classpre 67 | \file{\jobname.cls}{\from{\jobname.dtx}{class}} 68 | } 69 | % 70 | %\endbatchfile 71 | %<*internal> 72 | %%%\usedir{source/latex/lni} 73 | %%%\generate{ 74 | %%%% \usepreamble\classpre 75 | %%% \file{\jobname.ins}{\from{\jobname.dtx}{install}} 76 | %%%} 77 | \nopreamble\nopostamble 78 | \usedir{doc/latex/lni} 79 | \generate{ 80 | \usepreamble\templatepre 81 | \file{lni-author-template.tex}{\from{\jobname.dtx}{template}} 82 | } 83 | \generate{ 84 | \file{lni-paper-example-de.bib}{\from{\jobname.dtx}{exampledebib}} 85 | } 86 | \generate{ 87 | \usepreamble\templatepreger 88 | \file{lni-paper-example-de.tex}{\from{\jobname.dtx}{exampledetex}} 89 | } 90 | \ifx\fmtname\nameofplainTeX 91 | \expandafter\endbatchfile 92 | \else 93 | \expandafter\endgroup 94 | \fi 95 | % 96 | % \fi 97 | % 98 | % \iffalse 99 | %<*driver> 100 | \ProvidesFile{lni.dtx} 101 | % 102 | %\NeedsTeXFormat{LaTeX2e}[1999/12/01] 103 | %\ProvidesClass{lni} 104 | %<*class> 105 | [2025/02/05 v2.0 Official class for submissions to the ``Lecture Notes 106 | in Informatics''] 107 | % 108 | %<*driver> 109 | \documentclass[a4paper]{ltxdoc} 110 | \usepackage[ngerman,english]{babel} 111 | \usepackage[utf8]{inputenc} 112 | \usepackage[T1]{fontenc} 113 | \usepackage{libertine} 114 | \usepackage[scaled=0.8]{beramono} 115 | \usepackage[% 116 | final,% 117 | tracking=smallcaps,% 118 | expansion=alltext,% 119 | protrusion=alltext-nott]{microtype}% 120 | \SetTracking{encoding=*,shape=sc}{50}% 121 | \usepackage{textcomp} 122 | \usepackage{upquote} 123 | \usepackage[final]{listings} 124 | \usepackage{csquotes} 125 | \usepackage[dvipsnames]{xcolor} 126 | \usepackage{hologo} 127 | \usepackage{dtxdescribe} 128 | \usepackage[% 129 | pdftitle={lni: Official LaTeX class for submissions to the ``Lecture Notes in 130 | Informatics'', published by the ``Gesellschaft für Informatik e.\,V.'' (GI)}, 131 | pdfauthor={Martin Sievers and Oliver Kopp}, 132 | urlcolor=blue,% 133 | linktoc=all,% 134 | colorlinks=true]{hyperref} 135 | \usepackage[nameinlink,capitalise]{cleveref} 136 | 137 | \DeclareFontFamily{U}{MnSymbolC}{} 138 | \DeclareSymbolFont{MnSyC}{U}{MnSymbolC}{m}{n} 139 | \DeclareFontShape{U}{MnSymbolC}{m}{n}{ 140 | <-6> MnSymbolC5 141 | <6-7> MnSymbolC6 142 | <7-8> MnSymbolC7 143 | <8-9> MnSymbolC8 144 | <9-10> MnSymbolC9 145 | <10-12> MnSymbolC10 146 | <12-> MnSymbolC12% 147 | }{} 148 | \DeclareMathSymbol{\powerset}{\mathord}{MnSyC}{180} 149 | 150 | \newcommand{\lni}{\texttt{lni}} 151 | \newcommand{\LNI}{\emph{Lecture Notes in Informatics}} 152 | \lstset{ 153 | basicstyle = \small\ttfamily, 154 | gobble = 2, 155 | keywordstyle = \color{blue}\bfseries, 156 | language = [LaTeX]{TeX}, 157 | moretexcs = {, 158 | addbibresource,authorrunning,% 159 | email,lnidoi,affil, 160 | ExecuteBibliographyOptions,includegraphics,printbibliography, 161 | } 162 | frame = single, 163 | backgroundcolor = \color{yellow!60}, 164 | framesep = 5pt, 165 | literate={Ö}{{\"O}}1 {Ä}{{\"A}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1 {ü}{{\"u}}1 {ä}{{\"a}}1 {ö}{{\"o}}1 166 | }% 167 | \lstnewenvironment{examplecode}[1][] 168 | {\lstset{#1}} 169 | {} 170 | \providecommand*\env[1]{\texttt{#1}} 171 | \providecommand*\file[1]{\texttt{#1}} 172 | \providecommand*\opt[1]{\texttt{#1}} 173 | \providecommand*\pkg[1]{\textsf{#1}} 174 | \OnlyDescription %nur Anleitung (ohne Index und History) 175 | \CodelineIndex %kein Index wenn auskommentiert 176 | \EnableCrossrefs %kein Index wenn auskommentiert 177 | \RecordChanges %keine History wenn auskommentiert 178 | \begin{document} 179 | \DocInput{\jobname.dtx} 180 | \end{document} 181 | % 182 | % \fi 183 | % \CheckSum{0} 184 | % \CharacterTable 185 | % {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 186 | % 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 187 | % Digits \0\1\2\3\4\5\6\7\8\9 188 | % Exclamation \! Double quote \" Hash (number) \# 189 | % Dollar \$ Percent \% Ampersand \& 190 | % Acute accent \' Left paren \( Right paren \) 191 | % Asterisk \* Plus \+ Comma \, 192 | % Minus \- Point \. Solidus \/ 193 | % Colon \: Semicolon \; Less than \< 194 | % Equals \= Greater than \> Question mark \? 195 | % Commercial at \@ Left bracket \[ Backslash \\ 196 | % Right bracket \] Circumflex \^ Underscore \_ 197 | % Grave accent \` Left brace \{ Vertical bar \| 198 | % Right brace \} Tilde \~} 199 | % 200 | % \changes{v1.0}{2017/04/07}{Official release of revised version} 201 | % \changes{v1.1}{2017/04/08}{Added macros \cs{subtitle} and keyword delimiter 202 | % \cs{add}} 203 | % \changes{v1.1}{2017/04/08}{Fixed bug with \cs{Crefname}} 204 | % \changes{v1.1}{2017/04/08}{Updated documentation and bundle structure} 205 | % \changes{v1.1}{2017/04/12}{Changed spacing for \cs{subtitle}} 206 | % \changes{v1.1}{2017/04/18}{Added check for ngerman-x-latest patterns} 207 | % \changes{v1.1}{2017/04/19}{Added option \opt{crop}} 208 | % \changes{v1.2}{2017/04/26}{Set option \opt{straighquotes} for \pkg{newtxtt} 209 | % manually to gain compatibility with version prior to v1.05} 210 | % \changes{v1.2}{2017/04/27}{Added \pkg{iftex} to check for pdflatex} 211 | % \changes{v1.2}{2017/05/04}{Added (partial) support for XeTeX and LuaTeX} 212 | % \changes{v1.3}{2017/05/04}{Added option \opt{nofonts} to suppress font 213 | % loading completely} 214 | % \changes{v1.3}{2017/05/08}{Changed syntax for \pkg{fontspec}} 215 | % \changes{v1.4}{2017/05/27}{Added new macros taken from the EMISA class file} 216 | % \changes{v1.4}{2017/05/27}{Added option \opt{oldfonts} to use a font package 217 | % available} 218 | % \changes{v1.4}{2017/07/26}{Added package \pkg{caption} and changed all 219 | % \cs{fontsize} calls to nativ \LaTeX{} macros} 220 | % \changes{v1.4}{2017/09/11}{Fixed basewidth for \env{lstlistings}} 221 | % \changes{v1.4}{2017/09/29}{Fixed font size for \cs{Large}} 222 | % \changes{v1.4}{2017/11/08}{Added full example for an article in German} 223 | % \changes{v1.4}{2017/11/08}{Adapting captions of \env{lstlistings}} 224 | % \changes{v1.4}{2017/11/08}{Fix font size bug regarding the running header 225 | % and the captions: \cs{small} was redefined, so we need an \cs{oldsmall} here} 226 | % \changes{v1.5}{2018/09/11}{Postpone loading of \pkg{cleveref}} 227 | % \changes{v1.5}{2018/09/11}{Load \pkg{textcomp} by default and add option 228 | % \opt{upquote} to \pkg{listings}} 229 | % \changes{v1.5}{2019/02/13}{Fix layout for English texts} 230 | % \changes{v1.5}{2019/02/13}{Changed \cs{refname} for English texts} 231 | % \changes{v1.5}{2019/02/20}{New option \opt{norunningheads}} 232 | % \changes{v1.6}{2019/04/18}{\cs{email} now generates a mailto: hyperlink} 233 | % \changes{v1.6}{2019/04/23}{Global options are passed to article class} 234 | % \changes{v1.6}{2019/09/14}{New macro \cs{booksubtitle}} 235 | % \changes{v1.6}{2019/09/14}{Add option `driver=none` to `geometry` for better 236 | % crop results} 237 | % \changes{v1.6}{2019/09/14}{\cs{booktitle} now uses an optional argument for 238 | % shorttitle} 239 | % \changes{v1.6}{2019/09/14}{New macro \cs{booksubtitle}} 240 | % \changes{v1.6}{2019/09/14}{\pkg{hypcap} is only loaded if \pkg{hyperref} 241 | % has been loaded before.} 242 | % \changes{v1.6}{2019/09/14}{\pkg{hyperref} is loaded without options to make 243 | % it more compatible with other packages like \pkg{authorarchive}} 244 | % \changes{v1.6}{2019/10/14}{Fix for BibTeX style} 245 | % \changes{v1.6}{2019/10/14}{Add support for \pkg{selnolig}} 246 | % \changes{v1.7}{2020/12/03}{Revert redefinition of \cs{year} after 247 | % \cs{maketitle}} 248 | % \changes{v1.7}{2021/03/02}{Fix setting of pdf metadata (#87)} 249 | % \changes{v1.7}{2021/03/02}{Change loading of latest ngerman hyphenation 250 | % patterns (#47)} 251 | % \changes{v1.7}{2021/03/02}{Change \cs{year} to \cs{yearofpublication} to 252 | % avoid problems (#85)} 253 | % \changes{v1.8}{2022/06/10}{Improvements for documentation} 254 | % \changes{v1.8}{2022/06/10}{Fix output error in bst files (#97)} 255 | % \changes{v1.8}{2022/11/25}{Make class compatable with latest publisher requirements (#121)} 256 | % \changes{v1.8}{2022/11/25}{Make usage of `hyperref` mandatory (#131)} 257 | % \changes{v1.9}{2024/07/01}{Support multiple affiliations (#158)} 258 | % \changes{v1.10}{2024/07/01}{Change font for URLs to text font and change footnote numbers to superscript} 259 | % \changes{v1.10}{2024/07/23}{Fix support multiple affiliations (#173)} 260 | % \changes{v1.11BETA}{2024/09/06}{Fix left margin for lists in theorems (#175)} 261 | % \changes{v2.0}{2025/02/05}{Remove BiBTeX support (#144)} 262 | % 263 | % \GetFileInfo{\jobname.dtx} 264 | % \DoNotIndex{\newcommand,\newenvironment} 265 | % 266 | % \title{\textsf{lni} -- Official class for submissions to the\\% 267 | % ``Lecture Notes in Informatics''\thanks{This file describes version 268 | % \fileversion, last revised \filedate.}} 269 | % \author{Martin Sievers\setcounter{footnote}{6}\thanks{Email: 270 | % martin.sievers@schoenerpublizieren.de}} 271 | % \date{Released \filedate} 272 | % 273 | % \maketitle 274 | % 275 | % \begin{abstract} 276 | % \noindent After several years the \lni{} bundle has been updated. The 277 | % resulting new version fixes some long-standing bugs, solves problems and 278 | % supports modern packages like \pkg{biblatex} and \pkg{microtype}. It has been 279 | % put into one DTX file to make maintaining and distributing via CTAN a bit 280 | % easier. 281 | % \end{abstract} 282 | % 283 | % \section{Introduction} 284 | % \LaTeX{} templates are often long-lasting. Even if they use meanwhile 285 | % deprecated packages they are often passed from one generation of authors to 286 | % the next. 287 | % 288 | % The Gesellschaft für Informatik~e.\,V. (GI) thankfully realized, that their 289 | % bundle should be technologically 290 | % modernized while the general layout remains the same. 291 | % 292 | % Based on the existing class and bib files I set-up a DTX file and started 293 | % reworking the source code. Editors and authors suggested different additions 294 | % and changes, which I tried to incorporate without changing the existing 295 | % mechanisms too much. 296 | % 297 | % There is an additional package 298 | % \href{https://github.com/gi-ev/biblatex-lni}{\pkg{biblatex-lni}} for an easy 299 | % way of getting a correctly formed bibliography. This package is automatically used with v2.0 onwards. 300 | % See \cref{sec:bibliography} for 301 | % more information. 302 | % 303 | % \section{Installation} 304 | % The \lni{} bundle is currently distributed via 305 | % \href{https://github.com/gi-ev/LNI}{GitHub} and (preferably) \href{https://www.ctan.org/pkg/lni}{CTAN}. 306 | % The later is the basis for all updates of the two main \TeX{} distributions 307 | % \MiKTeX{} and \TeX{}~Live. Thus the easiest way to get all files needed to 308 | % typeset an article for the \LNI{} is to use the package manager of your 309 | % distribution. 310 | % 311 | % For a manual installation please call \texttt{pdflatex lni.dtx} at least 312 | % twice and 313 | % copy all resulting files (cls, tex and pdf) to your local TEXMF tree. 314 | % Don't forget to update your file name database. 315 | % 316 | % \section{Usage} 317 | % To use the predefined layout for a (German) submission to the \LNI{} just 318 | % load the class file as usual with \cs{documentclass\{lni\}}. 319 | % 320 | % The class file loads a bunch of packages which are all part of modern \TeX{} 321 | % distributions. Therefore, if you are confronted 322 | % with a missing package, please try to download and install it using your 323 | % distribution's package manager. Alternatively go to 324 | % \href{http://www.ctan.org}{CTAN} to download missing packages. 325 | % 326 | % The \lni{} class can be used with \hologo{pdfLaTeX} as well as with 327 | % \hologo{XeLaTeX} and \hologo{LuaLaTeX}. To achieve same results, the 328 | % Type1-based packages \pkg{newtxtext}, \pkg{newtxmath} and \pkg{newtxtt} 329 | % are used even for the unicode engines. 330 | % 331 | % \subsection{Options}\label{sec:options} 332 | % Although the class file includes all layout information for a submission to 333 | % the \LNI{}, there are options to adapt the output one way or another. 334 | % 335 | % \DescribeOption{english}A document loading the \lni{} class file uses German 336 | % language adoptions by default. To switch to English, just load the class with 337 | % option \opt{english}. 338 | % 339 | % The language influences not only the hyphenation patterns and terms used in 340 | % the text, but also the choice of a corresponding \BibTeX{} file 341 | % (cf.~\cref{sec:bibliography}). 342 | % 343 | % \DescribeOption{utf8 (deprecated in v1.8)}\DescribeOption{latin1 (deprecated in v1.8)}% 344 | % \DescribeOption{applemac (deprecated in v1.8)}Although 345 | % nowadays all major plattforms support and widely use UTF-8 encoding for 346 | % text files, there might be some need to change the input encoding the 347 | % \LaTeX{} document uses. 348 | % 349 | % This can be achieved by giving one of the options \opt{utf8} (which is the 350 | % default), \opt{latin1} or \opt{applemac} to the document class. Using UTF-8 351 | % is strongly recommended. Please note, that currently the bib file is supposed 352 | % to use the same encoding. 353 | % 354 | % \DescribeOption{crop (new in v1.1)}% 355 | % Option \opt{crop} gives you some crop marks (using the package \pkg{crop}) to 356 | % better illustrate the final 357 | % result of your article. 358 | % 359 | % \DescribeOption{nocleveref}When referencing figures, one has to type 360 | % \texttt{Figure\textasciitilde}\cs{ref\marg{label}}. The package \pkg{cleveref} 361 | % reduces the effort by offering the command \cs{cref\marg{label}}. This can be 362 | % used with all floating objects. The package is loaded as default. In case it 363 | % causes issues, one can disable it using with the \opt{nocleveref} option. 364 | % 365 | % \DescribeOption{nohyperref (deprecated in v1.8)}\pkg{hyperref} is used for colored hyperlinks 366 | % within the articles. If you consider problems or just do not want that 367 | % feature, you can disable it by using the option \opt{nohyperref}. 368 | % 369 | % \DescribeOption{nofonts (deprecated in v1.4)}On old systems 370 | % you might not have installed the New TX fonts. If for whatever reason the 371 | % \opt{oldfonts} option 372 | % does not work for you, you can activate option \opt{nofonts}. This allows to 373 | % suppress font loading completely using the engines standard fonts instead. 374 | % Usually there should be no need to do so. Please note, that your output will 375 | % differ from the publishers'. 376 | % 377 | % \DescribeOption{oldfonts (deprecated in v1.8)}On older systems you might not 378 | % have installed the New TX fonts. Therefore option \opt{oldfonts} allows to 379 | % to load the package \pkg{mathptmx} instead of the New TX fonts. The output 380 | % will be in accordance to (or at least near) the publisher's requirements. 381 | % 382 | % \DescribeOption{norunningheads (deprecated in v1.8)}By default there are no more 383 | % running headers from your document. 384 | % 385 | % \DescribeOption{runningheads (new in v1.8)}Editors can turn on the running headers 386 | % using option \opt{runningheads}. 387 | % 388 | % \DescribeOption{anonymous (new in v1.8)}To easily anonymize a paper for 389 | % blind review, use this option. Then all author information will be replaced 390 | % with a placeholder. Additionally, there is a new macro \cs{anon\marg{hide in review}} 391 | % which will be replaced with ``ANONYMIZED'' if the option is set. 392 | % Also, \cs{anon\oarg{for review}\marg{for final version}} can be used that outputs ``for review'' 393 | % if the option is set, and ``for final version'' otherwise. 394 | % 395 | % \newpage 396 | % \section{Setting up a document} 397 | % You can use the file \file{lni-author-template.tex} as a starting point 398 | % for setting up a document for submission. The \lni{} class uses the standard 399 | % ways to build an article. A larger German example can be found in \file{lni-paper-example-de.tex} 400 | % 401 | % \subsection{Special meta comments}\label{sec:metadata} 402 | % There is not just one \enquote{\TeX} and one \enquote{bibliography tool}, but 403 | % many different ways to transform a .tex file into a PDF. 404 | % Some \TeX{} editors like \texttt{TeXstudio}, \texttt{TeXmaker} and 405 | % \texttt{TeXshop} support a special set of meta comments to give some 406 | % information, how to deal with a concrete document. 407 | % 408 | % A typical example looks like: 409 | % \begin{examplecode} 410 | % % !TeX program = pdflatex 411 | % % !BIB program = biber 412 | % % !TeX encoding = UTF-8 413 | % % !TeX spellcheck = en_US 414 | % \documentclass[english]{lni} 415 | % \end{examplecode} 416 | % 417 | % \subsection{Special macros for editors} 418 | % \DescribeMacro{\startpage}\DescribeMacro{\editor}% 419 | % \DescribeMacro{\booktitle\space(changed in v1.6)}% 420 | % \DescribeMacro{\booksubtitle\space(new in v1.6)}% 421 | % \DescribeMacro{\yearofpublication\space(new in v1.7)}In addition to the macros stated in 422 | % \cref{sec:titlepage} for authors, there are special editor macros to 423 | % influence the layout of the article: 424 | % \begin{itemize} 425 | % \item\cs{startpage} determines the starting page of the article. This 426 | % should always be an odd (right) page. 427 | % \item\cs{editor} states the name of the editor(s) 428 | % \item\cs{booktitle} holds the name of a conference (optional argument for 429 | % a short title used in the running headers) 430 | % \item\cs{booksubtitle} holds an optional subtitle of a conference 431 | % \item\cs{yearofpublication} can be used to set the year of publication 432 | % \end{itemize} 433 | % 434 | % \subsection{Title page}\label{sec:titlepage} 435 | % \DescribeMacro{\title}% 436 | % \DescribeMacro{\subtitle\space(new in v1.1)}% 437 | % The title of your work is given using the \cs{title} macro. In addition to 438 | % the title itself, you can add a short title to be used 439 | % in the header of a page: 440 | % \begin{examplecode}[label={lst:title}] 441 | % \title[Short title]{Title} 442 | % \end{examplecode} 443 | % 444 | % You can also add a subtitle by \cs{subtitle\marg{subtitle}}. 445 | % 446 | % \DescribeMacro{\author}\DescribeMacro{\email}\DescribeMacro{\footnote\space(deprecated in v1.8)}% 447 | % \DescribeMacro{\and\space(deprecated in v1.8)}\DescribeMacro{\affil}% 448 | % The authors of an article are 449 | % given using an extended \cs{author} macro, which holds not only the name, but also 450 | % email adress and ORCID iD. Moreover the affiliation marker (number) is given as an optional 451 | % argument. Affiliations are added with 452 | % \cs{affil\oarg{number}\marg{information}} where you can use 453 | % \texttt{\textbackslash\textbackslash} to split the address. 454 | % \begin{examplecode}[label={lst:author}] 455 | % \author[1,2]{Firstname1 Lastname1}{firstname1.lastname1@affiliation1.org}{0000-0000-0000-0000} 456 | % \author[2]{Firstname2 Lastname2}{firstname2.lastname2@affiliation2.org}{0000-0000-0000-0000} 457 | % \author[3]{Firstname3 Lastname3}{firstname3.lastname3@affiliation1.org}{0000-0000-0000-0000} 458 | % \author[1]{Firstname4 Lastname4}{firstname4.lastname4@affiliation1.org}{0000-0000-0000-0000}% 459 | % \affil[1]{Universität 1\\Abteilung\\Straße\\Postleitzahl Ort\\Land} 460 | % \affil[2]{University 2 \\Department\\Address\\Country} 461 | % \affil[3]{University 3\\Department\\Address\\Country} 462 | % \end{examplecode} 463 | % 464 | % Leave the third and/or fourth argument empty if there is no email address and/or ORCID iD. 465 | % Finally \cs{maketitle} will output the formatted title page. 466 | % 467 | % \DescribeMacro{\lnidoi\space(new in v1.2)}% 468 | % LNI provides a DOI for each paper. In case, the DOI is known, it can be 469 | % specified using the \cs{lnidoi} macro. 470 | % \begin{examplecode}[label={lst:lnidoi}] 471 | % \lnidoi{18.18420/se2016_01} 472 | % \end{examplecode} 473 | % 474 | % Finally \cs{maketitle} will output the formatted title page. 475 | % 476 | % \subsection{Abstract and keywords} 477 | % \DescribeEnv{abstract}\DescribeEnv{keywords}% 478 | % \DescribeMacro{\and\space(new in v1.1)}% 479 | % Each article should start with a short (70 to 150 words) abstract and some 480 | % keywords. Please use the environments \env{abstract} and \env{keywords} for 481 | % that purpose: 482 | % \begin{examplecode} 483 | % \begin{abstract} 484 | % Tell the reader what your article is about 485 | % \end{abstract} 486 | % \begin{keywords} 487 | % Give some keywords to categorize your article. You can use \and between two 488 | % keywords to get the correct delimiter (comma plus space) automatically. 489 | % \end{keywords} 490 | % \end{examplecode} 491 | % 492 | % \subsection{Main text} 493 | % \subsubsection{Headings} 494 | % \DescribeMacro{\section}\DescribeMacro{\subsection}% 495 | % \DescribeMacro{\subsubsection} 496 | % You can use the standard macros \cs{section}, \cs{subsection}, \dots{} for 497 | % sectioning your text. 498 | % 499 | % \subsubsection{Footnotes} 500 | % \DescribeMacro{\footnote}% 501 | % For adding a footnote, just use \cs{footnote\marg{footnote text}} where 502 | % needed. Please note, that the footnote counter is automatically set to the 503 | % correct value at the beginning of your text, i.\,e. it respects the number 504 | % of affiliations given on the title page. 505 | % 506 | % \subsubsection{Lists} 507 | % \DescribeEnv{itemize}\DescribeEnv{enumerate}% 508 | % The \lni{} class redefines the standard lists environments \env{itemize} and 509 | % \env{enumerate} to meet the requirements of the \LNI{}. 510 | % 511 | % Lists can be filled as usual by adding \cs{item} macros. 512 | % 513 | % \subsubsection{Floating objects} 514 | % \DescribeEnv{figure}\DescribeEnv{table}% 515 | % The environments \env{figure} and \env{table} can be used the standard way to 516 | % include graphics or tables resp. 517 | % 518 | % However, please note, that the default placement parameters are changed to 519 | % \opt{htbp} by the class \lni{}. If you need some local adjustment, please use 520 | % the optional argument of both environments (cf.~Listing~\ref{lst:figure}). 521 | % 522 | % \DescribeMacro{\caption}\DescribeMacro{\label} 523 | % A caption should be added by \cs{caption\marg{caption text}}, followed 524 | % immediately by a \cs{label\marg{unique label}} entry. 525 | % \begin{examplecode}[label={lst:figure}] 526 | % \begin{figure}[tb] 527 | % \includegraphics{...} 528 | % \caption{...} 529 | % \label{...} 530 | % \end{figure} 531 | % \end{examplecode} 532 | % 533 | % If you want to center floats, please \emph{do not} use the \env{center} 534 | % environment, but the macro \cs{centering}, which does not add extra white 535 | % space (cf.~Listing~\ref{lst:table}). 536 | % \begin{examplecode}[label={lst:table}] 537 | % \begin{table} 538 | % \centering 539 | % \begin{tabular}{lll} 540 | % ... 541 | % \end{tabular} 542 | % \caption{...} 543 | % \label{...} 544 | % \end{table} 545 | % \end{examplecode} 546 | % 547 | % \subsubsection{\texorpdfstring{Listings\,/\,Source code}% 548 | % {Listings/Source code}} 549 | % The \lni{} bundle loads the \pkg{verbatim} and \pkg{listings} package. While 550 | % the former is there for compatability, the later is the standard way of 551 | % integrating source code listings into a \LaTeX{} document. 552 | % 553 | % However, there are currently no config files shipped with the \lni{} bundle. 554 | % Please consult the documentation for help on setting up \pkg{listings} for a 555 | % specific programming language. 556 | % 557 | % \subsubsection{Math} 558 | % For writing mathematics the package \pkg{amsmath} is already loaded by default. 559 | % In addtion you can load e.g. \pkg{mathtools} for 560 | % additional features. The \lni{} class offers by default the command 561 | % \cs{powerset} to render the powerset symbol correctly as $\powerset$ and not 562 | % as Weierstrass p ($\wp$). 563 | % 564 | % \subsubsection{Abbreviations and initialisms} 565 | % \DescribeMacro{\eg}\DescribeMacro{\ie}\DescribeMacro{\cf}% 566 | % \DescribeMacro{\etal}% 567 | % To achieve consistent typesetting of common abbreviations, macros are 568 | % predefined by the class. These macros should \emph{consistently} being used 569 | % instead of writing the plain version. For example use \verb|\eg| rather than 570 | % {\verb|e.g.,|}. The macros take care of spacing within and after the 571 | % abbreviations. 572 | % \begin{itemize} 573 | % \item \cs{eg} for e.\,g. 574 | % \item \cs{ie} for i.\,e. 575 | % \item \cs{cf} for cf. 576 | % \item \cs{etal} for et~al. 577 | % \end{itemize} 578 | % 579 | % \DescribeMacro{\OMG}\DescribeMacro{\BPM}\DescribeMacro{\BPMN}\DescribeMacro{\UML}% 580 | % In addition to common abbreviations, further initialisms are provided by the 581 | % class for convenience and for a consistent visual appearance. Note that the 582 | % class uses \textsc{smallcaps} for typesetting initialisms. The list of 583 | % predefined initialisms comprises: 584 | % 585 | % \begin{itemize} 586 | % \item \cs{OMG} for \textsc{omg} (Object Management Group). 587 | % \item \cs{BPM} for \textsc{bpm} (Business Process Management). 588 | % \item \cs{BPMN} for \textsc{bpmn} (Business Process Model and Notation). 589 | % \item \cs{BPEL} for \textsc{bpel} (Business Process Execution Language). 590 | % \item \cs{UML} for \textsc{uml} (Unified Modelling Language). 591 | % \end{itemize} 592 | % 593 | % \DescribeMacro{\lniinitialism} You can add your own initialisms by stating 594 | % \cs{lniinitialism\marg{\textbackslash initialism\_macro}\marg{text}} in the 595 | % preamble. 596 | % 597 | % \subsection{Bibliography}\label{sec:bibliography} 598 | % The \lni{} class uses BibLaTeX for and the 599 | % \href{https://github.com/gi-ev/biblatex-lni}{\pkg{biblatex-lni}}. 600 | % However, you have to add information on the bib 601 | % file(s) in your preamble using \cs{addbibresource\marg{Bib file(s)}} and call 602 | % \cs{printbibliography} where you want the bibliography to appear. 603 | % 604 | % Please note, that the \lni{} class sets 605 | % \texttt{biber} as the default bibliography tool. \texttt{biber} is part of 606 | % both major \TeX{} distributions and can easily be used within most \TeX{} 607 | % editors, e.\,g. by using special meta data as described in 608 | % \cref{sec:metadata}. 609 | % 610 | % If you want to pass settings to \pkg{biblatex} you can use a config 611 | % file \texttt{biblatex.cfg}, for additional options please use the macro 612 | % \cs{ExecuteBibliographyOptions}. Please consult the 613 | % \href{http://texdoc.net/pkg/biblatex}{package's documentation} for 614 | % more information. 615 | % \begin{examplecode} 616 | % % !TeX program = pdflatex 617 | % % !BIB program = biber 618 | % \documentclass{lni} 619 | % ... 620 | % \ExecuteBibliographyOptions{...} 621 | % \addbibresource{FILENAME.bib} 622 | % ... 623 | % \begin{document} 624 | % ... 625 | % \printbibliography 626 | % ... 627 | % \end{document} 628 | % \end{examplecode} 629 | % 630 | % \section{Trouble shooting} 631 | % This section lists the most common issues when using this template. For more 632 | % help, please head to 633 | % \href{https://github.com/egeerardyn/awesome-LaTeX/blob/master/README.md}% 634 | % {the awesome \LaTeX{} list}. 635 | % 636 | % \begin{itemize} 637 | % \item If the compiler error is\\ 638 | % \texttt{!pdfTeX error (font expansion): auto 639 | % expansion is only possible with scalable fonts.},\\% 640 | % then you have to install the 641 | % \pkg{cm-super} package. Afterwards, run \texttt{initexmf --mkmaps} on the 642 | % command line. A longer discussion is available at 643 | % \url{http://tex.stackexchange.com/a/324972/9075}. 644 | % \item If the compiler error is\\ 645 | % \texttt{!LaTeX Error: Command \textbackslash 646 | % openbox already defined.},\\ 647 | % insert\\ 648 | % \cs{let}\cs{openbox}\cs{relax} before \cs{usepackage\{amsthm\}}. 649 | % \item If the compiler error is\\ 650 | % \texttt{!Undefined control sequence. l.84 651 | % \textbackslash ulp@afterend},\\ 652 | % just clean up (remove \texttt{paper.aux}) and recompile. 653 | % \end{itemize} 654 | % 655 | % \section{Bugs and feature request} 656 | % If you find a bug or have a feature request, please open an ``issue'' at the 657 | % \href{https://github.com/gi-ev/LNI/issues}{GitHub website}. 658 | % 659 | % \StopEventually{^^A 660 | % \PrintChanges 661 | % \PrintIndex 662 | % } 663 | % 664 | % \section{Implementation} 665 | % 666 | % \begin{macrocode} 667 | %<*class> 668 | % \end{macrocode} 669 | % We have to make sure, that pdf is always written (arXiv's requirements) 670 | % \begin{macrocode} 671 | \RequirePackage{iftex}\ifluatex\else\pdfoutput=1\fi% 672 | % \end{macrocode} 673 | % \begin{macrocode} 674 | \def\@clearglobaloption#1{% 675 | \def\@tempa{#1}% 676 | \def\@tempb{\@gobble}% 677 | \@for\next:=\@classoptionslist\do 678 | {\ifx\next\@tempa 679 | \message{Cleared option \next\space from global list}% 680 | \else 681 | \edef\@tempb{\@tempb,\next}% 682 | \fi}% 683 | \let\@classoptionslist\@tempb 684 | \expandafter\ifx\@tempb\@gobble 685 | \let\@classoptionslist\@empty 686 | \fi} 687 | % 688 | \DeclareOption{latin1}{% 689 | \PassOptionsToPackage{latin1}{inputenc} 690 | \ClassNoteNoLine{lni}{The option `latin1` will be removed from the class with the next major release}} 691 | \DeclareOption{utf8}{% 692 | \PassOptionsToPackage{utf8}{inputenc} 693 | \ClassNoteNoLine{lni}{The option `utf8` will be removed from the class with the next major release as it is the only valid value}} 694 | \DeclareOption{ansinew}{% 695 | \PassOptionsToPackage{ansinew}{inputenc} 696 | \ClassNoteNoLine{lni}{The option `ansinew` will be removed from the class with the next major release}} 697 | \newif\iflnienglish 698 | \lnienglishfalse 699 | \DeclareOption{english}{\lnienglishtrue\@clearglobaloption{english}} 700 | \newif\ifusehyperref 701 | \usehyperreftrue 702 | \DeclareOption{nohyperref}{% 703 | \ClassWarningNoLine{lni}{The option `nohyperref` has been deactivated and will be removed from the class with the next major release}} 704 | \newif\ifusecleveref 705 | \useclevereftrue 706 | \DeclareOption{nocleveref}{\useclevereffalse} 707 | \newif\ifcrop 708 | \cropfalse 709 | \DeclareOption{crop}{\croptrue} 710 | \newif\ifnofonts 711 | \nofontsfalse 712 | \DeclareOption{nofonts}{% 713 | \nofontstrue\autofontsfalse 714 | \ClassNoteNoLine{lni}{The option `nofonts` will be removed from the class with the next major release}} 715 | \newif\ifoldfonts 716 | \oldfontsfalse 717 | \DeclareOption{oldfonts}{% 718 | \oldfontstrue\autofontsfalse 719 | \ClassNoteNoLine{lni}{The option `oldfonts` will be removed from the class with the next major release}} 720 | \newif\ifautofonts 721 | \autofontstrue 722 | \newif\ifnorunningheads 723 | \DeclareOption{norunningheads}{% 724 | \norunningheadstrue 725 | \ClassNoteNoLine{lni}{The option `norunningheads` will be removed from the class with the next major release}} 726 | \newif\ifrunningheads 727 | \DeclareOption{runningheads}{\norunningheadsfalse} 728 | \newif\ifanonymous 729 | \anonymousfalse 730 | \DeclareOption{anonymous}{\anonymoustrue} 731 | \newcommand{\anon}[2][\iflnienglish ANONYMIZED\else ANONYMISIERT\fi]{% 732 | \ifanonymous% 733 | {\color{orange}#1}% 734 | \else% 735 | #2% 736 | \fi} 737 | \ExecuteOptions{utf8,norunningheads} 738 | \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} 739 | \ProcessOptions\relax 740 | % \end{macrocode} 741 | % \changes{v1.8}{2023/11/06}{Fix option handling for \opt{fleqn}} 742 | % \begin{macrocode} 743 | \PassOptionsToPackage{fleqn}{amsmath} 744 | \LoadClass[10pt,twoside,a4paper]{article} 745 | \ifPDFTeX 746 | \RequirePackage{cmap} 747 | \RequirePackage{inputenc} 748 | \RequirePackage[T1]{fontenc} 749 | \RequirePackage[full]{textcomp} 750 | \fi% 751 | % 752 | \iflnienglish 753 | \RequirePackage[ngerman,english]{babel} 754 | \else 755 | \RequirePackage[english,ngerman]{babel} 756 | \babelprovide[hyphenrules=ngerman-x-latest]{ngerman} 757 | \ClassInfo{lni}{Using latest German hyphenation patterns}% 758 | \fi% 759 | % Hint by http://tex.stackexchange.com/a/321067/9075 -> enable "= as dashes 760 | \useshorthands*{"} 761 | \addto\extrasenglish{\languageshorthands{ngerman}} 762 | % \end{macrocode} 763 | % Define a modern variant of Times as the main font 764 | % \begin{macrocode} 765 | \ifautofonts 766 | \ClassInfo{lni}{*******************************************************} 767 | \MessageBreak 768 | \ClassInfo{lni}{Checking for fonts ...} 769 | \ClassInfo{lni}{*******************************************************} 770 | \ifPDFTeX 771 | \IfFileExists{newtxtext.sty} 772 | {% 773 | \RequirePackage[defaultsups]{newtxtext} 774 | \RequirePackage{newtxmath} 775 | \RequirePackage[zerostyle=b,scaled=.9]{newtxtt} 776 | % \end{macrocode} 777 | % For compatibility with version of \pkg{newtxtt} prior to v1.05 we set the 778 | % option \opt{straightquotes} manually for recent versions 779 | % \begin{macrocode} 780 | \@ifpackagelater{newtxtt}{2014/11/18}% 781 | {\txtt@upqtrue}% 782 | {\ClassWarning{lni}{You are using an old version of 783 | `newtxtt'.\MessageBreak 784 | Option `straightquotes' will not be used!}}% 785 | % \end{macrocode} 786 | % \begin{macrocode} 787 | }% 788 | {\IfFileExists{mathptmx.sty} 789 | {\oldfontstrue}% 790 | {\nofontstrue}% 791 | }% 792 | % \end{macrocode} 793 | % for \hologo{XeTeX} or \hologo{LuaTeX} we use \pkg{fontspec} 794 | % \begin{macrocode} 795 | \else% 796 | \IfFileExists{newtxmath.sty} 797 | {\RequirePackage{newtxmath}}% 798 | {}% 799 | \RequirePackage[no-math]{fontspec} 800 | \IfFontExistsTF{texgyretermes-regular.otf} 801 | {% 802 | \setmainfont{texgyretermes}[ 803 | Extension = .otf, 804 | UprightFont = *-regular, 805 | BoldFont = *-bold, 806 | ItalicFont = *-italic, 807 | BoldItalicFont = *-bolditalic, 808 | Ligatures=TeX 809 | ] 810 | }% 811 | {\IfFileExists{mathptmx.sty} 812 | {\oldfontstrue}% 813 | {\nofontstrue}% 814 | }% 815 | \fi% 816 | \fi% 817 | \ifoldfonts 818 | \RequirePackage{mathptmx} 819 | \else% 820 | \ifnofonts % nofonts activated 821 | \ClassWarning{lni}{Option `nofonts' set! I will use standard fonts 822 | \MessageBreak 823 | instead of the New TX fonts. Your document will NOT look like the 824 | \MessageBreak 825 | final result for publication. This should only be used if you have 826 | \MessageBreak 827 | no possibility to install fonts or upgrade your TeX installation!}% 828 | \fi% 829 | \fi% 830 | % \begin{macrocode} 831 | \ifPDFTeX 832 | \RequirePackage[% 833 | final,% 834 | tracking=smallcaps,% 835 | expansion=alltext,% 836 | protrusion=alltext-nott]{microtype}% 837 | \else 838 | \RequirePackage[% 839 | final,% 840 | protrusion=alltext-nott]{microtype}% 841 | % \end{macrocode} 842 | % When using \hologo{LuaLaTeX} we can activate \pkg{selnolig} 843 | % \begin{macrocode} 844 | \ifluatex 845 | \iflnienglish 846 | \RequirePackage[english]{selnolig}% 847 | \else 848 | \RequirePackage[ngerman]{selnolig}% 849 | \fi% 850 | \fi% 851 | \fi% 852 | \SetTracking{encoding=*,shape=sc}{50}% 853 | % \end{macrocode} 854 | % Introduce \cs{powerset} - hint by \url{http://matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=136492&post_id=997377} 855 | % \begin{macrocode} 856 | \DeclareFontFamily{U}{MnSymbolC}{} 857 | \DeclareSymbolFont{MnSyC}{U}{MnSymbolC}{m}{n} 858 | \DeclareFontShape{U}{MnSymbolC}{m}{n}{ 859 | <-6> MnSymbolC5 860 | <6-7> MnSymbolC6 861 | <7-8> MnSymbolC7 862 | <8-9> MnSymbolC8 863 | <9-10> MnSymbolC9 864 | <10-12> MnSymbolC10 865 | <12-> MnSymbolC12% 866 | }{} 867 | \DeclareMathSymbol{\powerset}{\mathord}{MnSyC}{180} 868 | % \end{macrocode} 869 | % \changes{v1.8}{2023/11/06}{Remove support for ccicons} 870 | % \begin{macrocode} 871 | % Support for \cs{ifdefempty} 872 | \RequirePackage{etoolbox} 873 | % \end{macrocode} 874 | % \begin{macrocode} 875 | \newlength{\doihoffset} 876 | \newlength{\doivoffset} 877 | \ifcrop 878 | \RequirePackage[ 879 | paperheight=23.5cm,paperwidth=15.5cm, 880 | total={12.6cm,19.2cm}, 881 | includehead, 882 | headheight=20.39pt, 883 | headsep=.31cm, 884 | centering, 885 | driver=none] 886 | {geometry} 887 | \RequirePackage[a4,center,cam,info]{crop} 888 | \renewcommand*\CROP@@info{{% 889 | \global\advance\CROP@index\@ne 890 | \def\x{\discretionary{}{}{\hbox{\kern.5em---\kern.5em}}}% 891 | \advance\paperwidth-20\p@ 892 | \dimen@4pt 893 | \ifx\CROP@pagecolor\@empty 894 | \else 895 | \advance\dimen@\CROP@overlap 896 | \fi 897 | \hb@xt@\z@{% 898 | \hss 899 | \vbox to\z@{% 900 | \centering 901 | \hsize\paperwidth 902 | \vss 903 | \normalfont 904 | \normalsize 905 | \expandafter\csname\CROP@font\endcsname{% 906 | ``\jobname''\x 907 | \the\year/\the\month/\the\day\x 908 | \CROP@time\x 909 | page\kern.5em\thepage\x 910 | \#\the\CROP@index 911 | \strut 912 | }% 913 | \vskip\dimen@ 914 | }% 915 | \hss 916 | }% 917 | }}% 918 | \setlength{\doihoffset}{1.45cm} 919 | \setlength{\doivoffset}{1.2cm} 920 | \else 921 | \RequirePackage[ 922 | total={12.6cm,19.2cm}, 923 | includehead, 924 | headheight=20.39pt, 925 | headsep=.31cm, 926 | centering] 927 | {geometry} 928 | \setlength{\doihoffset}{4.2cm} 929 | \setlength{\doivoffset}{4.3cm} 930 | \fi% 931 | % \end{macrocode} 932 | % We change \cs{small} and \cs{Large} to get the correct baseline skips and add 933 | % an \cs{oldsmall} 934 | % \begin{macrocode} 935 | \let\oldsmall\small% 936 | \renewcommand\small{% 937 | \@setfontsize\small\@ixpt{10}% 938 | \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ 939 | \abovedisplayshortskip \z@ \@plus2\p@ 940 | \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ 941 | \def\@listi{\leftmargin\leftmargini 942 | \topsep 4\p@ \@plus2\p@ \@minus2\p@ 943 | \parsep 2\p@ \@plus\p@ \@minus\p@ 944 | \itemsep \parsep}% 945 | \belowdisplayskip \abovedisplayskip 946 | } 947 | \renewcommand\Large{\@setfontsize\Large{14}{17}} 948 | % \end{macrocode} 949 | % \begin{macrocode} 950 | \RequirePackage[autostyle]{csquotes} 951 | \RequirePackage[% 952 | backend=biber,% UTF-8 support 953 | date=year, 954 | style=LNI, % The GI style - see https://www.ctan.org/pkg/biblatex-lni 955 | natbib=true % Required for \Citet 956 | ]{biblatex}[2016-09-15]% at least version 3.6 of biblatex is required. 957 | % \end{macrocode} 958 | % \begin{macro}{\citeauthor} 959 | % \begin{macrocode} 960 | % Enable hyperlinked authors when using \citeauthor 961 | % Source: http://tex.stackexchange.com/a/75916/9075 962 | \DeclareCiteCommand{\citeauthor}% 963 | {\boolfalse{citetracker}% 964 | \boolfalse{pagetracker}% 965 | \usebibmacro{prenote}}% 966 | {\ifciteindex% 967 | {\indexnames{labelname}}% 968 | {}% 969 | \printtext[bibhyperref]{\printnames{labelname}}}% 970 | {\multicitedelim}% 971 | {\usebibmacro{postnote}}% 972 | % \end{macrocode} 973 | % \end{macro} 974 | % \changes{v1.8}{2023/11/06}{Load \pkg{amsmath} explicitly by default (was implicitly done before)} 975 | % \begin{macrocode} 976 | \RequirePackage{amsmath} 977 | \RequirePackage{etoolbox} 978 | \RequirePackage{graphicx} 979 | \RequirePackage{eso-pic} 980 | \RequirePackage{grffile} 981 | \RequirePackage{fancyhdr} 982 | \RequirePackage{listings} 983 | \RequirePackage{enumitem} 984 | \RequirePackage[hang]{footmisc} 985 | \setlength{\footnotemargin}{1em} 986 | \long\def\@makefntext#1{% 987 | \def\@makefnmark{\rlap{\normalfont\textsuperscript{\@thefnmark}}}% 988 | \ifFN@hangfoot 989 | \bgroup 990 | \setbox\@tempboxa\hbox{% 991 | \ifdim\footnotemargin>0pt 992 | \hb@xt@\footnotemargin{\@makefnmark\hss}% 993 | \else 994 | \@makefnmark 995 | \fi 996 | }% 997 | \leftmargin\wd\@tempboxa 998 | \rightmargin\z@ 999 | \linewidth \columnwidth 1000 | \advance \linewidth -\leftmargin 1001 | \parshape \@ne \leftmargin \linewidth 1002 | \@totalleftmargin \leftmargin 1003 | \footnotesize 1004 | \@setpar{{\@@par}}% 1005 | \leavevmode 1006 | \llap{\box\@tempboxa}% 1007 | \parskip\hangfootparskip\relax 1008 | \parindent\hangfootparindent\relax 1009 | \else 1010 | \parindent1em 1011 | \noindent 1012 | \ifdim\footnotemargin>\z@ 1013 | \hb@xt@ \footnotemargin{\hss\@makefnmark}% 1014 | \else 1015 | \ifdim\footnotemargin=\z@ 1016 | \llap{\@makefnmark}% 1017 | \else 1018 | \llap{\hb@xt@ -\footnotemargin{\@makefnmark\hss}}% 1019 | \fi 1020 | \fi 1021 | \fi 1022 | \footnotelayout#1% 1023 | \ifFN@hangfoot 1024 | \par\egroup 1025 | \fi 1026 | } 1027 | % \end{macrocode} 1028 | % We fix the basewidth for lstlistings: 1029 | % The default setting of listings with ``fixed columns'' has a space 0.6em 1030 | % wide, while the characters in TX Typewriter (as in Computer Modern 1031 | % Typewriter) are 0.5em wide. 1032 | % Source: https://tex.stackexchange.com/a/179072/9075 1033 | % \begin{macrocode} 1034 | \lstset{% 1035 | basicstyle=\ttfamily,% 1036 | columns=fixed,% 1037 | basewidth=.5em,% 1038 | xleftmargin=0.5cm,% 1039 | captionpos=b,% 1040 | upquote}% 1041 | % \end{macrocode} 1042 | % Ragged bottom -- verhindert die Ausdehnung der Seite = Veränderung der 1043 | % Abstände 1044 | % \begin{macrocode} 1045 | \def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil 1046 | \global\let\@textbottom\relax}} 1047 | % \end{macrocode} 1048 | % Seitenzahlen -- Größe der Box 1049 | % \begin{macrocode} 1050 | \renewcommand\@pnumwidth{3em} 1051 | \renewcommand\@tocrmarg{3.5em} 1052 | \def\@dottedtocline#1#2#3#4#5{% 1053 | \ifnum #1>\c@tocdepth \else 1054 | \vskip \z@ \@plus.2\p@ 1055 | {\leftskip #2\relax \rightskip \@tocrmarg \advance\rightskip by 0pt plus 2cm 1056 | \parfillskip -\rightskip \pretolerance=10000 1057 | \parindent #2\relax\@afterindenttrue 1058 | \interlinepenalty\@M 1059 | \leavevmode 1060 | \@tempdima #3\relax 1061 | \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip 1062 | {#4}\nobreak 1063 | \leaders\hbox{$\m@th 1064 | \mkern \@dotsep mu\hbox{.}\mkern \@dotsep 1065 | mu$}\hfill 1066 | \nobreak 1067 | \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}% 1068 | \par}% 1069 | \fi} 1070 | % \end{macrocode} 1071 | % \begin{macro}{\title} 1072 | % \begin{macrocode} 1073 | \renewcommand{\title}{\@dblarg\@@title} 1074 | \def\@@title[#1]#2{% 1075 | \gdef\@shorttitle{#1}\gdef\@title{#2}} 1076 | % \end{macrocode} 1077 | % \end{macro} 1078 | % \begin{macro}{\subtitle} 1079 | % \begin{macrocode} 1080 | \newcommand{\subtitle}[1]{\gdef\@subtitle{#1}} 1081 | % \end{macrocode} 1082 | % \end{macro} 1083 | % \begin{macro}{\author} 1084 | % \begin{macrocode} 1085 | \RequirePackage{authblk} 1086 | \newcommand{\@authlisthead}{} 1087 | \newtoks\@temptokenb 1088 | \newtoks\@temptokenc 1089 | \renewcommand\Authsep{, } 1090 | \renewcommand\Authands{\iflanguage{ngerman}{ und }{, and }} 1091 | \renewcommand\Authand{\iflanguage{ngerman}{ und }{ and }} 1092 | \NewDocumentCommand{\multiaffil}{ >{\SplitList{,}} m m m}{% 1093 | \gdef\@currEmail{#2} 1094 | \gdef\@currOrcid{#3} 1095 | \ProcessList{#1}{\@multiaffil} 1096 | } 1097 | 1098 | \newcommand{\@multiaffil}[1]{% 1099 | \ifcsundef{@emailsandorcids#1}{\csgdef{@emailsandorcids#1}{}}{}% 1100 | \ifcsempty{@emailsandorcids#1}% 1101 | {\protected@csxappto{@emailsandorcids#1}{% 1102 | \if\relax\@currEmail\relax\else\email{\@currEmail}\fi\if\relax\@currOrcid\relax\else,\ \orcid{\@currOrcid}\fi}}% 1103 | {\protected@csxappto{@emailsandorcids#1}{% 1104 | \if\relax\@currEmail\relax\else;\ \email{\@currEmail}\fi\if\relax\@currOrcid\relax\else,\ \orcid{\@currOrcid}\fi}}% 1105 | } 1106 | 1107 | \renewcommand\author[4][]{% 1108 | \ifnewaffil\addtocounter{affil}{1}% 1109 | \edef\AB@thenote{\arabic{affil}}% 1110 | \fi% 1111 | \if\relax#1\relax\def\AB@note{\AB@thenote}\else\def\AB@note{#1}% 1112 | \setcounter{Maxaffil}{0}\fi 1113 | \ifnum\value{authors}=0\def\@firstauthor{#2}\fi 1114 | \ifnum\value{authors}>1\relax 1115 | \@namedef{@sep\number\c@authors}{\Authsep}\fi 1116 | \addtocounter{authors}{1}% 1117 | \begingroup 1118 | \let\protect\@unexpandable@protect \let\and\AB@pand 1119 | \def\thanks{\protect\thanks}\def\footnote{\protect\footnote}% 1120 | \@temptokena=\expandafter{\AB@authors}% 1121 | \@temptokenb=\expandafter{\AB@authors}% 1122 | {\def\\{\protect\\[\@affilsep]\protect\Affilfont 1123 | \protect\AB@resetsep}% 1124 | \xdef\AB@author{\AB@blk@and#2}% 1125 | \ifnewaffil\gdef\AB@las{}\gdef\AB@lasx{\protect\Authand}\gdef\AB@as{}% 1126 | \xdef\AB@authors{\the\@temptokena\AB@blk@and}% 1127 | \else 1128 | \xdef\AB@authors{\the\@temptokena\AB@as\AB@au@str}% 1129 | \global\let\AB@las\AB@lasx\gdef\AB@lasx{\protect\Authands}% 1130 | \gdef\AB@as{\Authsep}% 1131 | \fi 1132 | \gdef\AB@au@str{#2}}% 1133 | \@temptokena=\expandafter{\AB@authlist}% 1134 | \@temptokenb=\expandafter{\@authlisthead}% 1135 | \let\\=\authorcr 1136 | \xdef\AB@authlist{\the\@temptokena 1137 | \protect\@nameuse{@sep\number\c@authors}% 1138 | \protect\Authfont#2\if\relax#4\relax\else\,\orcidlink{#4}\fi\AB@authnote{\AB@note}}% 1139 | \xdef\@authlisthead{\the\@temptokenb 1140 | \protect\@nameuse{@sep\number\c@authors}% 1141 | \protect\Authfont#2}% 1142 | \endgroup 1143 | \ifnum\value{authors}>2\relax 1144 | \@namedef{@sep\number\c@authors}{\Authands}\fi 1145 | \ifcsundef{@emailsandorcids\AB@note}{\csgdef{@emailsandorcids\AB@note}{}}{}% 1146 | \sbox\z@{\@tempcnta=0#1\relax}% 1147 | \expandafter\ifdim\wd\z@>\z@\relax 1148 | \multiaffil{#1}{#3}{#4} 1149 | \else 1150 | \ifcsundef{@emailsandorcids\AB@note}{\csgdef{@emailsandorcids\AB@note}{}}{}% 1151 | \ifcsempty{@emailsandorcids\AB@note}% 1152 | {\csgappto{@emailsandorcids\AB@note}{% 1153 | \if\relax#3\relax\else\email{#3}\fi\if\relax#4\relax\else,\ \orcid{#4}\fi}}% 1154 | {\csgappto{@emailsandorcids\AB@note}{% 1155 | \if\relax#3\relax\else;\ \email{#3}\fi\if\relax#4\relax\else,\ \orcid{#4}\fi}}% 1156 | \fi% 1157 | \newaffilfalse 1158 | } 1159 | \renewcommand\@author{% 1160 | \ifx\AB@affillist\AB@empty\AB@author\else 1161 | \ifnum\value{affil}>\value{Maxaffil}\def\rlap##1{##1}% 1162 | \AB@authlist\AB@affillist 1163 | \else\AB@authors% 1164 | \fi% 1165 | \fi% 1166 | } 1167 | \renewcommand\affil[2][]{% 1168 | \newaffiltrue\let\AB@blk@and\AB@pand 1169 | \if\relax#1\relax\def\AB@note{\AB@thenote}\else\def\AB@note{#1}% 1170 | \setcounter{Maxaffil}{0}\fi% 1171 | \begingroup 1172 | \let\protect\@unexpandable@protect 1173 | \def\thanks{\protect\thanks}\def\footnotetext{\protect\footnotetext}% 1174 | \@temptokena=\expandafter{\AB@authors}% 1175 | {\def\\{\protect\\\protect\Affilfont}\xdef\AB@temp{#2}}% 1176 | \xdef\AB@authors{\the\@temptokena\AB@las\AB@au@str 1177 | \protect\\[\affilsep]\protect\Affilfont\AB@temp}% 1178 | \gdef\AB@las{}\gdef\AB@au@str{}% 1179 | {\def\\{, \ignorespaces}\xdef\AB@temp{#2}}% 1180 | \@temptokena=\expandafter{\AB@affillist}% 1181 | \xdef\AB@affillist{\the\@temptokena 1182 | \footnotetext[\AB@note]{% 1183 | \raggedright\AB@temp\ifcsempty{@emailsandorcids\AB@note}{}{, \csuse{@emailsandorcids\AB@note}}}% 1184 | } 1185 | \endgroup 1186 | \setcounter{footnote}{#1} 1187 | } 1188 | % \end{macrocode} 1189 | % \end{macro} 1190 | % \begin{macro}{\authorrunning} 1191 | % \begin{macrocode} 1192 | \newcommand{\authorrunning}[1]{% 1193 | \fancyhead[LE]{\hspace{0.05cm}\oldsmall\thepage\hspace{5pt}\ifanonymous\iflnienglish Anonymized for review\else Anonymisiert für Review\fi\else#1\fi}} 1194 | % \end{macrocode} 1195 | % \end{macro} 1196 | % \begin{macro}{\email} 1197 | % \begin{macrocode} 1198 | \newcommand*{\email}[1]{\href{mailto:#1}{\urlstyle{same}\protect\nolinkurl{#1}}} 1199 | % \end{macrocode} 1200 | % \end{macro} 1201 | % \begin{macro}{\orcid} 1202 | % \begin{macrocode} 1203 | \newcommand*{\orcid}[1]{% 1204 | \unskip~\orcidlink{#1}\,\href{https://orcid.org/#1}{https://orcid.org/#1}}% 1205 | % \end{macrocode} 1206 | % \end{macro} 1207 | % \begin{macro}{\lnidoi} 1208 | % \begin{macrocode} 1209 | \newcommand{\@lnidoi}{} 1210 | \newcommand{\lnidoi}{% 1211 | \begingroup\catcode`\_12 \lnidoi@i} 1212 | \newcommand{\lnidoi@i}[1]{% 1213 | \gdef\@lnidoi{#1}\endgroup} 1214 | % \end{macrocode} 1215 | % \end{macro} 1216 | % \begin{macrocode} 1217 | \renewcommand\maketitle{\par% 1218 | \begingroup 1219 | \renewcommand\thefootnote{\@arabic\c@footnote}% 1220 | \if@twocolumn 1221 | \ifnum \col@number=\@ne 1222 | \@maketitle 1223 | \else 1224 | \twocolumn[\@maketitle]% 1225 | \fi% 1226 | \else 1227 | \newpage 1228 | \global\@topnum\z@% Prevents figures from going at top of page. 1229 | \@maketitle 1230 | \fi% 1231 | \ifnorunningheads 1232 | \thispagestyle{empty} 1233 | \else 1234 | \thispagestyle{plain} 1235 | \fi% 1236 | \@thanks 1237 | \endgroup 1238 | \HyXeTeX@CheckUnicode 1239 | \HyPsd@PrerenderUnicode{\@authlisthead}% 1240 | \ifanonymous\else\pdfstringdef\@pdfauthor{\@authlisthead}\fi% 1241 | \HyXeTeX@CheckUnicode 1242 | \HyPsd@PrerenderUnicode{\@title}% 1243 | \pdfstringdef\@pdftitle{\@title}% 1244 | \global\let\thanks\relax 1245 | \global\let\maketitle\relax 1246 | \global\let\@maketitle\relax 1247 | \global\let\@thanks\@empty 1248 | \global\let\@author\@empty 1249 | \global\let\@date\@empty 1250 | \global\let\@title\@empty 1251 | \global\let\@subtitle\@empty 1252 | \global\let\title\relax 1253 | \global\let\author\relax 1254 | \global\let\date\relax 1255 | \global\let\and\relax 1256 | } 1257 | % \end{macrocode} 1258 | % \begin{macrocode} 1259 | \def\@maketitle{% 1260 | \newpage 1261 | \null 1262 | \begin{center}% 1263 | \vskip -27pt% Abstand vor dem Titel 1264 | \raggedright% Linksbündig 1265 | \let\footnote\thanks 1266 | {\Large\bfseries\@title\par}% 1267 | \ifx\@subtitle\empty\vskip 9pt\else % Abstand nach dem Titel 1268 | \ifx\@subtitle\undefined\vskip 9pt\else 1269 | \vskip 9pt 1270 | {\normalsize\bfseries\@subtitle}% 1271 | \vskip 15pt% Abstand nach dem Titel 1272 | \fi% 1273 | \fi% 1274 | {\normalsize% 1275 | \lineskip .5em% 1276 | \ifanonymous 1277 | \iflnienglish 1278 | Anonymized for review\footnote{placeholder for contact information} 1279 | \else 1280 | Anonymisiert für Review\footnote{Platzhalter für Kontaktinformationen} 1281 | \fi% 1282 | \else 1283 | \@author 1284 | \fi% 1285 | \par}% 1286 | \vskip 21pt% Abstand vor dem Abstract 1287 | \end{center}% 1288 | % output DOI (if it exists) 1289 | \AddToShipoutPictureBG*{\AtPageLowerLeft{% 1290 | \put(\LenToUnit{\the\doihoffset},\LenToUnit{\the\doivoffset}){% 1291 | \ifanonymous 1292 | \else 1293 | \ifdefempty{\@lnidoi}% 1294 | {}% 1295 | {\footnotesize\href{https://doi.org/\@lnidoi}{doi:\@lnidoi}} 1296 | \fi% 1297 | }% 1298 | }}% 1299 | \par 1300 | }% 1301 | % \end{macrocode} 1302 | % \begin{environment}{abstract} 1303 | % \begin{macrocode} 1304 | \renewenvironment*{abstract}{% 1305 | \renewcommand{\abstractname}{Abstract}% 1306 | \small\noindent\ignorespaces{\bfseries\abstractname:\ }% 1307 | }{\endquotation} 1308 | % \end{macrocode} 1309 | % \end{environment} 1310 | % \changes{v1.8}{2023/11/06}{Change delimiter to comma} 1311 | % \begin{environment}{keywords} 1312 | % \begin{macrocode} 1313 | \newif\ifkeywords 1314 | \newenvironment{keywords}% 1315 | {\global\keywordstrue\small% 1316 | \def\and{\unskip,\space}% 1317 | \vskip -2pt\noindent\ignorespaces{\bfseries Keywords:\ }}% 1318 | {\global\keywordsfalse} 1319 | \let\@RIGsection\section 1320 | \pretocmd\@startsection{% 1321 | \ifkeywords\ClassError{lni}% 1322 | {keywords is an environment, not a macro}% 1323 | {Please change \string\keywords\space to an environment}% 1324 | \keywordsfalse% 1325 | \fi% 1326 | }{}{} 1327 | % \end{macrocode} 1328 | % \end{environment} 1329 | % Section headings 1330 | % \begin{macrocode} 1331 | \renewcommand{\section}{\@startsection{section}{1}{\z@}% 1332 | {-16\p@ \@plus -4\p@ \@minus -4\p@}{5\p@ \@plus 4\p@ \@minus 1333 | 4\p@}{\large\bfseries}} 1334 | \renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}% 1335 | {-16\p@ \@plus -4\p@ \@minus -4\p@}{8\p@ \@plus 4\p@ \@minus 1336 | 4\p@}{\normalsize\bfseries}} 1337 | % \end{macrocode} 1338 | % Bildunterschriften 1339 | % \begin{macrocode} 1340 | \RequirePackage{caption} 1341 | \DeclareCaptionFont{oldsmall}{\oldsmall} 1342 | \captionsetup[figure]{style=base,skip=4pt,font=oldsmall} 1343 | \captionsetup[table]{style=base,skip=6pt,font=oldsmall} 1344 | \captionsetup[lstlisting]{style=base,skip=6pt,font=small} 1345 | \setlength{\intextsep}{6pt}%Abstand nach der Grafik 1346 | % \end{macrocode} 1347 | % Take care of floats 1348 | % \begin{macrocode} 1349 | \def\fps@figure{htbp} 1350 | \def\fnum@figure{\figurename~\thefigure} 1351 | \def\@floatboxreset{% 1352 | \reset@font 1353 | \small 1354 | \@setnobreak 1355 | \@setminipage 1356 | }% 1357 | \setcounter{topnumber}{10}% maximale Anzahl gleitender Objekte am Seitenanfang 1358 | \setcounter{bottomnumber}{10}% maximale Anzahl gleitender Objekte am Seitenende 1359 | \renewcommand{\topfraction}{1.0}% Anteil den gleitende Objekte am Seitenanfang einnehmen dürfen 1360 | \renewcommand{\bottomfraction}{1.0}% Anteil den gleitende Objekte am Seitenende einnehmen dürfen 1361 | % \end{macrocode} 1362 | % Tables 1363 | % \begin{macrocode} 1364 | \def\fps@table{htbp} 1365 | \def\fnum@table{\tablename~\thetable} 1366 | \renewcommand{\arraystretch}{1.1} 1367 | % \end{macrocode} 1368 | % Indention for equations with fleqn option 1369 | % \begin{macrocode} 1370 | \setlength{\mathindent}{0.5cm} 1371 | % \end{macrocode} 1372 | % Indention for verbatim listings 1373 | % \begin{macrocode} 1374 | \RequirePackage{verbatim} 1375 | \def\verbatim@processline{\hskip0.5cm\the\verbatim@line\par} 1376 | % \end{macrocode} 1377 | % \begin{macrocode} 1378 | \robustify{\footnote} 1379 | % \end{macrocode} 1380 | % Set rule width und correct size 1381 | % \begin{macrocode} 1382 | \renewcommand\footnoterule{% 1383 | \vfill\kern-3\p@ 1384 | \hrule\@width 5cm 1385 | \kern2.6\p@} 1386 | % \end{macrocode} 1387 | % \begin{macrocode} 1388 | \setlength{\parindent}{0pt} 1389 | \setlength{\parskip}{8pt} 1390 | % \end{macrocode} 1391 | % Set symbols and spacings for itemize 1392 | % \begin{macrocode} 1393 | \setlist{topsep=0pt,itemsep=7pt,parsep=-2pt,leftmargin=*} 1394 | \setlist[itemize]{labelsep=0.70cm}%Abstand zur Aufzählungsnummer 1395 | \setlist[itemize,1]{label=$\bullet$} 1396 | \setlist[itemize,2]{topsep=9pt} 1397 | % \end{macrocode} 1398 | % and numbered lists 1399 | % \begin{macrocode} 1400 | \setlist[enumerate]{labelsep=0.60cm}%Einrückung des Aufzählungszeichens 1401 | \setlist[enumerate,2]{label=\alph*),topsep=9pt} 1402 | % \end{macrocode} 1403 | % \begin{macro}{\andname} 1404 | % \begin{macrocode} 1405 | \newcommand{\andname}{} 1406 | % \end{macrocode} 1407 | % \end{macro} 1408 | % \begin{macrocode} 1409 | \addto\captionsngerman{% 1410 | \renewcommand{\andname}{und}% 1411 | \renewcommand{\figurename}{Abb.}% 1412 | \renewcommand{\tablename}{Tab.}% 1413 | \renewcommand{\lstlistingname}{List.}% 1414 | \renewcommand{\refname}{Literaturverzeichnis}% 1415 | }% 1416 | % \end{macrocode} 1417 | % \begin{macrocode} 1418 | \addto\captionsenglish{% 1419 | \renewcommand{\andname}{and}% 1420 | \renewcommand{\figurename}{Fig.}% 1421 | \renewcommand{\tablename}{Tab.}% 1422 | \renewcommand{\lstlistingname}{List.}% 1423 | \renewcommand{\refname}{Bibliography}% 1424 | }% 1425 | % \end{macrocode} 1426 | % \begin{macro}{\startpage} 1427 | % \begin{macrocode} 1428 | \newcommand*{\startpage}[1]{\setcounter{page}{#1}} 1429 | % \end{macrocode} 1430 | % \end{macro} 1431 | % \begin{macro}{\booktitle} 1432 | % \begin{macrocode} 1433 | \def\@bookshorttitle{} 1434 | \newcommand{\booktitle}{\@dblarg\@@booktitle} 1435 | \def\@@booktitle[#1]#2{\gdef\@bookshorttitle{#1}\gdef\@booktitle{#2}} 1436 | % \end{macrocode} 1437 | % \end{macro} 1438 | % \begin{macro}{\booksubtitle} 1439 | \newcommand{\booksubtitle}[1]{\gdef\@booksubtitle{#1}} 1440 | % \end{macro} 1441 | % \begin{macro}{\editor} 1442 | % \begin{macrocode} 1443 | \newcommand*{\@editor}{} 1444 | \newcommand*{\editor}[1]{\renewcommand{\@editor}{#1}} 1445 | % \end{macrocode} 1446 | % \end{macro} 1447 | % \begin{macrocode} 1448 | \newcommand*{\@yearofpublication}{\the\year} 1449 | \newcommand*{\yearofpublication}[1]{\renewcommand*{\@yearofpublication}{#1}} 1450 | % \end{macrocode} 1451 | % set-up for header and footer 1452 | % \begin{macrocode} 1453 | \fancypagestyle{plain}{% 1454 | \fancyhead{} % Löscht alle Kopfzeileneinstellungen 1455 | \fancyhead[RO]{% 1456 | \small\@editor~(Hrsg.):\ 1457 | \ifdefempty{\@bookshorttitle}% 1458 | {}% 1459 | {\@bookshorttitle,\hspace{1sp}}% 1460 | \null\linebreak% 1461 | Lecture Notes in Informatics (LNI), Gesellschaft für Informatik, 1462 | Bonn~\@yearofpublication% 1463 | \hspace{5pt}\thepage\hspace{0.05cm}% 1464 | }% 1465 | \fancyhead[LE]{% 1466 | \small\@editor~(Hrsg.):\ 1467 | \ifdefempty{\@bookshorttitle}% 1468 | {}% 1469 | {\@bookshorttitle,\hspace{1sp}}% 1470 | \linebreak\hspace{0.05cm}\thepage\hspace{5pt} Lecture Notes 1471 | in Informatics (LNI), Gesellschaft für Informatik, 1472 | Bonn~\@yearofpublication% 1473 | }% 1474 | \fancyfoot{}% Löscht alle Fußzeileneinstellungen 1475 | \renewcommand{\headrulewidth}{0.4pt}% Linie unter Kopfzeile 1476 | }% 1477 | \ifnorunningheads 1478 | \pagestyle{empty} 1479 | \else 1480 | \pagestyle{fancy} 1481 | \fancyhead{}% Löscht alle Kopfzeileneinstellungen 1482 | \fancyhead[RO]{\small\@shorttitle\hspace{5pt}\thepage\hspace{0.05cm}} 1483 | \fancyhead[LE]{\hspace{0.05cm}\small\thepage\hspace{5pt}\ifanonymous\iflnienglish Anonymized for review\else Anonymisiert für Review\fi\else\@authlisthead\fi} 1484 | \fancyfoot{}% Löscht alle Fußzeileneinstellungen 1485 | \renewcommand{\headrulewidth}{0.4pt} %Linie unter Kopfzeile 1486 | \fi% 1487 | % \end{macrocode} 1488 | % \begin{macrocode} 1489 | \RequirePackage{url} 1490 | \urlstyle{same} 1491 | % \end{macrocode} 1492 | % improve wrapping of URLs - hint by http://tex.stackexchange.com/a/10419/9075 1493 | % \begin{macrocode} 1494 | \g@addto@macro{\UrlBreaks}{\UrlOrds} 1495 | % \end{macrocode} 1496 | % \begin{macrocode} 1497 | \RequirePackage{xspace} 1498 | % \end{macrocode} 1499 | % \begin{macrocode} 1500 | \AddToHook{env/document/begin}[lni/loadhyperref]{% 1501 | \RequirePackage[bookmarks=false]{hyperref} 1502 | \hypersetup{% 1503 | pdfdisplaydoctitle,% 1504 | colorlinks=true,% 1505 | allcolors=black,% 1506 | pdfstartview=Fit,% 1507 | }% 1508 | \pdfstringdefDisableCommands{% 1509 | \def\footnote#1{}% 1510 | } 1511 | \RequirePackage{orcidlink}% 1512 | % \end{macrocode} 1513 | % enables correct jumping to figures when referencing 1514 | % \begin{macrocode} 1515 | \RequirePackage[all]{hypcap}% 1516 | }% 1517 | \DeclareHookRule{env/document/begin}{lni/loadhyperref}{before}{biblatex} 1518 | % \end{macrocode} 1519 | % \begin{macrocode} 1520 | \ifusecleveref% 1521 | \AtEndPreamble{% 1522 | \iflnienglish 1523 | \RequirePackage[capitalise,nameinlink]{cleveref} 1524 | \crefname{section}{Sect.}{Sect.} 1525 | \Crefname{section}{Sect.}{Sect.} 1526 | \else 1527 | \RequirePackage[ngerman,nameinlink]{cleveref} 1528 | \fi% 1529 | \crefname{figure}{\figurename}{\figurename} 1530 | \Crefname{figure}{\figurename}{\figurename} 1531 | \crefname{listing}{\lstlistingname}{\lstlistingname} 1532 | \Crefname{listing}{\lstlistingname}{\lstlistingname} 1533 | \crefname{table}{\tablename}{\tablename} 1534 | \Crefname{table}{\tablename}{\tablename} 1535 | }% 1536 | \fi% 1537 | % \end{macrocode} 1538 | % \begin{macrocode} 1539 | \def\and{\texorpdfstring{\unskip\hspace{-0.42em},\hspace{.6em}}{, }}% 1540 | % \end{macrocode} 1541 | % \begin{macrocode} 1542 | \newcommand*{\lni@abbrv}[1]{#1\@\xspace} 1543 | \newcommand*{\lniabbrv}[2]{\gdef#1{\lni@abbrv{#2}}} 1544 | \newcommand*{\lni@initialism}[1]{\textsc{#1}\xspace} 1545 | \newcommand*{\lniinitialism}[2]{\gdef#1{\lni@initialism{#2}}} 1546 | \newcommand*{\ie}{\lni@abbrv{i.\,e.}} 1547 | \newcommand*{\eg}{\lni@abbrv{e.\,g.}} 1548 | \newcommand*{\cf}{\lni@abbrv{cf.}} 1549 | \newcommand*{\etal}{\lni@abbrv{et~al.}} 1550 | \newcommand*{\OMG}{\lni@initialism{omg}} 1551 | \newcommand*{\BPM}{\lni@initialism{bpm}} 1552 | \newcommand*{\BPMN}{\lni@initialism{bpmn}} 1553 | \newcommand*{\BPEL}{\lni@initialism{bpel}} 1554 | \newcommand*{\UML}{\lni@initialism{uml}} 1555 | % \end{macrocode} 1556 | % bibliography 1557 | % \begin{macrocode} 1558 | \renewenvironment{thebibliography}[1] 1559 | {\iflnienglish\selectlanguage{english}\else\selectlanguage{ngerman}\fi 1560 | \section*{\refname}% 1561 | \bgroup\small% 1562 | \list{\@biblabel{\@arabic\c@enumiv}}% 1563 | {\settowidth\labelwidth{\@biblabel{#1}}% 1564 | \leftmargin\labelwidth 1565 | \advance\leftmargin\labelsep 1566 | \@openbib@code 1567 | \usecounter{enumiv}% 1568 | \let\p@enumiv\@empty 1569 | \renewcommand\theenumiv{\@arabic\c@enumiv}}% 1570 | \sloppy 1571 | \clubpenalty4000 1572 | \@clubpenalty \clubpenalty 1573 | \widowpenalty4000% 1574 | \sfcode`\.\@m} 1575 | {\def\@noitemerr 1576 | {\@latex@warning{Empty `thebibliography' environment}}% 1577 | \endlist\egroup} 1578 | % \end{macrocode} 1579 | % \begin{macrocode} 1580 | \frenchspacing 1581 | \tolerance 1414 1582 | \hbadness 1414 1583 | \emergencystretch 1.5em 1584 | \hfuzz 0.3pt 1585 | \widowpenalty=10000 1586 | \displaywidowpenalty=10000 1587 | \clubpenalty=9999 1588 | \interfootnotelinepenalty=9999 1589 | \brokenpenalty=2000 1590 | \vfuzz \hfuzz 1591 | \raggedbottom 1592 | % \end{macrocode} 1593 | % \begin{macrocode} 1594 | % 1595 | % \end{macrocode} 1596 | %\Finale 1597 | % 1598 | %\iffalse 1599 | %<*template> 1600 | % % !TeX program = pdflatex 1601 | % % !BIB program = biber 1602 | % % !TeX spellcheck = de-DE 1603 | %%% To write an article in English, please use the option ``english'' in order 1604 | %%% to get the correct hyphenation patterns and terms. 1605 | %%% \documentclass[english]{class} 1606 | %%% for anonymizing an article you can use the ``anonymous'' option. 1607 | %%% 1608 | %%% Um einen Artikel auf deutsch zu schreiben, genügt es die Klasse ohne 1609 | %%% Parameter zu laden. 1610 | %%% Zur Anonymisierung kann die ``anonymous'' Option genutzt werden. 1611 | \documentclass[]{lni} 1612 | %% 1613 | \begin{document} 1614 | %%% Mehrere Autoren werden durch \and voneinander getrennt. 1615 | %%% Die Fußnote enthält die Adresse sowie eine E-Mail-Adresse. 1616 | %%% Das optionale Argument (sofern angegeben) wird für die Kopfzeile verwendet. 1617 | \title[Ein Kurztitel]{Ein sehr langer Titel über mehrere Zeilen mit sehr vielen 1618 | Worten und noch mehr Buchstaben} 1619 | %% \subtitle{Untertitel / Subtitle} % if needed 1620 | \author[1,2]{Firstname1 Lastname1}{firstname1.lastname1@affiliation1.org}{0000-0000-0000-0000} 1621 | \author[2]{Firstname2 Lastname2}{firstname2.lastname2@affiliation2.org}{0000-0000-0000-0000} 1622 | \author[3]{Firstname3 Lastname3}{firstname3.lastname3@affiliation1.org}{0000-0000-0000-0000} 1623 | \author[1]{Firstname4 Lastname4}{firstname4.lastname4@affiliation1.org}{0000-0000-0000-0000}% 1624 | \affil[1]{Universität 1\\Abteilung\\Straße\\Postleitzahl Ort\\Land} 1625 | \affil[2]{University 2 \\Department\\Address\\Country} 1626 | \affil[3]{University 3\\Department\\Address\\Country} 1627 | \maketitle 1628 | 1629 | \begin{abstract} 1630 | Dies ist eine kurze Übersicht über das Dokument mit einer Länge von 1631 | 70 bis 150 Wörtern. Es sollte ein Absatz sein, der die relevantesten 1632 | Aspekte enthält. 1633 | \end{abstract} 1634 | \begin{keywords} 1635 | Schlagwort1 \and Schlagwort2 %Keyword1 \and Keyword2 1636 | \end{keywords} 1637 | %%% Beginn des Artikeltexts 1638 | \section{Überschrift/Heading} 1639 | 1640 | %% \printbibliography 1641 | \end{document} 1642 | % 1643 | %<*exampledebib> 1644 | % Encoding: UTF-8 1645 | 1646 | @InProceedings{ABC01, 1647 | author = {Abraham, N. and Bibel, U. and Corleone, P.}, 1648 | title = {Formatting Contributions for Proceedings}, 1649 | pages = {46-53}, 1650 | crossref = {Gl01}, 1651 | } 1652 | 1653 | @InBook{Az09, 1654 | pages = {135-162}, 1655 | title = {Die Fußnote in LNI-Bänden}, 1656 | author = {Azubi, L. and others}, 1657 | crossref = {Gl09}, 1658 | } 1659 | 1660 | @Book{AB00, 1661 | title = {Formatierungsrichtlinien für Tagungsbände}, 1662 | publisher = {Format-Verlag}, 1663 | year = {2000}, 1664 | author = {Abel, K. and Bibel, U.}, 1665 | address = {Bonn}, 1666 | } 1667 | 1668 | @Book{Ez10, 1669 | title = {The Magic Format -- Your Way to Pretty Books}, 1670 | publisher = {Noah \& Sons}, 1671 | year = {2010}, 1672 | author = {Ezgarani, O.}, 1673 | } 1674 | 1675 | @Article{Gl06, 1676 | author = {Glück, H. I.}, 1677 | title = {Formatierung leicht gemacht}, 1678 | journal = {Formatierungsjournal}, 1679 | volume = {11}, 1680 | number = {09}, 1681 | year = {2009}, 1682 | pages = {23-27}, 1683 | } 1684 | 1685 | @Book{Wa14, 1686 | title = {Essenzen der Informatik}, 1687 | publisher = {Verlag Formvoll}, 1688 | year = {2014}, 1689 | author = {Wasser, K. and Feuer, H. and Erde, R. and Licht, H.}, 1690 | } 1691 | 1692 | @Book{Wa14b, 1693 | title = {Ganz neue Essenzen der Informatik im selben Jahr}, 1694 | publisher = {Format-Verlag}, 1695 | year = {2014}, 1696 | author = {Wasser, K. and Feuer, H. and Erde, R. and Licht, H.}, 1697 | } 1698 | 1699 | @Proceedings{Gl01, 1700 | title = {Proc. 7th Int. Conf. on Formatting of Workshop-Proceedings}, 1701 | year = {2001}, 1702 | editor = {Glück, H. I.}, 1703 | address = {San Francisco}, 1704 | publisher = {Noah \& Sons}, 1705 | booktitle = {Proc. 7th Int. Conf. on Formatting of Workshop-Proceedings}, 1706 | } 1707 | 1708 | @Book{Gl09, 1709 | title = {Formatierung 2009}, 1710 | publisher = {Format-Verlag}, 1711 | year = {2009}, 1712 | editor = {Glück, H. I.}, 1713 | number = {999}, 1714 | series = {LNI}, 1715 | address = {Bonn}, 1716 | booktitle = {Formatierung 2009}, 1717 | } 1718 | 1719 | @Misc{XX14, 1720 | title = {Anteil an Frauen in der Informatik}, 1721 | label = {An}, 1722 | howpublished = {Statistics Worldwide}, 1723 | year = {2014}, 1724 | } 1725 | 1726 | @Online{GI19, 1727 | author = {{Gesellschaft für Informatik e.\,V.}}, 1728 | label = {GI}, 1729 | year = {2019}, 1730 | url = {http://www.gi.de}, 1731 | urldate = {2019-03-21} 1732 | } 1733 | 1734 | @Comment{jabref-meta: databaseType:biblatex;} 1735 | % 1736 | %<*exampledetex> 1737 | % % !TeX program = pdflatex 1738 | % % !BIB program = biber 1739 | % % !TeX spellcheck = de-DE 1740 | \documentclass{lni} 1741 | \addbibresource{lni-paper-example-de.bib} 1742 | 1743 | %% Schöne Tabellen mittels \toprule, \midrule, \bottomrule 1744 | \usepackage{booktabs} 1745 | 1746 | %% Zu Demonstrationszwecken 1747 | \usepackage[]{blindtext} 1748 | 1749 | \begin{document} 1750 | %%% Mehrere Autoren werden durch \and voneinander getrennt. 1751 | %%% Die Fußnote enthält die Adresse sowie eine E-Mail-Adresse. 1752 | %%% Das optionale Argument (sofern angegeben) wird für die Kopfzeile verwendet. 1753 | \title[Ein Kurztitel]{Ein sehr langer Titel über mehrere Zeilen mit sehr vielen Worten und noch mehr Buchstaben} 1754 | %%%\subtitle{Untertitel / Subtitle} % falls benötigt 1755 | \author[1]{Vorname1 Nachname1}{vorname1.name1@affiliation1.de}{0000-0000-0000-0000} 1756 | \author[2]{Vorname2 Nachname2}{vorname2.name2@affiliation2.de}{0000-0000-0000-0000} 1757 | \author[1]{Vorname3 Nachname3}{vorname3.name3@affiliation1.de}{0000-0000-0000-0000} 1758 | \author[1]{Vorname4 Nachname4}{vorname4.name4@affiliation1.de}{0000-0000-0000-0000}% 1759 | \affil[1]{Universität\\Abteilung\\Straße\\Postleitzahl Ort\\Land} 1760 | \affil[2]{University\\Department\\Address\\Country} 1761 | \maketitle 1762 | 1763 | \begin{abstract} 1764 | Die \LaTeX-Klasse \texttt{lni} setzt die Layout-Vorgaben für Beiträge in LNI Konferenzbänden um. 1765 | Dieses Dokument beschreibt ihre Verwendung und ist ein Beispiel für die entsprechende Darstellung. 1766 | Der Abstract ist ein kurzer Überblick über die Arbeit der zwischen 70 und 150 Wörtern lang sein und das Wichtigste enthalten sollte. 1767 | Die Formatierung erfolgt automatisch innerhalb des abstract-Bereichs. 1768 | \end{abstract} 1769 | 1770 | \begin{keywords} 1771 | LNI Guidelines \and \LaTeX\ Vorlage 1772 | \end{keywords} 1773 | 1774 | \section{Verwendung} 1775 | Die GI gibt unter \url{http://www.gi-ev.de/LNI} Vorgaben für die Formatierung von Dokumenten in der LNI Reihe. 1776 | Für \LaTeX-Dokumente werden diese durch die Dokumentenklasse \texttt{lni} realisiert. 1777 | 1778 | Dieses Dokument basiert auf der offiziellen Dokumentation, simplifiziert und setzt grundlegendes LaTeX-Wissen voraus. 1779 | Es werden generische Platzhalter an die entsprechenden Stellen (wie beispielsweise die Autoren-Angaben) gesetzt und nicht weiter an anderer Stelle dokumentiert. 1780 | 1781 | Dieses Template ist wie folgt gegliedert: 1782 | \Cref{sec:demos} zeigt Demonstrationen der LNI-Verlage. 1783 | \Cref{sec:lniconformance} zeigt die Einhaltung der Richtlinien durch einfachen Text. 1784 | 1785 | \section{Demonstrationen} 1786 | \label{sec:demos} 1787 | Das Symbol für Potenzmengen ($\powerset$) wird korrekt angezeigt. 1788 | Es ist kein Weierstraß-p ($\wp$) mehr. 1789 | 1790 | Spitze Klammen können direkt eingegeben werden: 1791 | 1792 | Anonymisierungen können mittels anonymous-Option in der documentclass automatisch vorgenommen werden. Dafür gibt es das \texttt{anon}-Makro, z.\,B. \anon{Geheim für Review} und \anon[nur für Review]{nur für finale Version}. 1793 | 1794 | Hier eine kleine Demonstration von \href{https://www.ctan.org/pkg/microtype}{microtype}: 1795 | \blindtext 1796 | 1797 | \section{Demonstration der Einhaltung der Richtlinien} 1798 | \label{sec:lniconformance} 1799 | 1800 | \subsection{Literaturverzeichnis} 1801 | Der letzte Abschnitt zeigt ein beispielhaftes Literaturverzeichnis für Bücher mit einem Autor \cite{Ez10} und zwei AutorInnen \cite{AB00}, einem Beitrag in Proceedings mit drei AutorInnen \cite{ABC01}, einem Beitrag in einem LNI Band mit mehr als drei AutorInnen \cite{Az09}, zwei Bücher mit den jeweils selben vier AutorInnen im selben Erscheinungsjahr \cite{Wa14} und \cite{Wa14b}, ein Journal \cite{Gl06}, eine Website \cite{GI19} bzw.\ anderweitige Literatur ohne konkrete AutorInnenschaft \cite{XX14}. 1802 | Es wird biblatex verwendet, da es UTF8 sauber unterstützt und viele Erweiterungen mit bringt. 1803 | 1804 | Referenzen sollten nicht direkt als Subjekt eingebunden werden, sondern immer nur durch Authorenanganben: 1805 | Beispiel: \Citet{AB00} geben ein Beispiel, aber auch \citet{Az09}. 1806 | Hinweis: Großes C bei \texttt{Citet}, wenn es am Satzanfang steht. Dies ist analog zu \texttt{Cref}. 1807 | 1808 | Formatierung und Abkürzungen werden für die Referenzen \texttt{book}, \texttt{inbook}, \texttt{proceedings}, \texttt{inproceedings}, \texttt{article}, \texttt{online} und \texttt{misc} automatisch vorgenommen. 1809 | Mögliche Felder für Referenzen können der Beispieldatei \texttt{lni-paper-example-de.bib} entnommen werden. 1810 | Andere Referenzen sowie Felder müssen allenfalls nachträglich angepasst werden. 1811 | 1812 | \subsection{Abbildungen} 1813 | \Cref{fig:demo} zeigt eine Abbildung. 1814 | 1815 | \begin{figure} 1816 | \centering 1817 | \includegraphics[width=.8\textwidth]{example-image} 1818 | \caption{Demographik} 1819 | \label{fig:demo} 1820 | \end{figure} 1821 | 1822 | \subsection{Tabellen} 1823 | \Cref{tab:demo} zeigt eine Tabelle. 1824 | 1825 | \begin{table} 1826 | \centering 1827 | \begin{tabular}{lll} 1828 | \toprule 1829 | Überschriftsebenen & Beispiel & Schriftgröße und -art \\ 1830 | \midrule 1831 | Titel (linksbündig) & Der Titel \ldots & 14 pt, Fett\\ 1832 | Überschrift 1 & 1 Einleitung & 12 pt, Fett\\ 1833 | Überschrift 2 & 2.1 Titel & 10 pt, Fett\\ 1834 | \bottomrule 1835 | \end{tabular} 1836 | \caption{Die Überschriftsarten} 1837 | \label{tab:demo} 1838 | \end{table} 1839 | 1840 | \subsection{Programmcode} 1841 | Die LNI-Formatvorlage verlangt die Einrückung von Listings vom linken Rand. 1842 | In der \texttt{lni}-Dokumentenklasse ist dies für die \texttt{verbatim}-Umgebung realisiert. 1843 | 1844 | \begin{verbatim} 1845 | public class Hello { 1846 | public static void main (String[] args) { 1847 | System.out.println("Hello World!"); 1848 | } 1849 | } 1850 | \end{verbatim} 1851 | 1852 | Alternativ kann auch die \texttt{lstlisting}-Umgebung verwendet werden. 1853 | 1854 | \Cref{java-hello-world} zeigt uns ein Beispiel, das mit Hilfe der \texttt{lstlisting}-Umgebung realisiert ist. Ein anderes Beispiel ist \cref{python-hello-world}. 1855 | 1856 | \begin{lstlisting}[caption={Ein Java-Programm}, label=java-hello-world, language=Java] 1857 | public class Hello { 1858 | public static void main (String[] args) { 1859 | System.out.println("Hello World!"); 1860 | } 1861 | } 1862 | \end{lstlisting} 1863 | 1864 | \begin{lstlisting}[caption={Ein Python-Programm}, label=python-hello-world, language=Python] 1865 | # This program prints Hello, world! 1866 | 1867 | print('Hello, world!') 1868 | \end{lstlisting} 1869 | 1870 | \subsection{Formeln und Gleichungen} 1871 | 1872 | Die korrekte Einrückung und Nummerierung für Formeln ist bei den Umgebungen 1873 | \texttt{equation} und \texttt{align} gewährleistet. 1874 | 1875 | \begin{equation} 1876 | 1=4-3 1877 | \end{equation} 1878 | und 1879 | \begin{align} 1880 | 2&=7-5\\ 1881 | 3&=2-1 1882 | \end{align} 1883 | 1884 | %% Starten Sie "biber lni-paper-example-de", um eine Bibliographie zu erzeugen. 1885 | \printbibliography 1886 | 1887 | \end{document} 1888 | % 1889 | % \end{macrocode} 1890 | %\fi 1891 | -------------------------------------------------------------------------------- /lni.ins: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `lni.ins', 3 | %% --------| ----------------------------------------------------------------- 4 | %% lni:| A class for submissions to the ``Lecture Notes in Informatics'' 5 | %% Author:| Martin Sievers 6 | %% Email:| martin.sievers@schoenerpublizieren.de 7 | %% License:| Released under the LaTeX Project Public License v1.3c or later 8 | %% See:| http://www.latex-project.org/lppl.txt 9 | %% --------| ----------------------------------------------------------------- 10 | \input docstrip.tex 11 | \keepsilent 12 | \askforoverwritefalse 13 | \declarepreamble\classpre 14 | --------| ----------------------------------------------------------------- 15 | lni:| A class for submissions to the ``Lecture Notes in Informatics'' 16 | Author:| Martin Sievers 17 | Email:| martin.sievers@schoenerpublizieren.de 18 | License:| Released under the LaTeX Project Public License v1.3c or later 19 | See:| http://www.latex-project.org/lppl.txt 20 | --------| ----------------------------------------------------------------- 21 | \endpreamble 22 | 23 | \def\templatepre{% 24 | \perCent\space !TeX encoding = UTF-8^^J% 25 | \perCent\space !TeX program = pdflatex^^J% 26 | \perCent\space !BIB program = biber^^J% 27 | } 28 | 29 | \def\templatepreger{% 30 | \perCent\space !TeX encoding = UTF-8^^J% 31 | \perCent\space !TeX spellcheck = de_DE^^J% 32 | } 33 | 34 | \postamble 35 | 36 | Copyright (C) 2016-2025 by Gesellschaft für Informatik e.V. (GI) 37 | 38 | This work may be distributed and/or modified under the 39 | conditions of the LaTeX Project Public License (LPPL), either 40 | version 1.3c of this license or (at your option) any later 41 | version. The latest version of this license is in the file: 42 | 43 | http://www.latex-project.org/lppl.txt 44 | 45 | This work is "maintained" (as per LPPL maintenance status) by 46 | Martin Sievers. 47 | 48 | This work consists of the file lni.dtx 49 | lni.ins 50 | README.md 51 | CHANGELOG.md 52 | and the derived files lni.pdf 53 | lni.cls 54 | lni-author-template.tex 55 | lni-paper-example-de.bib 56 | lni-paper-example-de.tex 57 | \endpostamble 58 | 59 | \usedir{tex/latex/lni} 60 | \AddGenerationDate 61 | \generate{ 62 | \usepreamble\classpre 63 | \file{\jobname.cls}{\from{\jobname.dtx}{class}} 64 | } 65 | \endbatchfile 66 | %% 67 | %% Copyright (C) 2016-2025 by Gesellschaft für Informatik e.V. (GI) 68 | %% 69 | %% This work may be distributed and/or modified under the 70 | %% conditions of the LaTeX Project Public License (LPPL), either 71 | %% version 1.3c of this license or (at your option) any later 72 | %% version. The latest version of this license is in the file: 73 | %% 74 | %% http://www.latex-project.org/lppl.txt 75 | %% 76 | %% This work is "maintained" (as per LPPL maintenance status) by 77 | %% Martin Sievers. 78 | %% 79 | %% This work consists of the file lni.dtx 80 | %% lni.ins 81 | %% README.md 82 | %% CHANGELOG.md 83 | %% and the derived files lni.pdf 84 | %% lni.cls 85 | %% lni-author-template.tex 86 | %% lni-paper-example-de.bib 87 | %% lni-paper-example-de.tex 88 | %% 89 | %% End of file `lni.ins'. 90 | -------------------------------------------------------------------------------- /prepare_for_CTAN: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Use this file (on a unix system) to generate the zip archive for CTAN 3 | # ctanify is part of TeX Live and MiKTeX distributions 4 | # Please note, that you need at least version 1.9 to add the symbolic link correctly. 5 | # 6 | echo "Make sure we have the latest version" 7 | pdflatex lni.dtx 8 | echo "Make sure all links in lni.pdf are correct" 9 | pdflatex lni.dtx 10 | if [ -f lni.tar.gz ]; then 11 | echo "Remove old archive" 12 | rm lni.tar.gz 13 | fi 14 | rm -f lni-instructions.pdf 15 | ln -s -f lni.pdf lni-instructions.pdf 16 | ctanify --no-tds lni.ins lni.pdf README.md CHANGELOG.md CONTRIBUTING.md "lni-instructions.pdf=doc/latex/lni" "lni-author-template.tex=doc/latex/lni" "lni-paper-example-de.tex=doc/latex/lni" "lni-paper-example-de.bib=doc/latex/lni" 17 | --------------------------------------------------------------------------------