diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/koma-script/source-doc |
Initial commit
Diffstat (limited to 'macros/latex/contrib/koma-script/source-doc')
110 files changed, 79658 insertions, 0 deletions
diff --git a/macros/latex/contrib/koma-script/source-doc/Makefile b/macros/latex/contrib/koma-script/source-doc/Makefile new file mode 100644 index 0000000000..3695d148e8 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/Makefile @@ -0,0 +1,227 @@ +# ====================================================================== +# Makefile +# Copyright (c) Markus Kohm, 2002-2014 +# +# This file is part of the LaTeX2e KOMA-Script bundle. +# +# This work may be distributed and/or modified under the conditions of +# the LaTeX Project Public License, version 1.3c of the license. +# The latest version of this license is in +# http://www.latex-project.org/lppl.txt +# and version 1.3c or later is part of all distributions of LaTeX +# version 2005/12/01 or later and of this work. +# +# This work has the LPPL maintenance status "author-maintained". +# +# The Current Maintainer and author of this work is Markus Kohm. +# +# This work consists of all files listed in manifest.txt. +# ---------------------------------------------------------------------- +# Makefile +# Copyright (c) Markus Kohm, 2002-2014 +# +# Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +# Version 1.3c, verteilt und/oder veraendert werden. +# Die neuste Version dieser Lizenz ist +# http://www.latex-project.org/lppl.txt +# und Version 1.3c ist Teil aller Verteilungen von LaTeX +# Version 2005/12/01 oder spaeter und dieses Werks. +# +# Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +# (allein durch den Autor verwaltet). +# +# Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +# +# Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +# ====================================================================== + +# ---------------------------------------------------------------------- +# Directory with basics +BASEDIR ?= $(PWD)/../ +export BASEDIR + +# ---------------------------------------------------------------------- +# All directories with Makefiles +SUBDIRS = english ngerman + +# ---------------------------------------------------------------------- +# Default rules +.PHONY: default clean default_local install_local \ + uninstall_local clean_local dist_local \ + distclean_local maintainclean_local + +# Recursive make function +ifdef SUBDIRS +define make_recursive + for dir in $(SUBDIRS); \ + do \ + $(MAKE) -C $$dir $@ || exit $$?; \ + done +endef +else +define make_recursive +endef +endif + +default: default_local + +clean: clean_local + +# Load variable definitions +include $(BASEDIR)Makefile.baseinit +include Makefile.latexinit + +# Temporary folder, used to create distribution. +# Same folder with postfix "-maintain" will be used to create maintain- +# distribution. +ifdef DISTDIR +export DISTDIR := $(DISTDIR)/doc +endif +ifdef MAINTAINDIR +export MAINTAINDIR := $(MAINTAINDIR)/doc +endif +ifdef INSTALLSRCDIR +export INSTALLSRCDIR := $(INSTALLSRCDIR)/doc +endif + +# ---------------------------------------------------------------------- + +# ---------------------------------------------------------------------- +# List of all Makefiles +MAKE_FILES = Makefile Makefile.latexinit Makefile.guide + +# ---------------------------------------------------------------------- +MISC_SRC = $(MAKE_FILES) + +STATIC_DOC_SRC = koma-script.html + +STATIC_DOC_LINKS= komascript.html komascr.html \ + scrbook.html scrreprt.html scrartcl.html scrlttr2.html \ + scrletter.html \ + scrextend.html \ + typearea.html scraddr.html scrlfile.html \ + scrwfile.html \ + scrtime.html scrdate.html tocbasic.html \ + scrlayer.html scrlayer-scrpage.html \ + scrlayer-notecolumn.html \ + scrbase.html scrhack.html + +DOC_SRC = scrguide.cls scrguide.ist scrguide.gst \ + guide.tex guide.bib plength.dtx \ + linkalias.tex \ + scrpage2.tex + +DOC_FILES = scrpage2.pdf + +DOC_DIR = doc + +STATIC_DOC = $(STATIC_DOC_SRC) $(STATIC_DOC_LINKS) + +DIST_SRC = $(MISC_SRC) $(DOC_SRC) $(STATIC_DOC_SRC) + +DIST_FILES = $(DIST_SRC) $(STATIC_DOC_LINKS) $(DOC_FILES) + +BIN_DIR = bin + +BIN_FILES = $(BIN_DIR)/genhtmlidx.pl $(BIN_DIR)/genindex.pl + +MAINTAIN_FILES = $(DIST_FILES) +# ---------------------------------------------------------------------- + +# ---------------------------------------------------------------------- +# local rules +prepare_local: $(STATIC_DOC_LINKS) + $(make_recursive) + +default_local: $(STATIC_DOC) $(DOC_FILES) + $(make_recursive) + +scrpage2.pdf: $(DOC_SRC) + $(LATEX) $(NONSTOPMODE) $(PDFOUTPUT) scrpage2.tex + $(LATEX) $(NONSTOPMODE) $(PDFOUTPUT) scrpage2.tex + $(LATEX) $(NONSTOPMODE) $(PDFOUTPUT) scrpage2.tex + +$(STATIC_DOC_LINKS): $(STATIC_DOC_SRC) + $(SYMLINK) $< $@ + +install_local: $(DIST_FILES) + @if ! $(MKDIR) $(INSTALLSRCDIR) || \ + ! $(MKDIR) $(INSTALLSRCDIR)/$(BIN_DIR) || \ + ! $(MKDIR) $(INSTALLDOCDIR) ; then \ + echo '--------------------------------------------------'; \ + echo '| Cannot install to' $(INSTALLSRCDIR) or $(INSTALLSRCDIR)/$(BIN_DIR) or $(INSTALLDOCDIR)!; \ + echo '| You should try:'; \ + echo '| sudo "make install"'; \ + echo '--------------------------------------------------'; \ + exit 1; \ + fi + $(INSTALL) $(DIST_SRC) $(INSTALLSRCDIR) + $(foreach file,$(STATIC_DOC),$(SYMLINK) ../../../../doc/latex/koma-script/$(file) $(INSTALLSRCDIR)/$(file);) + $(INSTALLEXECUTABLE) $(BIN_FILES) $(INSTALLSRCDIR)/$(BIN_DIR) + $(INSTALL) $(STATIC_DOC) $(DOC_FILES) $(INSTALLDOCDIR) + $(make_recursive) + $(SECHO) ------------------------------------------------------------ + $(SECHO) Installed files at $(INSTALLSRCDIR): + $(SECHO) $(DIST_SRC) + $(SECHO) ------------------------------------------------------------ + $(SECHO) Installed files at $(INSTALLSRCDIR)/$(BIN_DIR): + $(SECHO) $(BIN_FILES) + $(SECHO) ------------------------------------------------------------ + $(SECHO) Installed files at $(INSTALLDOCDIR): + $(SECHO) $(STATIC_DOC) $(DOC_FILES) + $(SECHO) ------------------------------------------------------------ + $(SECHO) Links at $(INSTALLSRCDIR): + $(SECHO) $(SATIC_DOC) + $(SECHO) ------------------------------------------------------------ + + +uninstall_local: + @if [ -d $(INSTALLSRCDIR) ]; then \ + $(RM) -v $(foreach file,$(DIST_SRC),$(INSTALLSRCDIR)/$(file)); \ + if [ ls $(INSTALLSRCDIR) > /dev/null 2>&1; then \ + $(RMDIR) -v $(INSTALLSRCDIR); \ + else \ + echo "$(INSTALLSRCDIR) not empty!"; \ + fi; \ + else \ + echo "$(INSTALLSRCDIR) not found --> nothing to uninstall!"; \ + fi + @if [ -d $(INSTALLDOCDIR) ]; then \ + $(RM) -v $(foreach file,$(STATIC_DOC),$(INSTALLDOCDIR)/$(file)); \ + else \ + echo "$(INSTALLDOCDIR) not found --> nothing to uninstall!"; \ + fi + $(make_recursive) + +clean_local: + $(SRM) *.aux *.glo *.idx *.lof *.log *.lot *.synctex.gz *.toc *.slnc + $(make_recursive) + +dist_local: $(DIST_FILES) + -$(RMDIR) $(DISTDIR) + $(MKDIR) $(DISTDIR) + $(MKDIR) $(DISTDIR)/$(BIN_DIR) + $(CP) $(DIST_FILES) $(DISTDIR) + $(CP) $(BIN_FILES) $(DISTDIR)/$(BIN_DIR) + $(CP) $(DOC_FILES) $(DISTDIR)/$(DOC_DIR) + $(make_recursive) + +maintain_local: + -$(RMDIR) $(MAINTAINDIR) + $(MKDIR) $(MAINTAINDIR) + $(MKDIR) $(MAINTAINDIR)/$(BIN_DIR) + $(CP) $(MAINTAIN_FILES) $(MAINTAINDIR) + $(CP) $(BIN_FILES) $(MAINTAINDIR)/$(BIN_DIR) + $(make_recursive) + +distclean_local: + $(SRM) scrpage2-ngerman.tex scrpage2-english.tex + $(make_recursive) + +maintainclean_local: + $(SRM) ChangeLog.svn ChangeLog.bak $(STATIC_DOC_LINKS) $(DOC_FILES) \ + scrpage2-ngerman.tex scrpage2-english.tex + $(make_recursive) + +edit: + $(EDITOR) guide.tex diff --git a/macros/latex/contrib/koma-script/source-doc/Makefile.guide b/macros/latex/contrib/koma-script/source-doc/Makefile.guide new file mode 100644 index 0000000000..453e0286d2 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/Makefile.guide @@ -0,0 +1,334 @@ +# ====================================================================== +# Makefile.guide +# Copyright (c) Markus Kohm, 2002-2018 +# +# This file is part of the LaTeX2e KOMA-Script bundle. +# +# This work may be distributed and/or modified under the conditions of +# the LaTeX Project Public License, version 1.3c of the license. +# The latest version of this license is in +# http://www.latex-project.org/lppl.txt +# and version 1.3c or later is part of all distributions of LaTeX +# version 2005/12/01 or later and of this work. +# +# This work has the LPPL maintenance status "author-maintained". +# +# The Current Maintainer and author of this work is Markus Kohm. +# +# This work consists of all files listed in manifest.txt. +# ---------------------------------------------------------------------- +# Makefile.guide +# Copyright (c) Markus Kohm, 2002-2018 +# +# Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +# Version 1.3c, verteilt und/oder veraendert werden. +# Die neuste Version dieser Lizenz ist +# http://www.latex-project.org/lppl.txt +# und Version 1.3c ist Teil aller Verteilungen von LaTeX +# Version 2005/12/01 oder spaeter und dieses Werks. +# +# Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +# (allein durch den Autor verwaltet). +# +# Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +# +# Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +# ====================================================================== + +# ---------------------------------------------------------------------- +# Load common rules +include $(BASEDIR)Makefile.baserules +# Load variable definitions +include $(BASEDIR)Makefile.baseinit +include $(DOCDIR)Makefile.latexinit +# ---------------------------------------------------------------------- +# Temporary folder, used to create distribution. +# Same folder with postfix "-maintain" will be used to create maintain- +# distribution. +ifdef DISTDIR +export DISTDIR := $(DISTDIR)/$(LANGUAGE) +endif +ifdef MAINTAINDIR +export MAINTAINDIR := $(MAINTAINDIR)/$(LANGUAGE) +endif +ifdef INSTALLSRCDIR +export INSTALLSRCDIR := $(INSTALLSRCDIR)/$(LANGUAGE) +endif + +# ---------------------------------------------------------------------- +# List of all Makefiles +MAKE_FILES = Makefile + +# ---------------------------------------------------------------------- +GUIDENAME = scrgui$(LANGUAGESHORTCUT) + +ifeq ($(LANGUAGE),english) +TEX_APPENDICES = japanlco.tex +else +TEX_APPENDICES = +endif + +TEX_CHAPTERS = preface.tex introduction.tex \ + authorpart.tex typearea.tex scrbookreportarticle.tex \ + scrlttr2.tex scrlayer-scrpage.tex \ + scrdatetime.tex scraddr.tex \ + adrconvnote.tex scrextend.tex scrjura.tex \ + expertpart.tex scrbase.tex scrlfile.tex scrwfile.tex \ + tocbasic.tex scrhack.tex \ + scrlayer.tex \ + scrlayer-scrpage-experts.tex scrlayer-notecolumn.tex \ + typearea-experts.tex scrbookreportarticle-experts.tex \ + scrlttr2-experts.tex \ + $(TEX_APPENDICES) + +TEX_MISC = ../guide.tex ../linkalias.tex \ + common-options.tex \ + common-compatibility.tex \ + common-draftmode.tex \ + common-typearea.tex \ + common-fontsize.tex \ + common-textmarkup.tex \ + common-parmarkup.tex \ + common-oddorevenpage.tex \ + common-interleafpage.tex \ + common-footnotes.tex \ + common-lists.tex \ + common-marginpar.tex \ + common-titles.tex \ + common-dictum.tex \ + common-headfootheight.tex \ + common-pagestylemanipulation.tex + +EXAMPLE_LETTER_DTX = scrlttr2examples.dtx + +EXAMPLE_LETTER_LETTERS = $(foreach num,\ + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 \ + 20 21 22 23 nipponA nipponB,\ + letter-$(num).tex) + +EXAMPLE_LETTER_DTX_RESULT = $(EXAMPLE_LETTER_LETTERS) musterlogo.eps ich.lco + +EXAMPLE_NOTECOLUMN_SRC = scrlayer-notecolumn-example.tex +EXAMPLE_NOTECOLUMN_PDF = $(addsuffix .pdf,$(basename $(EXAMPLE_NOTECOLUMN_SRC))) + +EXAMPLE_JURA_SRC = scrjuraexample.tex + +EXAMPLE_JURA_PDF = $(addsuffix .pdf,$(basename $(EXAMPLE_JURA_SRC))) + +PLENGTH_DTX = $(DOCDIR)plength.dtx + +PLENGTH_DTX_RESULT = plength.drv plenDIN.mp varDIN.mp plinc.mp \ + pltex-vars.mp pltex-terms.mp pllcoDIN.mp + +PLENGTH_PDF = plenDIN.pdf varDIN.pdf + +PDF_EPS_SRC = musterlogo.eps + +PDF_EPS = $(addsuffix .pdf,$(basename $(PDF_EPS_SRC))) + +EXAMPLE_LETTER_TEX_SRC = $(EXAMPLE_LETTER_LETTERS) ich.lco +EXAMPLE_LETTER_SRC = $(EXAMPLE_LETTER_TEX_SRC) $(PDF_EPS) +EXAMPLE_LETTER_PDF = $(addsuffix .pdf,$(basename $(EXAMPLE_LETTER_LETTERS))) + +GENERATED_SRC = $(EXAMPLE_LETTER_PDF) $(PLENGTH_PDF) \ + $(EXAMPLE_NOTECOLUMN_PDF) $(EXAMPLE_JURA_PDF) + +GENERATED_CLEAN = $(GENERATED_SRC) \ + $(EXAMPLE_LETTER_DTX_RESULT) letter-label.tex \ + $(PDF_EPS) \ + $(PLENGTH_DTX_RESULT) + +TEX_SRC = guide-$(LANGUAGELONG).tex $(TEX_CHAPTERS) $(TEX_MISC) + +MISC_SRC = $(MAKE_FILES) htmlsetup + +DIST_SRC = $(MISC_SRC) $(TEX_SRC) $(EXAMPLE_LETTER_DTX) \ + $(EXAMPLE_NOTECOLUMN_SRC) $(EXAMPLE_JURA_SRC) + +GUIDE_FILES = $(GUIDENAME).pdf $(GUIDENAME).html + +DIST_FILES = $(DIST_SRC) $(GUIDE_FILES) + +MAINTAIN_SRC = $(DIST_SRC) + +MAINTAIN_FILES = $(MAINTAIN_SRC) + +# ---------------------------------------------------------------------- +# local rules +default_local: $(GUIDE_FILES) + +prepare_local: +# $(ECHO) $(GENERATED_SRC) + +clean_local: + $(RM) *.aux *.bbl *.blg *.glo *.idx *.ilg *.ind *.lof *.log *.lot \ + *.dvi *.tmp mpxerr.tex *.1 *.mp.keep *.mpo \ + *.md5 *.toc *.mpx *.drv *.chn *.xref *.slnc + +distclean_local: clean_local + $(RM) $(GENERATED_CLEAN) + +maintainclean_local: distclean_local + $(RM) guide.pdf $(GUIDENAME).pdf $(GUIDENAME).html + +ifdef DISTDIR + +install_local: $(DIST_FILES) + @if ! $(MKDIR) $(INSTALLSRCDIR) || \ + ! [ -d $(INSTALLDOCDIR) ]; then \ + echo '--------------------------------------------------'; \ + echo '| Cannot install to' $(INSTALLSRCDIR) or $(INSTALLDOCDIR)!; \ + echo '| You should try:'; \ + echo '| sudo "make install"'; \ + echo '--------------------------------------------------'; \ + exit 1; \ + fi + $(INSTALL) $(DIST_SRC) $(INSTALLSRCDIR) + $(INSTALL) $(GUIDE_FILES) $(INSTALLDOCDIR) + $(foreach file,$(GUIDE_FILES),$(SYMLINK) ../../../../doc/latex/koma-script/$(file) $(INSTALLSRCDIR)/../$(file);) + $(SECHO) ------------------------------------------------------------ + $(SECHO) Installed files at $(INSTALLSRCDIR): + $(SECHO) $(DIST_SRC) + $(SECHO) ------------------------------------------------------------ + $(SECHO) Installed files at $(INSTALLDOCDIR): + $(SECHO) $(GUIDE_FILES) + $(SECHO) ------------------------------------------------------------ + $(SECHO) Links at $(INSTALLSRCDIR)/..: + $(SECHO) $(GUIDE_FILES) + $(SECHO) ------------------------------------------------------------ + +uninstall_local: + @if [ -d $(INSTALLSRCDIR) ]; then \ + $(RM) -v $(foreach file,$(DIST_SRC),$(INSTALLSRCDIR)/$(file)); \ + if [ ls $(INSTALLSRCDIR) > /dev/null 2>&1; then \ + $(RMDIR) -v $(INSTALLSRCDIR); \ + else \ + echo "$(INSTALLSRCDIR) not empty!"; \ + fi; \ + else \ + echo "$(INSTALLSRCDIR) not found --> nothing to uninstall!"; \ + fi + @if [ -d $(INSTALLDOCDIR) ]; then \ + $(RM) -v $(foreach file,$(GUIDE_FILES),$(INSTALLDOCDIR)/$(file)); \ + else \ + echo "$(INSTALLDOCDIR) not found --> nothing to uninstall!"; \ + fi + +dist_local: $(DIST_FILES) + -$(RMDIR) $(DISTDIR) + $(MKDIR) $(DISTDIR) + $(CP) $(DIST_FILES) $(DISTDIR) + +maintain_local: + -$(RMDIR) $(MAINTAINDIR) + $(MKDIR) $(MAINTAINDIR) + $(CP) $(MAINTAIN_FILES) $(MAINTAINDIR) + +else + +install_local: + $(error install not supported at local make) + +uninstall_local: + $(error uninstall not supported at local make) + +dist_local: + $(error dist not supported at local make) + +maintain_prior: + $(error maintain not supported at local make) + +endif + +# ---------------------------------------------------------------------- +# usefull addons + +edit: + $(EDITOR) $(TEX_SRC) + +# ---------------------------------------------------------------------- +# file rules + +CKSUMFILES = $(BIBTEX_SRC) $(MAKEINDEXSTYLE) $(MAKECHANGESTYLE) \ + guide.aux guide.ind guide.idx guide.bbl guide.toc guide.lot \ + guide.chn guide.glo \ + $(foreach file,$(TEX_CHAPTERS) $(TEX_NONFREECHAPTERS),$(basename $(file)).aux) + +define latex + $(SMV) $@ guide.pdf || exit 0 + @while ! $(CKSUM) -c guide.md5; do \ + $(CKSUM) $(CKSUMFILES) > guide.md5 \ + && $(PDFLATEX) guide.tex \ + && ( $(BIBTEX) guide || [ $$? -le $(BIBTEXNOERROR) ] || exit 1 ) \ + && $(BIBTEXFIX) guide.bbl \ + && $(MAKEINDEX) guide.ind guide.idx \ + && $(INDEXPOSTOP) guide \ + && $(MAKECHANGE) guide.chn guide.glo \ + || exit 1;\ + done + $(SMV) guide.pdf $@ +endef + +$(GUIDENAME).html: htmlsetup guide.aux \ + $(foreach file,$(TEX_CHAPTERS) $(TEX_NONFREECHAPTERS),\ + $(basename $(file)).aux) + $(GENHTMLINDEX) $(addsuffix .aux,\ + $(basename $(TEX_CHAPTERS) $(TEX_NONFREECHAPTERS)))\ + >$@ + +$(GUIDENAME).pdf: $(DOCDIR)scrguide.cls $(DOCDIR)guide.tex $(GENERATED_SRC)\ + guide.aux guide.bbl $(BIBTEX_SRC) \ + $(MAKEINDEXSTYLE) guide.ind guide.idx \ + $(MAKECHANGESTYLE) guide.chn guide.glo \ + $(TEX_SRC) $(TEX_NONFREECHAPTERS) $(TEX_NONFREEMISC) + $(SRM) guide.md5 + $(latex) + +$(PLENGTH_DTX_RESULT): $(PLENGTH_DTX) + $(PDFLATEX) $< + +$(PLENGTH_PDF): $(PLENGTH_DTX_RESULT) + $(MPOST) $(addsuffix .mp,$(basename $@)) + $(MPTOPDF) $(addsuffix .mp,$(basename $@)) + $(MV) $(addsuffix .pdf,$(basename $@)-1) $@ + +$(PDF_EPS): $(PDF_EPS_SRC) + $(EPSTOPDF) $(addsuffix .eps,$(basename $@)) + +$(EXAMPLE_LETTER_PDF): $(EXAMPLE_LETTER_SRC) + $(PDFLATEX) $(addsuffix .tex,$(basename $@)) + +$(EXAMPLE_LETTER_DTX_RESULT): $(EXAMPLE_LETTER_DTX) + $(PDFLATEX) $< + +ifdef EXAMPLE_NOTECOLUMN_SRC +$(EXAMPLE_NOTECOLUMN_PDF): $(EXAMPLE_NOTECOLUMN_SRC) + $(PDFLATEX) $< + $(PDFLATEX) $< + $(PDFLATEX) $< + $(PDFLATEX) $< +endif + +ifdef EXAMPLE_JURA_SRC +$(EXAMPLE_JURA_PDF): $(EXAMPLE_JURA_SRC) + $(PDFLATEX) $(addsuffix .tex,$(basename $@)) + $(PDFLATEX) $(addsuffix .tex,$(basename $@)) + $(PDFLATEX) $(addsuffix .tex,$(basename $@)) +endif + +guide.ind: guide.idx + $(MAKEINDEX) $@ $< + $(INDEXPOSTOP) guide + +guide.chn: guide.glo + $(MAKECHANGE) $@ $< + +guide.bbl: $(BIBTEX_SRC) guide.aux + $(BIBTEX) guide || test $$? -le $(BIBTEXNOERROR) + $(BIBTEXFIX) guide.bbl + +guide.glo guide.idx guide.aux: $(DOCDIR)guide.tex $(TEX_SRC) \ + $(TEX_NONFREECHAPTERS) $(TEX_NONFREEMISC) + $(PDFLATEX) guide.tex + +# ---------------------------------------------------------------------- diff --git a/macros/latex/contrib/koma-script/source-doc/Makefile.latexinit b/macros/latex/contrib/koma-script/source-doc/Makefile.latexinit new file mode 100644 index 0000000000..b8a2e70833 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/Makefile.latexinit @@ -0,0 +1,68 @@ +# Makefile.latexinit +# Copyright (c) Markus Kohm, 2002-2016 +# +# This file is part of the LaTeX2e KOMA-Script bundle. +# +# This work may be distributed and/or modified under the conditions of +# the LaTeX Project Public License, version 1.3c of the license. +# The latest version of this license is in +# http://www.latex-project.org/lppl.txt +# and version 1.3c or later is part of all distributions of LaTeX +# version 2005/12/01 or later and of this work. +# +# This work has the LPPL maintenance status "author-maintained". +# +# The Current Maintainer and author of this work is Markus Kohm. +# +# This work consists of all files listed in manifest.txt. +# ---------------------------------------------------------------------- +# Makefile.latexinit +# Copyright (c) Markus Kohm, 2002-2016 +# +# Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +# Version 1.3c, verteilt und/oder veraendert werden. +# Die neuste Version dieser Lizenz ist +# http://www.latex-project.org/lppl.txt +# und Version 1.3c ist Teil aller Verteilungen von LaTeX +# Version 2005/12/01 oder spaeter und dieses Werks. +# +# Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +# (allein durch den Autor verwaltet). +# +# Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +# +# Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +# ====================================================================== + +# Read input first from basedir and doc dir +TEXINPUTS := ./:$(DOCDIR):$(BASEDIR):$(TEXINPUTS) + +BIBINPUTS = $(DOCDIR):$(shell kpsewhich -expand-var=\$$BIBINPUTS) +BSTINPUTS = $(DOCDIR):$(shell kpsewhich -expand-var=\$$BSTINPUTS) +BIBTEX_SRC = $(DOCDIR)guide.bib + +MAKEINDEXSTYLE = $(DOCDIR)scrguide.ist +MAKEINDEXOPT = -r -s $(MAKEINDEXSTYLE) -o +MAKEINDEX = makeindex $(MAKEINDEXOPT) + +MAKECHANGESTYLE = $(DOCDIR)scrguide.gst +MAKECHANGEOPT = -r -s $(MAKECHANGESTYLE) -o +MAKECHANGE = makeindex $(MAKECHANGEOPT) + +PDFLATEX = $(LATEX) $(NONSTOPMODE) \ + '\def\languagename{'$(LANGUAGELONG)'}' \ + $(PDFOUTPUT) +INDEXPOSTOP = $(DOCDIR)bin/genindex.pl +GENHTMLINDEX = $(DOCDIR)bin/genhtmlidx.pl +#BIBTEX = bibtex8 +#BIBTEXNOERROR = 1 # BibTeX8 returns 1 after warnings +BIBTEX = bibtex +BIBTEXNOERROR = 0 # BibTeX returns 0 on ok +BIBTEXFIX = sed -i -e 's/\\btxurlfont[[:space:]]*$$/\\expandafter&/' + +MPOST = mpost -tex=latex -interaction=batchmode +MPTOPDF = mptopdf + +EPSTOPDF = epstopdf + +export TEXINPUTS BIBINPUTS BSTINPUTS diff --git a/macros/latex/contrib/koma-script/source-doc/bin/genhtmlidx.pl b/macros/latex/contrib/koma-script/source-doc/bin/genhtmlidx.pl new file mode 100755 index 0000000000..da8837f895 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/bin/genhtmlidx.pl @@ -0,0 +1,197 @@ +#! /usr/bin/perl -w +eval 'exec perl -S $0 ${1+"$@"}' + if 0; #$running_under_some_shell + +# ====================================================================== +# genhtmlidx.pl +# Copyright (c) Markus Kohm, 2002-2016 +# +# This file is part of the LaTeX2e KOMA-Script bundle. +# +# This work may be distributed and/or modified under the conditions of +# the LaTeX Project Public License, version 1.3c of the license. +# The latest version of this license is in +# http://www.latex-project.org/lppl.txt +# and version 1.3c or later is part of all distributions of LaTeX +# version 2005/12/01 or later and of this work. +# +# This work has the LPPL maintenance status "author-maintained". +# +# The Current Maintainer and author of this work is Markus Kohm. +# +# This work consists of all files listed in manifest.txt. +# ---------------------------------------------------------------------- +# genhtmlidx.pl +# Copyright (c) Markus Kohm, 2002-2016 +# +# Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +# Version 1.3c, verteilt und/oder veraendert werden. +# Die neuste Version dieser Lizenz ist +# http://www.latex-project.org/lppl.txt +# und Version 1.3c ist Teil aller Verteilungen von LaTeX +# Version 2005/12/01 oder spaeter und dieses Werks. +# +# Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +# (allein durch den Autor verwaltet). +# +# Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +# +# Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +# ====================================================================== +# This perl script generates a html file with an index using the +# \newlabel entries at the aux files. +# +# Usage: genhtmlidx.pl <aux-file> ... +# ---------------------------------------------------------------------- +# Dieses perl-Script erzeugt aus den \newlabel-Eintraegen der +# aux-Dateien eine html-Datei mit einer Art Index. +# +# Verwendung: genhtmlidx.pl <aux-file> ... +# ====================================================================== + +use strict; + +my $auxfile; +my @option; +my @macro; +my @environment; +my @plength; +my @variable; +my @pagestyle; +my @counter; +my @floatstyle; +my @fontelement; +my @file; +my @length; + +my $baselink; +my $htmlhead; +my $htmlend; +my %titles; + +my $setup=""; +open SETUP,"<htmlsetup" || die "Cannot open htmlsetup!\n"; +while (<SETUP>) { + $setup .= $_; +} +close SETUP; +eval $setup; + +while ( $auxfile=shift ) { + open AUX,"<$auxfile" or die "Cannot read $auxfile!\n"; + while (<AUX>) { + my $line=$_; + if ( /^\\newlabel\{(desc:[^\}]+)\}\{(.*)\}$/ ) { + my $label=$1; + my $refargs=$2; + if ( $refargs =~ /^\{([^\{\}]*(\{((?:(?>[^\{\}]*)|(?1))*)\})*)\}\{([^\}]+)\}(.*)$/ ) { + my $ref=$1; + my $page=$4; + my $rest=$5; + if ( $rest =~ /^\{([^\{\}]*(\{((?:(?>[^\{\}]*)|(?1))*)\})*)\}\{([^\}]*)\}\{(.*)\}$/ ) { + my $title=$1; + my $anchor=$4; + my $ignore=$5; +# print STDERR "ref=\"$ref\", page=\"$page\", title=\"$title\", anchor=\"$anchor\", ignore=\"$ignore\"\n"; + my $entry; + if ( $anchor =~ /^desc:([^.]+)\.([^.]+)\.([^.]+)$/ ) { + $entry = "$3.$page.$1.$2"; + if ( "$2" eq "option" ) { + my $i=$1; + if ( $3 =~ /^([^=]+)=(.+)$/ ) { + $entry = "$1.$page.$i.option"; + } + push @option,$entry; + } elsif ( "$2" eq "cmd" ) { + push @macro,$entry; + } elsif ( "$2" eq "env" ) { + push @environment,$entry; + } elsif ( "$2" eq "plength" ) { + push @plength,$entry; + } elsif ( "$2" eq "variable" ) { + push @variable,$entry; + } elsif ( "$2" eq "pagestyle" ) { + push @pagestyle,$entry; + } elsif ( "$2" eq "counter" ) { + push @counter,$entry; + } elsif ( "$2" eq "floatstyle" ) { + push @floatstyle,$entry; + } elsif ( "$2" eq "fontelement" ) { + push @fontelement,$entry; + } elsif ( "$2" eq "package" ) { + push @file,$entry; + } elsif ( "$2" eq "length" ) { + push @length,$entry; + } else { + print STDERR "Unknown type $2!\n"; + } + } + } + } + } + } + close AUX; +} + +sub process { + my $group=shift; + my $prefix=shift; + my $arrayref=shift; + my @entries=sort { $a cmp $b } @$arrayref; + my $entry=""; + my $lastpage=""; + my $lastlink=""; + my $pageprefix=""; + if ( @entries > 0 ) { + print "<h2><a name=\"$group\">$titles{$group}</a></h2>\n"; + print "<ul>\n"; + map { + $_ =~ /^([^.]+)\.([^.]+)\.([^.]+)\.([^.]+)$/; + if ( $entry ne $1 ) { + print "</li>\n" if ( $entry ne "" ); + $entry=$1; + $lastpage=""; + $lastlink=""; + $pageprefix=""; + print "<li><a name=\"$4.$entry\"></a><a href=\"\#$4.$entry\">$prefix$entry</a> --> "; + } + if ( ( $lastlink ne "$3.$4.$1" ) || ( $lastpage ne "$2" ) ) { + print "$pageprefix<a href=\"$baselink\#desc:$3.$4.$1\">$2</a>"; + $lastlink="$3.$4.$1"; + $lastpage="$2"; + $pageprefix=", "; + } + } @entries; + print "</li>\n" if ( $entry ne "" ); + print "</ul>\n"; + } +} + +print $htmlhead; + +print "<ul>\n"; +print "<li><a href=\"#option\">$titles{option}</a></li>" if ( @option ); +print "<li><a href=\"#macro\">$titles{macro}</a></li>" if ( @macro ); +print "<li><a href=\"#environment\">$titles{environment}</a></li>" if ( @environment ); +print "<li><a href=\"#length\">$titles{length}</a></li>" if ( @length ); +print "<li><a href=\"#plength\">$titles{plength}</a></li>" if ( @plength ); +print "<li><a href=\"#variable\">$titles{variable}</a></li>" if ( @variable ); +print "<li><a href=\"#pagestyle\">$titles{pagestyle}</a></li>" if ( @pagestyle ); +print "<li><a href=\"#counter\">$titles{counter}</a></li>" if ( @counter ); +print "<li><a href=\"#floatstyle\">$titles{floatstyle}</a></li>" if ( @floatstyle ); +#print "<li><a href=\"#fontelement\">$titles{fontelement}</a></li>" if ( @fontelement ); +#print "<li><a href=\"#file\">$titles{file}</a></li>" if ( @fontelement ); +print "</ul>\n"; + +process "option","",\@option; +process "macro","\\",\@macro; +process "environment","",\@environment; +process "length","",\@length; +process "plength","",\@plength; +process "variable","",\@variable; +process "pagestyle","",\@pagestyle; +process "counter","",\@counter; +process "floatstyle","",\@floatstyle; +#process "fontelement","",\@fontelement; +#process "file","",\@file; +print $htmlend; diff --git a/macros/latex/contrib/koma-script/source-doc/bin/genindex.pl b/macros/latex/contrib/koma-script/source-doc/bin/genindex.pl new file mode 100755 index 0000000000..879d259e35 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/bin/genindex.pl @@ -0,0 +1,204 @@ +#! /usr/bin/perl -w +eval 'exec perl -S $0 ${1+"$@"}' + if 0; #$running_under_some_shell + +# ====================================================================== +# genindex.pl +# Copyright (c) Markus Kohm, 2002-2006 +# +# This file is part of the LaTeX2e KOMA-Script bundle. +# +# This work may be distributed and/or modified under the conditions of +# the LaTeX Project Public License, version 1.3c of the license. +# The latest version of this license is in +# http://www.latex-project.org/lppl.txt +# and version 1.3c or later is part of all distributions of LaTeX +# version 2005/12/01 or later and of this work. +# +# This work has the LPPL maintenance status "author-maintained". +# +# The Current Maintainer and author of this work is Markus Kohm. +# +# This work consists of all files listed in manifest.txt. +# ---------------------------------------------------------------------- +# genindex.pl +# Copyright (c) Markus Kohm, 2002-2006 +# +# Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +# Version 1.3c, verteilt und/oder veraendert werden. +# Die neuste Version dieser Lizenz ist +# http://www.latex-project.org/lppl.txt +# und Version 1.3c ist Teil aller Verteilungen von LaTeX +# Version 2005/12/01 oder spaeter und dieses Werks. +# +# Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +# (allein durch den Autor verwaltet). +# +# Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +# +# Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +# ====================================================================== +# This perl scripts splits the index of scrguide or scrguien into +# several files, each with one index section. +# +# Usage: genindex.pl <ind-file> +# +# If <ind-file> has no extension ``.ind'', this extension will be added. +# ---------------------------------------------------------------------- +# Dieses perl Script spaltet den Index des scrguide in mehrere getrennte +# Dateien auf, von denen jede jeweils einen Index-Abschnitt enthält. +# +# Verwendung: genindex.pl <ind-Datei> +# +# Wenn die <ind-Datei> ohne Endung ".ind" angegeben wird, so wird diese +# Endung automatisch angehängt. +# ====================================================================== + +use strict; +use Fcntl; + +my $indexinput = $ARGV[0]; +my $indexbase; +my $line; +my $entry = ""; +my %indfile; + +$indexinput = "$indexinput.ind" if ( ! ( $indexinput =~ /^.*\.ind\z/ ) ); +$indexbase = $1 if $indexinput =~ /^(.*)\.ind/; + +print "Generate multiindex for $indexinput\n"; + +# pass 1: search for and open destination index files +open (IDX, "<$indexinput") || + die "Cannot open $indexinput for reading\n"; +print "Search for index:\n"; +while ( <IDX> ) { + if ( /\\UseIndex *\{([^\}]*)\}/ ) { + my $file; + if ( !$indfile{"$1"} ) { + print " Open new index $indexbase-$1.ind\n"; + open ( $file, ">$indexbase-$1.ind" ) || + die "Cannot open $indexbase-$1.ind for writing\n"; + $indfile{"$1"} = $file; + } + } +} +# we must have a general index +if ( !$indfile{"gen"} ) { + print " Open new index $indexbase-gen.ind\n" ; + open ( $indfile{"gen"}, ">$indexbase-gen.ind" ) || + die "Cannot open $indexbase-gen.ind for writing\n"; +} + +# pass 2: copy to destination index files +seek (IDX, 0, 0) || + die "Cannot rewind $indexinput\n"; +print "Copy entries:\n"; +# step 1: copy to every index file until first \indexsectione +while ( defined( ( $line = <IDX> ) ) + && ( ! ( $line =~ /^( *\\indexsection *\{)/ ) ) ) { + printtoallind( "$line" ); + $line = ""; +} +# copy also \indexsection-line +printtoallind( "$line" ) if ( $line ); + +# step 2: read complete \indexsection, \indexspace, \item, \subitem or +# \subsubitem and process it (= copy it to destination index files) +while ( $line = <IDX> ) { + if ( $line =~ /^ *((\\indexsection|\\end) *\{|\\indexspace)/ ) { + processentry( "$entry" ); + $entry = ""; + printtoallind( "$line" ); + } elsif ( $line =~ /^ *\\(sub(sub)?)?item +/ ) { + processentry( "$entry" ); + $entry = $line; + } else { + $entry = "$entry$line"; + } +} + +close (IDX); +closeallind (); + +# post optimization of all destination index files +print "Optimize every index:\n"; +optimizeallind (); + +exit; + +# close all destination index files +sub closeallind { + my $name; + my $file; + while (($name,$file) = each %indfile) { + print " Close $indexbase-$name.ind\n" ; + close ($file); + $indfile{"$name"}=0; + } +} + +# optimize all destination index files +sub optimizeallind { + my $name; + my $file; + while (($name,$file) = each %indfile) { + print " $indexbase-$name.ind\n"; + optimizeind( "$name" ); + } +} + +# print arg 1 to all destination index files +sub printtoallind { + my $line = shift; + my $name; + my $file; + while (($name,$file) = each %indfile) { + print ($file $line); + } +} + +# process an index entry (copy it to valid destination index files) +sub processentry { + my $line = shift; + my $file = $indfile{"gen"}; + if ( $line =~ /\\UseIndex *\{([^\}]*)\} *(.*)/ ) { + $file = $indfile{"$1"}; + print ($file $line); + } else { + print ($file $line); + } +} + +# optimize an index files (remove \indexsection without \item) +sub optimizeind { + my $idx = shift; + my $interstuff = ""; + my $line; + + open (IN, "<$indexbase-$idx.ind" ) || + die "Cannot open $indexbase-$idx.ind for reading"; + open (OUT, ">$indexbase-$idx.new" ) || + die "Cannot open $indexbase-$idx.new for writing"; + + while ( $line=<IN> ) { + if ( $line =~ /^ *\\indexspace/ ) { + $interstuff = "\n$line"; + } elsif ( ( $line =~ /^ *\\indexsection *\{/ ) || + ( $line =~ /^$/ ) ) { + $interstuff = "$interstuff$line"; + } else { + print (OUT $interstuff) if ( !( $interstuff =~ /^$/ ) + && !( $line =~ /^ *\\end\{theindex\}/ ) ); + $interstuff = ""; + print (OUT $line); + } + } + + close (OUT); + close (IN); + unlink "$indexbase-$idx.ind" || + die "Cannot delete $indexbase-$idx.ind"; + rename "$indexbase-$idx.new", "$indexbase-$idx.ind" || + die "Cannot rename $indexbase-$idx.new to §indexbase-$idx.ind"; +} diff --git a/macros/latex/contrib/koma-script/source-doc/english/Makefile b/macros/latex/contrib/koma-script/source-doc/english/Makefile new file mode 100644 index 0000000000..b418a621f7 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/Makefile @@ -0,0 +1,55 @@ +# ====================================================================== +# Makefile +# Copyright (c) Markus Kohm, 2002-2015 +# +# This file is part of the LaTeX2e KOMA-Script bundle. +# +# This work may be distributed and/or modified under the conditions of +# the LaTeX Project Public License, version 1.3c of the license. +# The latest version of this license is in +# http://www.latex-project.org/lppl.txt +# and version 1.3c or later is part of all distributions of LaTeX +# version 2005/12/01 or later and of this work. +# +# This work has the LPPL maintenance status "author-maintained". +# +# The Current Maintainer and author of this work is Markus Kohm. +# +# This work consists of all files listed in manifest.txt. +# ---------------------------------------------------------------------- +# Makefile +# Copyright (c) Markus Kohm, 2002-2015 +# +# Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +# Version 1.3c, verteilt und/oder veraendert werden. +# Die neuste Version dieser Lizenz ist +# http://www.latex-project.org/lppl.txt +# und Version 1.3c ist Teil aller Verteilungen von LaTeX +# Version 2005/12/01 oder spaeter und dieses Werks. +# +# Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +# (allein durch den Autor verwaltet). +# +# Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +# +# Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +# ====================================================================== + +# ---------------------------------------------------------------------- +# Directory with basics +BASEDIR ?= $(PWD)/../../ +DOCDIR = $(BASEDIR)doc/ +# language +LANGUAGE = english +LANGUAGESHORTCUT = en +LANGUAGELONG = english + +include $(DOCDIR)Makefile.guide + +# ---------------------------------------------------------------------- + +maintainclean_local: distclean_local + $(RM) guide.pdf $(GUIDENAME).pdf $(GUIDENAME).html + [ -L tocbasic.tex ] && $(RM) tocbasic.tex || true +# +# end of file `Makefile' diff --git a/macros/latex/contrib/koma-script/source-doc/english/adrconvnote.tex b/macros/latex/contrib/koma-script/source-doc/english/adrconvnote.tex new file mode 100644 index 0000000000..75b9b8f392 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/adrconvnote.tex @@ -0,0 +1,99 @@ +% ====================================================================== +% adrconvnote.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% adrconvnote.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about adrconv of the KOMA-Script guide +% Maintained by Jens-Uwe Morawski (with help from Markus Kohm) +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber adrconv in der KOMA-Script-Anleitung +% Verwaltet von Jens-Uwe Morawski (mit Unterstuetzung von Markus Kohm) +% +% ====================================================================== + +\KOMAProvidesFile{adrconvnote.tex} + [$Date: 2018-03-30 09:37:06 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (chapter: adrconv)] + +\translator{Jens-Uwe Morawski\and Gernot Hassenpflug\and Markus Kohm\and + Karl Hagen} + +% Date of the translated German file: 2018-01-29 + +\chapter{Creating Address Files from an Address Database}% +\labelbase{addrconv}% +\Index{address>file}% +\Index{address>database}% +\IndexPackage{addrconv} + +In previous versions of \KOMAScript{}, the \Package{addrconv} package was an +integral part of the \KOMAScript{} system. The main connection to +\KOMAScript{} was that with the help of this package, it was possible to +create address files compatible with the \KOMAScript{} letter class or with +the \Package{scraddr} package from an address database in \BibTeX{} format. + +\begin{lstlisting}[morekeywords={@address}] + @address{HMUS, + name = {Carl McExample}, + title = {Dr.}, + city = {Anywhere}, + zip = 01234, + country = {Great Britain}, + street = {A long Road}, + phone = {01234 / 5 67 89}, + note = {always forget his birthday}, + key = {HMUS}, + } +\end{lstlisting} + +From entries such as the one above, you can use \BibTeX{} and various +{\BibTeX} styles to create address files. There are also some special \LaTeX{} +files that make it possible to create various telephone and address lists from +the address files. + +However, the \Package{addrconv} package was actually an independent package, +including features beyond what is required for \KOMAScript{}. That is why +\Package{addrconv} has not been included in \KOMAScript{} for some time. The +\Package{adrconv} package, with a single \emph{d}, entirely replaces +\Package{addrconv}. If it is not included in your \TeX{} distribution, you can +download it from \cite{package:adrconv} and install it separately. + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/authorpart.tex b/macros/latex/contrib/koma-script/source-doc/english/authorpart.tex new file mode 100644 index 0000000000..37b4d7bc8a --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/authorpart.tex @@ -0,0 +1,80 @@ +% ====================================================================== +% authorpart.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% authorpart.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% First part: KOMA-Script for Authors +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Erster Teil: KOMA-Script fuer Autoren +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\ProvidesFile{authorpart.tex}[2012/04/02 Part KOMA-Script for Authors] +\translator{Markus Kohm\and Krickette Murabayashi\and Karl Hagen} + +\setpartpreamble{% + \vspace*{2\baselineskip}% + \setlength{\parindent}{1em}% + + \noindent This part provides information for writers of articles, reports, + books, and letters. The average user is probably less interested in how + things are implemented in \KOMAScript{} and what pitfalls exist. Also, + normal users aren't interested in obsolete options and instructions. They + want to know how to achieve things using current options and instructions, + and perhaps in some background information about typography. + + The few passages in this part which contain extra information and + explanations that may be of less interest for the impatient reader are set + in a sans-serif typeface and can be skipped if desired. For those who are + interested in more information about the implementation, side-effects with + other packages, or obsolete options and instructions, please refer to + \autoref{part:forExperts} beginning on \autopageref{part:forExperts}. That + part of the \KOMAScript{} guide also describes all the features that were + created specially for authors of packages and classes.% +} + +\part{\KOMAScript{} for Authors\label{part:forAuthors}} + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "guide.tex" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-compatibility.tex b/macros/latex/contrib/koma-script/source-doc/english/common-compatibility.tex new file mode 100644 index 0000000000..bed043d8d3 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-compatibility.tex @@ -0,0 +1,197 @@ +% ====================================================================== +% common-compatibility.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-compatibility.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-compatibility.tex} + [$Date: 2018-02-28 13:23:23 +0100 (Wed, 28 Feb 2018) $ + KOMA-Script guide (common paragraphs)] +\translator{Markus Kohm\and Krickette Murabayashi\and Karl Hagen} + +% Date of the translated German file: 2018-01-30 + +\section{Compatibility with Earlier Versions of \KOMAScript} +\seclabel{compatibilityOptions} +\BeginIndexGroup +\BeginIndex{}{Compatibility} + +\IfThisCommonFirstRun{}{% + The information in + \autoref{sec:\ThisCommonFirstLabelBase.compatibilityOptions} applies equally + to this chapter. + \IfThisCommonLabelBase{scrlttr2}{However, this feature has existed in + \Class{scrlttr2} since version~2.9t, whereas \Package{scrletter} does not + offer it. }{}% + So if you have already read and understood + \autoref{sec:\ThisCommonFirstLabelBase.compatibilityOptions} you can skip + ahead to \autopageref{sec:\ThisCommonLabelBase.compatibilityOptions.next}, + \autopageref{sec:\ThisCommonLabelBase.compatibilityOptions.next}.% +} + +\IfThisCommonLabelBaseOneOf{typearea,maincls,scrlttr2,scrextend}{% + Those who produce their documents from source code typically attach the + utmost importance to the fact that future \LaTeX{} runs will yield exactly + the same result. In some cases, however, improvements and bug fixes to the + \IfThisCommonLabelBaseOneOf{maincls,scrlttr2}{class}{package} will + result in changes of behaviour, especially to the layout. This, however, + may be undesirable.% +}{% + % \IfThisCommonLabelBase{scrextend}{% + % In some cases, improvements and bug fixes to the package will result + % in changes of behaviour, especially to the layout. This, however, + % may be undesirable. Those who produce their documents from source code + % typically attach the utmost importance to the fact that future + % \LaTeX{} runs will yield exactly the same result.% + % }{% + \ThisCommonLabelBaseFailure + % \IfThisCommonLabelBase{scrlttr2}{% + % In some cases, improvements and bug fixes to the package will result + % in changes of behaviour, especially to the layout. This, however, + % may be undesirable. + % }{}% + % }% +}% + + +\begin{Declaration} + \OptionVName{version}{value}% + \OptionValue{version}{first}% + \OptionValue{version}{last} +\end{Declaration} +%\ChangedAt{v2.96a}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}% +%\ChangedAt{v2.9t}{\Class{scrlttr2}}% +%\ChangedAt{v3.01b}{\Package{typearea}}% +\IfThisCommonLabelBase{scrextend}{With \Package{scrextend}, you can}{Since + \IfThisCommonLabelBase{typearea}{% + Version~3.01b, \Package{typearea}\ChangedAt{v3.01b}{\Package{typearea}}}{% + \IfThisCommonLabelBase{maincls}{% + Version~2.96a, \KOMAScript{}\ChangedAt{v2.96a}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}}}{% + \IfThisCommonLabelBase{scrlttr2}{% + Version~2.9t, \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}}% + \ChangedAt{v2.9t}{\Class{scrlttr2}}}{% + \InteralCommonFileUsageError}% + }% + }% +\ has been able to } +choose whether the source file should, as much as possible, +continue to produce exactly the same result within a \LaTeX{} run or should +be formatted according to the modifications of the latest version% +\IfThisCommonLabelBaseOneOf{maincls,scrlttr2}{ of the class}{}. You +can specify the version with which you want your file to be compatible by +using the \Option{version} option. Compatibility with the oldest supported +\KOMAScript{} version can be achieved with +\OptionValue{version}{first}\important{\OptionValue{version}{first}} or +\OptionValue{version}{2.9} or \OptionValue{version}{2.9t}. Setting +\PName{value} to an unknown release number will result in a warning message +and selects \OptionValue{version}{first} for safety. + +With \OptionValue{version}{last}\important{\OptionValue{version}{last}}% +\textnote{default}, you can select the latest version. In this case, you give +up backwards compatibility. If the option is used without a value, +\PValue{last} is assumed. This\ChangedAt{v3.01a}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}\and \Class{scrlttr2}\and + \Package{scrextend}} also corresponds to the default setting, as long as you +do not use any deprecated options. + +\IfThisCommonLabelBase{scrextend}{% scrextend doesn't recognize obsolete options +}{% + If\textnote{Attention!} you use a deprecated option of \KOMAScript~2, + \KOMAScript~3 will switch to \OptionValue{version}{first} automatically. + This will also result in a warning message that explains how to prevent + this switch. Alternatively, you can choose a different setting for + \Option{version} with the desired compatibility after the deprecated + option.% +} + +Compatibility is primarily a question of line and page breaks (wrapping). If +you choose compatibility with an older version, new options that do not affect +wrapping are still available. The \Option{version} option does not affect any +wrapping changes that are the result of fixing unambiguous errors. +If\textnote{Hint!} you need unconditional wrapping compatibility even in the +case of bugs, you should physically save the old \KOMAScript{} version you +need together with your document. + +\IfThisCommonLabelBase{scrlttr2}{% + \begin{Example} + The example letters in this chapter should use all the features of the + latest version of \KOMAScript{}. For this, the we set the compatibility + correspondingly when loading the class:% + \lstinputcode[xleftmargin=1em,lastline=1]{letter-0.tex}% + In this case the symbolic value \PValue{last} has been used to select the + latest version.% + \iftrue% Umbruchkorrektur + Here, the latest version was simply chosen with the symbolic value + \PValue{last}.% + \else% + In order not to have to specify a new version number for each new version, + the symbolic value \PValue{last} was chosen here.% + \fi + \end{Example}}{} + +Note\textnote{Attention!} that you cannot change the \Option{version} option +after loading the % +\IfThisCommonLabelBaseOneOf{maincls,scrlttr2}{class}{% + \IfThisCommonLabelBase{typearea}{\Package{typearea}}{% + \IfThisCommonLabelBase{scrextend}{\Package{scrextend}}{% + \InternalCommonFileUsageError }% + }% +\ package}. Setting this option with +\DescRef{\ThisCommonLabelBase.cmd.KOMAoptions} or +\DescRef{\ThisCommonLabelBase.cmd.KOMAoption} will +therefore cause an error.% +\EndIndexGroup +% +\EndIndexGroup + +\phantomsection +\label{sec:\ThisCommonLabelBase.compatibilityOptions.end} +\endinput + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-dictum.tex b/macros/latex/contrib/koma-script/source-doc/english/common-dictum.tex new file mode 100644 index 0000000000..5dff550ac7 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-dictum.tex @@ -0,0 +1,260 @@ +% ====================================================================== +% common-dictum.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-dictum.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-dictum.tex} + [$Date: 2018-03-30 09:37:06 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (common paragraphs)] +\translator{Gernot Hassenpflug\and Markus Kohm\and Krickette Murabayashi\and + Karl Hagen} + +% Date of the translated German file: 2018-01-29 + +\section{Dicta} +\seclabel{dictum}% +\BeginIndexGroup +\BeginIndex{}{saying}% +\BeginIndex{}{dictum}% +\BeginIndex{}{epigraph}% + +\IfThisCommonFirstRun{}{% + The information in \autoref{sec:\ThisCommonFirstLabelBase.dictum} applies + equally to this chapter. % + \IfThisCommonLabelBase{scrextend}{% + However, \Package{scrextend} does not support the commands + \DescRef{maincls.cmd.setchapterpreamble} and + \DescRef{maincls.cmd.setpartpreamble}. + \iftrue% Umbruchvariante + Whether the class you are using offers an equivalent instruction + can be found in the documentation for the respective class .% + \fi% + }{}% + So if you have already read and understood + \autoref{sec:\ThisCommonFirstLabelBase.dictum}, you can skip ahead to + \autoref{sec:\ThisCommonLabelBase.dictum.next}, + \autopageref{sec:\ThisCommonLabelBase.dictum.next}.% +}{}% + +\IfThisCommonLabelBase{scrextend}{% Umbruchkorrekturvarianten + A common element in a document is an epigraph or quotation that is set above + or below a chapter or section heading, typically right-justified. The + epigraph and its source are usually specially formatted.% +}{% + A common element in a document is an epigraph or quotation that is set above + or below a chapter or section heading, along with a reference to the source + and its own formatting.% +} % +\KOMAScript{} refers to such an epigraph as a \emph{dictum}. + +\begin{Declaration} + \Macro{dictum}\OParameter{author}\Parameter{text}% + \Macro{dictumwidth}% + \Macro{dictumauthorformat}\Parameter{author}% + \Macro{dictumrule}% + \Macro{raggeddictum}% + \Macro{raggeddictumtext}% + \Macro{raggeddictumauthor} +\end{Declaration}% +You can set such a saying with the help of the \Macro{dictum} command. % +\IfThisCommonLabelBase{maincls}{% + This\textnote{Hint!} macro can be included in the mandatory argument of + either the \DescRef{maincls.cmd.setchapterpreamble} or the + \DescRef{maincls.cmd.setpartpreamble} command. However, this is not + obligatory.\par% +}{}% +The dictum, along with an optional \PName{author}, is inserted in a +\Macro{parbox}\IndexCmd{parbox} (see \cite{latex:usrguide}) of width +\Macro{dictumwidth}. However, \Macro{dictumwidth} is not a length which can be +set with \Macro{setlength}. It is a macro that can be redefined using +\Macro{renewcommand}. The default is \PValue{0.3333\Length{textwidth}}, which +is one third of the text width. The box itself is aligned with the command +\Macro{raggeddictum}. The default is \Macro{raggedleft}\IndexCmd{raggedleft}, +that is, right justified. \Macro{raggeddictum} can be redefined +with \IfThisCommonLabelBase{scrextend}{% Umbruchoptimierung +}{the help of }\Macro{renewcommand}. + +You can align the \PName{dictum} within the box using +\Macro{raggeddictumtext}\important{\Macro{raggeddictumtext}}. +The default is \Macro{raggedright}\IndexCmd{raggedright}, that is, left +justified. You can also redefine this macro with \Macro{renewcommand}.% +\BeginIndexGroup +\BeginIndex{FontElement}{dictum}\LabelFontElement{dictum}% +\LabelFontElement{dictumtext}% +The output uses the default font setting for the element +\FontElement{dictum}\important{\FontElement{dictum}}, which can be changed +with the commands \DescRef{\ThisCommonLabelBase.cmd.setkomafont} and +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} (see +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}). Default settings are +listed in \autoref{tab:maincls.dictumfont}% +\IfThisCommonFirstRun{.% + \begin{table} +% \centering% + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside}{Default settings for the elements of a dictum} + [l] + \begin{tabular}[t]{ll} + \toprule + Element & Default \\ + \midrule + \DescRef{\LabelBase.fontelement.dictum} & + \Macro{normalfont}\Macro{normalcolor}\Macro{sffamily}\Macro{small}\\ + \DescRef{\LabelBase.fontelement.dictumauthor} & + \Macro{itshape}\\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:\ThisCommonLabelBase.dictumfont} + \end{table} +}{% + , \autopageref{tab:\ThisCommonFirstLabelBase.dictumfont}.% +} +\EndIndexGroup + +If an \PName{author} is defined, it is separated from the \PName{dictum} by +a horizontal rule spanning the full width of the \Macro{parbox}. This% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.10}{\Package{scrextend}}% + }{\InternalCommonFileUsageError}% +} % +rule is defined in \Macro{dictumrule}\important{\Macro{dictumrule}} as a +vertical object with +\begin{lstcode} + \newcommand*{\dictumrule}{\vskip-1ex\hrulefill\par} +\end{lstcode} + +The \Macro{raggeddictumauthor}\important{\Macro{raggeddictumauthor}} command +defines the alignment for the rule and the \PName{author}. The default is +\Macro{raggedleft}. This command can also be redefined using +\Macro{renewcommand}. The format is defined with +\Macro{dictumauthorformat}\important{\Macro{dictumauthorformat}}. This macro +expects the \PName{author} text as its argument. By default +\Macro{dictumauthorformat} is defined as +\begin{lstcode} + \newcommand*{\dictumauthorformat}[1]{(#1)} +\end{lstcode} +Thus the \PName{author} is set enclosed in rounded parentheses. +\BeginIndexGroup +\BeginIndex{FontElement}{dictumauthor}\LabelFontElement{dictumauthor}% +For the \FontElement{dictumauthor}\important{\FontElement{dictumauthor}} +element, you can define a different font than that used for the +\DescRef{\LabelBase.fontelement.dictum} element. The default settings are +listed in \autoref{tab:maincls.dictumfont}. Changes can be made using the +\DescRef{\ThisCommonLabelBase.cmd.setkomafont} and +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}).% +\EndIndexGroup + +\IfThisCommonLabelBase{maincls}{% + If you use \Macro{dictum} within the + \DescRef{maincls.cmd.setchapterpreamble} or + \DescRef{maincls.cmd.setpartpreamble} macro, you must ensure that + the horizontal positioning is always done with + \Macro{raggeddictum}. Therefore, the optional argument for horizontal + positioning which is implemented for these two commands has no effect. + \Length{textwidth} is not the width of the whole text body but the + current text width. If \Macro{dictumwidth} is set to + \PValue{.5\Length{textwidth}} and \DescRef{maincls.cmd.setchapterpreamble} + has an optional width of \PValue{.5\Length{textwidth}} too, you will get a + box with a width one quarter of the text width. Therefore, if you use + \Macro{dictum} you should refrain from setting the optional width for + \DescRef{maincls.cmd.setchapterpreamble} or + \DescRef{maincls.cmd.setpartpreamble}. + + If\textnote{Hint!} you have more than one dictum, one under another, you + should separate them by an additional vertical space, which is easily + accomplished using the \Macro{bigskip}\IndexCmd{bigskip} command.% + \iftrue% +}{\csname iffalse\endcsname} + + \begin{Example} + You are writing a chapter about modern marriage, and you want to place a + dictum in the preamble to the chapter heading. You write: +\begin{lstcode} + \setchapterpreamble[u]{% + \dictum[Schiller]{So pause ye who would link your fates~\dots}} + \chapter{Modern Marriage} +\end{lstcode} + The output would look as follows: + \begin{ShowOutput} + {\usekomafont{disposition}\usekomafont{chapter}% + 17\enskip Modern Marriage\par} \vspace{\baselineskip} + \dictum[Schiller]{So pause ye who would link + your fates~\dots} + \end{ShowOutput} + + If you want the dictum to span only a quarter of the text width + rather than a third, you can redefine \Macro{dictumwidth} this way: +\begin{lstcode} + \renewcommand*{\dictumwidth}{.25\textwidth} +\end{lstcode} +\end{Example} + +\IfThisCommonLabelBase{maincls}{}{% Umbruchkorrekturtext + At this point, note the \Package{ragged2e}\important{\Package{ragged2e}}% + \IndexPackage{ragged2e} package, with which you can produce unjustified text + that uses hyphenation (see \cite{package:ragged2e}).% +}% +\fi +% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-draftmode.tex b/macros/latex/contrib/koma-script/source-doc/english/common-draftmode.tex new file mode 100644 index 0000000000..383c9236c5 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-draftmode.tex @@ -0,0 +1,129 @@ +% ====================================================================== +% common-draftmode.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-draftmode.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-draftmode.tex} + [$Date: 2018-02-28 13:23:23 +0100 (Wed, 28 Feb 2018) $ + KOMA-Script guide (common paragraphs)] +\translator{Markus Kohm\and Gernot Hassenpflug\and Krickette Murabayashi\and + Karl Hagen} + +% Date of the translated German file: 2018-01-30 + +\section{Draft Mode} +\seclabel{draft}% +\BeginIndexGroup +\BeginIndex{}{draft mode}% + +\IfThisCommonFirstRun{}{% + The information in \autoref{sec:\ThisCommonFirstLabelBase.draft} applies + equally to \IfThisCommonLabelBase{scrlttr2}{\Class{scrlttr2}% + \OnlyAt{\Class{scrlttr2}}}{this chapter}. So if you have already read + and understood \autoref{sec:\ThisCommonFirstLabelBase.draft}, you can skip + ahead to \autoref{sec:\ThisCommonLabelBase.draft.next} on + \autopageref{sec:\ThisCommonLabelBase.draft.next}.% + \IfThisCommonLabelBase{scrlttr2}{ The \Package{scrletter} package does not + provide a draft mode itself but relies upon the class you use.}{}% +} + +Many classes and packages provide a draft mode in addition to the normal +typesetting mode. The differences between these two are as diverse as +the classes and packages that offer this distinction.% +\IfThisCommonLabelBase{scrextend}{% Umbruchkorrekturtext + \ The draft mode of some packages also results in changes to the output + that affect the document's layout. This is not the case with + \Package{scrextend}.% +}{} + +\begin{Declaration} + \OptionVName{draft}{simple switch} + \OptionVName{overfullrule}{simple switch} +\end{Declaration}% +The \Option{draft}\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrartcl}\and + \Class{scrreprt}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}\OnlyAt{\Class{scrlttr2}}% + }{}% +} option distinguishes between documents being drafted and finished +documents\Index{final version}. The \PName{simple switch} can be one of the +standard values for simple switches from \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch}. If you activate this +option\important{\OptionValue{draft}{true}}, small black boxes will be output +at the end of overly long lines. These boxes make it easier for the untrained +eye to locate the paragraphs that require manual post-processing. By contrast, +the default, \OptionValue{draft}{false}, shows no such boxes. Incidentally, +such lines often disappear when you use the +\Package{microtype}\IndexPackage{microtype}\important{\Package{microtype}} +package \cite{package:microtype}. + +Since\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.25}{\Class{scrbook}\and \Class{scrartcl}\and + \Class{scrreprt}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.25}{\Class{scrlttr2}}% + }{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.25}{\Package{scrextend}}% + }{}% + }% +} the \Option{draft} option can lead to all sorts of unwanted effects with +various packages, \KOMAScript{} allows you to control this marking of overly +long lines separately with the +\Option{overfullrule}\important{\OptionValue{overfullrule}{true}} option. If +this option is enabled, the marker is again displayed.% +% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-fontsize.tex b/macros/latex/contrib/koma-script/source-doc/english/common-fontsize.tex new file mode 100644 index 0000000000..843f9482f2 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-fontsize.tex @@ -0,0 +1,188 @@ +% ====================================================================== +% common-fontsize.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-fontsize.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-fontsize.tex} + [$Date: 2018-03-30 09:37:06 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (common paragraphs: fontsize)] +\translator{Markus Kohm\and Krickette Murabayashi\and Karl Hagen} + +% Date of the translated German file: 2017-12-13 + +\section{Choosing the Document Font Size} +\seclabel{fontOptions}% +\BeginIndexGroup +\BeginIndex{}{font>size}% + +\IfThisCommonFirstRun{% + The main font and its size are central elements in the design of a document. + As stated in \autoref{cha:typearea}, the division of the page into the text + area and the margins fundamentally depends on them. The main font is the one + that is used for most of the text in a document. All variations, whether in + shape, thickness, slant, or size, are related to the main font.% +}{% + The information in \autoref{sec:\ThisCommonFirstLabelBase.fontOptions} + applies equally to + \IfThisCommonLabelBase{scrlttr2}{\Class{scrlttr2}\OnlyAt{scrlttr2}}% + {this chapter}. \IfThisCommonLabelBase{scrlttr2}{By contrast, the + \Package{scrletter} package by itself does not offer font-size selection + but depends completely on the class you use.}{} So if you have already + read and understood \autoref{sec:\ThisCommonFirstLabelBase.fontOptions}, you + can \IfThisCommonLabelBase{scrlttr2}{continue to + \autopageref{sec:\ThisCommonLabelBase.fontOptions.end} at the end of this + section. If you use \Package{scrletter}, you can }{}% + skip directly to \autoref{sec:\ThisCommonLabelBase.fontOptions.next}, + \autopageref{sec:\ThisCommonLabelBase.fontOptions.next}.% +} + +\begin{Declaration} + \OptionVName{fontsize}{size} +\end{Declaration} +While\IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{% + \textnote{\KOMAScript{} vs. standard classes}} the standard classes support +only a very limited number of font sizes, +\IfThisCommonLabelBase{scrlttr2}{\Class{scrlttr2}}{\KOMAScript} provides the +ability to specify any \PName{size} for the main font. You can also use any +known \TeX unit as a unit for the \PName{size}. If the \PName{size} is +specified without a unit, it is assumed to be \PValue{pt}.\iffree{}{ The exact + procedure for setting the font size is documented for experts and interested + users in \autoref{sec:maincls-experts.addInfos}, + \DescPageRef{maincls-experts.option.fontsize}.} + +If you set the option within the document, the main font size and the +dependent font sizes of the commands \Macro{tiny}, \Macro{scriptsize}, +\Macro{footnotesize}, \Macro{small}, \Macro{normalsize}, \Macro{large}, +\Macro{Large}, \Macro{LARGE}, \Macro{huge} and \Macro{Huge} are changed. This +can be useful, for example, if you want % +\IfThisCommonLabelBase{scrlttr2}{another letter }{the appendix }% +to be set in a smaller font size. + +Note\textnote{Attention!} that using this option after +\IfThisCommonLabelBase{scrextend}{potentially loading + \hyperref[cha:typearea]{\Package{typearea}}\IndexPackage{typearea}% + \important{\hyperref[cha:typearea]{\Package{typearea}}}}{loading the class} +does not automatically recalculate the type area and margins (see +\DescRef{typearea.cmd.recalctypearea}\IndexCmd{recalctypearea}, +\autoref{sec:typearea.typearea}, +\DescPageRef{typearea.cmd.recalctypearea}). However, if this recalculation is +performed, it will be based on the current main font size. The effects of +changing the main font size upon other loaded packages or the class used +depends on these packages and on the class. \IfThisCommonLabelBase{maincls}{% + This means that you can encounter errors which are not the fault of + \KOMAScript, and even the \KOMAScript{} classes themselves do not + recalculate all lengths if the main font size changes after loading the + class.% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + You can encounter errors which are not the fault of \KOMAScript{}, and + further, the \Class{scrlttr2} class itself does not recalculate all + lengths if the main font size changes after loading the class.% + }{% + This means that you can encounter errors which are not the fault of + \KOMAScript{}.% + }% +}% + +This\textnote{Attention!} option should by no means be misinterpreted as a +substitute for \Macro{fontsize} (see \cite{latex:fntguide}). Also, you should +not use it in place of one of the font size commands that are relative to the +main font, from \Macro{tiny} to \Macro{Huge}. +\IfThisCommonLabelBase{scrlttr2}{% + For \Class{scrlttr2} the default is \OptionValue{fontsize}{12pt}. + + \begin{Example} + \phantomsection\label{sec:\ThisCommonLabelBase.fontOptions.end}% + Suppose the organization in the sample letter is the \emph{``Friends of + Noxious Font Sizes''}, for which reason it should be set in 14\Unit{pt} + instead of 12\Unit{pt}. You can achieve this by making a small change to + the first line:% + \lstinputcode[xleftmargin=1em]{letter-6}% + Alternatively, the option could be set as an optional argument to + \DescRef{\LabelBase.env.letter}: + \lstinputcode[xleftmargin=1em]{letter-5}% + Since the text area is not recalculated in this late change of the font + size, the two results differ in \autoref{fig:scrlttr2.letter-5-6}. + \begin{figure} + \centering + \frame{\includegraphics[width=.4\textwidth]{letter-5}}\quad + \frame{\includegraphics[width=.4\textwidth]{letter-6}} + \caption[{Example: letter with address, salutation, text, closing phrase, + postscript, enclosures, distribution list, and noxiously large font + size}] + {result of a short letter with recipient, opening, text, closing, + postscript, enclosures, distribution list, and a noxiously large font + (the date is set by default): in the left-hand version, the font size + has been defined by the optional argument of + \DescRef{\LabelBase.env.letter}; in the right-hand one, the optional + argument of \DescRef{\LabelBase.cmd.documentclass} has been used} + \label{fig:scrlttr2.letter-5-6} + \end{figure} + \end{Example} +}{% + \IfThisCommonLabelBase{maincls}{% + \par + \phantomsection\label{sec:\ThisCommonLabelBase.fontOptions.end}% + The default for \Class{scrbook}, \Class{scrreprt}, and \Class{scrartcl} is + \OptionValue{fontsize}{11pt}.\textnote{\KOMAScript{} vs. standard classes} + In contrast, the default size in the standard classes is \Option{10pt}. + You may need to account for this difference if you switch from a standard + class to a \KOMAScript{} class\iffree{}{ or when using the + \DescRef{maincls-experts.option.emulatestandardclasses}% + \IndexOption{emulatestandardclasses} option}.% + }{}% +}% +% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-footnotes.tex b/macros/latex/contrib/koma-script/source-doc/english/common-footnotes.tex new file mode 100644 index 0000000000..c08b203b29 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-footnotes.tex @@ -0,0 +1,626 @@ +% ====================================================================== +% common-footnotes.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-footnotes.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-footnotes.tex} + [$Date: 2018-03-30 09:37:06 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (common paragraphs: Footnotes)] +\translator{Markus Kohm\and Krickette Murabayashi\and Karl Hagen} + +% Date of the translated German file: 2018-01-29 + +\section{Footnotes} +\seclabel{footnotes}% +\BeginIndexGroup +\BeginIndex{}{footnotes}% + +\IfThisCommonFirstRun{}{% + The information in \autoref{sec:\ThisCommonFirstLabelBase.footnotes} applies + equally to this chapter. So if you have already read and understood + \autoref{sec:\ThisCommonFirstLabelBase.footnotes}, you can skip ahead to + \autopageref{sec:\ThisCommonLabelBase.footnotes.next}, + \autopageref{sec:\ThisCommonLabelBase.footnotes.next}.% + \IfThisCommonLabelBase{scrlttr2}{ % + If you do not use a \KOMAScript{} class, \Package{scrletter}% + \OnlyAt{\Package{scrletter}} relies on the + \hyperref[cha:scrextend]{\Package{scrextend}}\IndexPackage{scrextend}% + \important{\hyperref[cha:scrextend]{\Package{scrextend}}} package. + Therefore, see also \autoref{sec:scrextend.footnotes}, + \autopageref{sec:scrextend.footnotes} when using \Package{scrletter}.% + \iffalse% Umbruchkorrekturtext + \ Note in particular that in this case some typical \KOMAScript{} + extensions are not active by default\textnote{default}. Instead, the + footnotes make use of the class used, or the \LaTeX{} kernel.% + \fi% + }{}% +} + +\IfThisCommonLabelBase{maincls}{% + Unlike\textnote{\KOMAScript{} vs. standard classes} the standard classes, + \KOMAScript{} offers the ability to configure the format of the footnote + block.% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + You can find the basic commands to set footnotes in any introduction to + \LaTeX, for example \cite{lshort}. \KOMAScript{}% + \textnote{\KOMAScript{} vs. standard classes} provides additional features + to change the format of the footnote block. % + \iffalse % Umbruchoptimierung + + Whether footnotes should be allowed for letters depends very much on the + type of letter and its layout. For example, you should not allow + footnotes to overlap visually with the letterhead footer or be confused + with the courtesy-copy list. Doing so is the responsibility of the + user.% + + Since footnotes are rarely used in letters, examples in this section have + been omitted. If you need examples, you can find them in + \autoref{sec:\ThisCommonFirstLabelBase.footnotes}, + \autopageref{sec:\ThisCommonFirstLabelBase.footnotes}.% + \fi% + }{% + \IfThisCommonLabelBase{scrextend}{% + The footnote capabilities of the \KOMAScript{} classes are also + provided by \Package{scrextend}. By default, the formatting of + footnotes is left to the class used. This changes as soon as you + issue the \DescRef{\ThisCommonLabelBase.cmd.deffootnote} command, + which is explained in detail on + \DescPageRef{\ThisCommonLabelBase.cmd.deffootnote}. + + The options for adjusting the dividing line above footnotes, however, + are not provided by \Package{scrextend}.% + }{\InternalCommonFileUsageError}% + }% +}% + +\begin{Declaration} + \OptionVName{footnotes}{setting} + \Macro{multfootsep} +\end{Declaration} +\IfThisCommonLabelBase{scrextend}{Many classes mark footnotes }{% + Footnotes % + \IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + }{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}% + }{}% + }% + are marked % +}% +by default in the text with a small superscript number. If several footnotes +appear in succession at the same point, it gives the impression that there is +one footnote with a large number rather than multiple footnotes (e.\,g. +footnote 12 instead of footnotes 1 and 2). +With\important{\OptionValue{footnotes}{multiple}} +\OptionValue{footnotes}{multiple}\IndexOption{footnotes=~multiple}, footnotes +that follow each other directly are separated with a delimiter instead. The +default delimiter in \Macro{multfootsep}\important{\Macro{multfootsep}} is +defined as a comma without a space: +\begin{lstcode} + \newcommand*{\multfootsep}{,} +\end{lstcode} +This can be redefined. + +The whole mechanism is compatible with the +\Package{footmisc}\IndexPackage{footmisc}\important{\Package{footmisc}} +package, version~5.3d to 5.5b (see \cite{package:footmisc}). It affects +footnote markers placed using +\DescRef{\ThisCommonLabelBase.cmd.footnote}\IndexCmd{footnote}, as well as +those placed directly with +\DescRef{\ThisCommonLabelBase.cmd.footnotemark}\IndexCmd{footnotemark}. + +You can switch back to the default +\OptionValue{footnotes}{nomultiple} at any time using the +\DescRef{\ThisCommonLabelBase.cmd.KOMAoptions} or +\DescRef{\ThisCommonLabelBase.cmd.KOMAoption} command. However, if you +encounter any problems using another package that alters the footnotes, you +should not use this option, nor should you change the \PName{setting} anywhere +inside the document. + +A summary of the available \PName{setting} values of \Option{footnotes} can +be found in \autoref{tab:\ThisCommonFirstLabelBase.footnotes}% +\IfThisCommonFirstRun{% + . + \begin{table} + \caption[{Available values for the \Option{footnotes} option}] + {Available values for the \Option{footnotes} option to configure footnotes} + \label{tab:\ThisCommonLabelBase.footnotes} + \begin{desctabular} + \pventry{multiple}{% + Consecutive footnote marks will be separated by + \DescRef{\ThisCommonLabelBase.cmd.multfootsep}\IndexCmd{multfootsep}.% + \IndexOption{footnotes~=\textKValue{multiple}}}% + \pventry{nomultiple}{% + Consecutive footnote marks will be handled like single footnotes + and not separated from each other.% + \IndexOption{footnotes~=\textKValue{nomultiple}}}% + \end{desctabular} + \end{table}% +}{, + \autopageref{tab:\ThisCommonFirstLabelBase.footnotes}.% +}% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{footnote}\OParameter{number}\Parameter{text}% + \Macro{footnotemark}\OParameter{number}% + \Macro{footnotetext}\OParameter{number}\Parameter{text}% + \Macro{multiplefootnoteseparator}% +\end{Declaration}% +Footnotes in \KOMAScript{} are produced, as they are in the standard classes, +with the \Macro{footnote} command, or alternatively the pair of commands +\Macro{footnotemark} and \Macro{footnotetext}. As in the standard classes, +it is possible for a page break to occur within a footnote. Normally this +happens if the footnote mark is placed so near the bottom of a page as to +leave \LaTeX{} no choice but to move the footnote to the next page. +Unlike\textnote{\KOMAScript{} vs. standard classes} +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}% + }{}% +} % +the standard classes, \KOMAScript{} can recognize and separate consecutive +footnotes automatically. +See\important{\DescRef{\ThisCommonLabelBase.option.footnotes}} the previously +documented option \DescRef{\ThisCommonLabelBase.option.footnotes}. + +If instead you want to place this delimiter manually, you can do so by calling +\Macro{multiplefootnoteseparator}. However, users should not redefine this +command, as it contains not only the delimiter but also the delimiter's +formatting, for example the font size selection and the superscript. The +delimiter itself is stored in the previously described +\DescRef{\ThisCommonLabelBase.cmd.multfootsep}% +\important{\DescRef{\ThisCommonLabelBase.cmd.multfootsep}}% +\IndexCmd{multfootsep} command. + +\IfThisCommonFirstRun{\iftrue}{% + You can find examples and additional hints in + \autoref{sec:\ThisCommonFirstLabelBase.footnotes} from + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.footnote}.% + \csname iffalse\endcsname }% + \begin{Example} + \phantomsection\xmpllabel{cmd.footnote}% + Suppose you want to put two footnotes after a single word. First you try +\begin{lstcode} + Word\footnote{1st footnote}\footnote{2nd footnote} +\end{lstcode} + Let's assume that the footnotes are numbered 1 and 2. Since the two + footnote numbers follow each other directly, it creates the impression + that the word has only one footnote numbered 12. You can change this + behaviour by using +\begin{lstcode} + \KOMAoptions{footnotes=multiple} +\end{lstcode} + to enable the automatic recognition of footnote sequences. Alternatively, + you can use +\begin{lstcode} + word\footnote{Footnote 1}% + \multiplefootnoteseparator + \footnote{Footnote 2} +\end{lstcode} + This should give you the desired result even if automatic detection + fails or cannot be used for some reason. + + Now suppose you also want the footnote numbers to be separated not just by + a comma, but by a comma and a space. In this case, write +\begin{lstcode} + \renewcommand*{\multfootsep}{,\nobreakspace} +\end{lstcode} + in the preamble of your document. + \Macro{nobreakspace}\IndexCmd{nobreakspace} was used here instead of a + normal space to avoid paragraph or page breaks within the sequence of + footnotes. + \end{Example}% +\fi% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{footref}\Parameter{reference} +\end{Declaration} +Sometimes\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}% + }{}} you have a footnote in a document to which there are several references +in the text. An inconvenient way to typeset this would be to use +\DescRef{\ThisCommonLabelBase.cmd.footnotemark} to set the number directly. +The disadvantage of this method is that you need to know the number and +manually set every \DescRef{\ThisCommonLabelBase.cmd.footnotemark} command. +And if the number changes because you add or remove an earlier footnote, you +will have to change each \DescRef{\ThisCommonLabelBase.cmd.footnotemark}. +\KOMAScript{} thefore offers the \Macro{label}\IndexCmd{label}% +\important{\Macro{label}} mechanism to handle such cases. After placing a +\Macro{label} inside the footnote, you can use \Macro{footref} to set all the +other marks for this footnote in the text. +\IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname}% + \begin{Example} + \phantomsection\xmpllabel{cmd.footref}% + You are writing a text in which you must create a footnote each time a + brand name occurs, indicating that it is a registered trademark. You can + write, for example, +\begin{lstcode} + Company SplishSplash\footnote{This is a registered trade name. + All rights are reserved.\label{refnote}} + produces not only SplishPlump\footref{refnote} + but also SplishPlash\footref{refnote}. +\end{lstcode} + This will produce the same footnote mark three times, but only one + footnote text. The first footnote mark is produced by + \DescRef{\ThisCommonLabelBase.cmd.footnote} itself, and the following two + footnote marks are produced by the additional \Macro{footref} + commands. The footnote text will be produced by + \DescRef{\ThisCommonLabelBase.cmd.footnote}. + \end{Example} + \fi When setting footnote marks with the \Macro{label} mechanism, any + changes to the footnote numbers will require at least two \LaTeX{} runs to + ensure correct numbers for all \Macro{footref} marks.% + \IfThisCommonLabelBaseOneOf{scrlttr2,scrextend}{\par% + You can find an example of how to use \Macro{footref} in + \autoref{sec:\ThisCommonFirstLabelBase.footnotes} on + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.footref}.% + }{} \IfThisCommonLabelBase{scrlttr2}{}{% + \par + Note\textnote{Attention!} that statements like \Macro{ref}\IndexCmd{ref} + or \Macro{pageref}\IndexCmd{pageref} are fragile and therefore you should + put \Macro{protect}\IndexCmd{protect} in front of them if they appear in + moving arguments such as headings.% + }% +\EndIndexGroup + + +\begin{Declaration} + \Macro{deffootnote}\OParameter{mark width}\Parameter{indent}% + \Parameter{parindent}\Parameter{definition}% + \Macro{deffootnotemark}\Parameter{definition}% + \Macro{thefootnotemark} +\end{Declaration}% +\IfThisCommonLabelBase{maincls}{The \KOMAScript{} classes set}{\KOMAScript{} + sets}\textnote{\KOMAScript{} vs. standard classes} footnotes slightly +differently than the standard classes do. As in the standard classes, the +footnote mark in the text is rendered with small, superscript numbers. The +same formatting is used in the footnote itself. The mark in the footnote is +typeset right-justified in a box with a width of \PName{mark width}. The first +line of the footnote follows directly. + +All subsequent lines will be indented by the length of \PName{indent}. If the +optional parameter \PName{mark width} is not specified, it defaults to +\PName{indent}. If the footnote consists of more than one paragraph, the first +line of each paragraph is indented by the value of \PName{parindent}. + +\autoref{fig:\ThisCommonFirstLabelBase.deffootnote} % +\IfThisCommonFirstRun{}{on + \autopageref{fig:\ThisCommonFirstLabelBase.deffootnote} }{}% +shows the different parameters% +\IfThisCommonLabelBase{maincls}{ again}{}% +. The default configuration of the \KOMAScript{} classes is as follows: +\IfThisCommonLabelBase{scrextend}{\iftrue}{\csname iffalse\endcsname}% +\begin{lstcode} + \deffootnote[1em]{1.5em}{1em}{% + \textsuperscript{\thefootnotemark}} +\end{lstcode} +\else +\begin{lstcode} + \deffootnote[1em]{1.5em}{1em}{% + \textsuperscript{\thefootnotemark}% + } +\end{lstcode} +\fi% +\DescRef{\ThisCommonLabelBase.cmd.textsuperscript} controls both the +superscript and the smaller font size. The command \Macro{thefootnotemark} +contains the current footnote mark without any formatting.% +\IfThisCommonLabelBase{scrextend}{ % + The \Package{scrextend} package, by contrast, does not change the default + footnote settings of the class you are using. Simply loading the package, + therefore, should not lead to any changes in the formatting of footnote + marks or footnote text. To use the default settings of the \KOMAScript{} + classes with \Package{scrextend}, you must change the settings above + yourself. For example, you can insert the line of code above immediately + after loading the \Package{scrextend} package.% +}{}% + +\IfThisCommonLabelBase{maincls}{% + \begin{figure} +% \centering + \KOMAoption{captions}{bottombeside} + \setcapindent{0pt}% + \begin{captionbeside} + [{Parameters that control the footnote layout}]% + {\label{fig:\ThisCommonLabelBase.deffootnote}\hspace{0pt plus 1ex}% + Parameters that control the footnote layout}% + [l] + \setlength{\unitlength}{1mm} + \begin{picture}(100,22) + \thinlines + % frame of following paragraph + \put(5,0){\line(1,0){90}} + \put(5,0){\line(0,1){5}} + \put(10,5){\line(0,1){5}}\put(5,5){\line(1,0){5}} + \put(95,0){\line(0,1){10}} + \put(10,10){\line(1,0){85}} + % frame of first paragraph + \put(5,11){\line(1,0){90}} + \put(5,11){\line(0,1){5}} + \put(15,16){\line(0,1){5}}\put(5,16){\line(1,0){10}} + \put(95,11){\line(0,1){10}} + \put(15,21){\line(1,0){80}} + % box of the footnote mark + \put(0,16.5){\framebox(14.5,4.5){\mbox{}}} + % description of paragraphs + \put(45,16){\makebox(0,0)[l]{\textsf{first paragraph of a footnote}}} + \put(45,5){\makebox(0,0)[l]{\textsf{next paragraph of a footnote}}} + % help lines + \thicklines + \multiput(0,0)(0,3){7}{\line(0,1){2}} + \multiput(5,0)(0,3){3}{\line(0,1){2}} + % parameters + \put(2,7){\vector(1,0){3}} + \put(5,7){\line(1,0){5}} + \put(15,7){\vector(-1,0){5}} + \put(15,7){\makebox(0,0)[l]{\small\PName{parindent}}} + % + \put(-3,13){\vector(1,0){3}} + \put(0,13){\line(1,0){5}} + \put(10,13){\vector(-1,0){5}} + \put(10,13){\makebox(0,0)[l]{\small\PName{indent}}} + % + \put(-3,19){\vector(1,0){3}} + \put(0,19){\line(1,0){14.5}} + \put(19.5,19){\vector(-1,0){5}} + \put(19.5,19){\makebox(0,0)[l]{\small\PName{mark width}}} + \end{picture} + \end{captionbeside} + \end{figure}} + +\BeginIndexGroup +\BeginIndex{FontElement}{footnote}\LabelFontElement{footnote}% +\BeginIndex{FontElement}{footnotelabel}\LabelFontElement{footnotelabel}% +The footnote\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v2.8q}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}% +}}{}, including the footnote mark, uses the font specified in the +\FontElement{footnote}\important{\FontElement{footnote}} element. You can +change the font of the footnote mark separately using the +\DescRef{\ThisCommonLabelBase.cmd.setkomafont} and +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}) +for the \FontElement{footnotelabel}\important{\FontElement{footnotelabel}} +element. See also \autoref{tab:\ThisCommonLabelBase.fontelements}, +\autopageref{tab:\ThisCommonLabelBase.fontelements}. +The default setting is no change to the font.% +\IfThisCommonLabelBase{scrextend}{ % + However, with \Package{scrextend} these elements will only change the fonts + if footnotes are handled by the package, that is, after using + \Macro{deffootnote}.% +}{} Please don't misuse this element for other purposes, for example to set +the footnotes ragged right (see also \DescRef{\LabelBase.cmd.raggedfootnote}, +\DescPageRef{\LabelBase.cmd.raggedfootnote}). + +\BeginIndex{FontElement}{footnotereference}% +\LabelFontElement{footnotereference}% +The footnote mark in the text is defined separately from the mark in +front of the actual footnote. This is done with +\Macro{deffootnotemark}. The default setting is: +\begin{lstcode} + \deffootnotemark{% + \textsuperscript{\thefootnotemark}} +\end{lstcode} +With\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v2.8q}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{} this default, the font for the +\FontElement{footnotereference}\important{\FontElement{footnotereference}} +element is used (see \autoref{tab:\ThisCommonLabelBase.fontelements}, +\autopageref{tab:\ThisCommonLabelBase.fontelements}). Thus, the footnote marks +in the text and in the footnote itself are identical. You can change the font +with the commands \DescRef{\ThisCommonLabelBase.cmd.setkomafont} and +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} (see +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont})% +\IfThisCommonLabelBase{scrextend}{ after \Macro{deffootnotemark} is used}{}. + +\IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname}% + \begin{Example} + \phantomsection + \xmpllabel{cmd.deffootnote}% + One\textnote{Hint!} feature that is often requested is footnote marks + which are neither in superscript nor in a smaller font. They should not + touch the footnote text but be separated by a small space. You can + accomplish this as follows: +\begin{lstcode} + \deffootnote{1em}{1em}{\thefootnotemark\ } +\end{lstcode} + This will set the footnote mark and subsequent space right-aligned in a + box of width 1\Unit{em}. The lines of the footnote text that follow are + also indented by 1\Unit{em} from the left margin. + + Another\textnote{Hint!} layout that is often requested is footnote marks + that are left-aligned. You can obtain them with the following + definition: +\begin{lstcode} + \deffootnote{1.5em}{1em}{% + \makebox[1.5em][l]{\thefootnotemark}} +\end{lstcode} + + If, however you want to change the font for all footnotes, for example + to sans serif, this can easily be done with the commands + \DescRef{\ThisCommonLabelBase.cmd.setkomafont} and + \DescRef{\ThisCommonLabelBase.cmd.addtokomafont} (see + \autoref{sec:\ThisCommonLabelBase.textmarkup}, + \DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}): +\begin{lstcode} + \setkomafont{footnote}{\sffamily} +\end{lstcode} + \end{Example}% + \IfThisCommonLabelBase{scrextend}{}{% + As the examples show, {\KOMAScript} allows a wide variety of different + footnote formats with this simple user interface.% + }% +\fi% +\IfThisCommonFirstRun{}{% + For examples, see \autoref{sec:\ThisCommonFirstLabelBase.footnotes}, + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.deffootnote}.% +}{}% +% +\EndIndexGroup +\EndIndexGroup + +\IfThisCommonLabelBase{scrextend}{\iffalse}{\csname iftrue\endcsname} +\begin{Declaration} + \Macro{setfootnoterule}\OParameter{thickness}\Parameter{length}% +\end{Declaration}% +Generally,\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.06}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.06}{\Class{scrlttr2}}% + }{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.06}{\Package{scrextend}}% + }{}% + }% +} a horizontal rule is set between the text area and the footnote area, but +normally this rule does not extend the full width of the type area. With +\Macro{setfootnoterule}, you can set the exact thickness and length of the +rule. In this case, the parameters \PName{thickness} and \PName{length} are +only evaluated when setting the rule itself. If the optional argument +\PName{thickness} has been omitted, the thickness of the rule will not be +changed. Empty arguments for \PName{thickness} or \PName{length} are also +allowed and do not change the corresponding parameters. Using absurd values +will result in warning messages both when setting and when using the +parameters. + +\BeginIndexGroup +\BeginIndex{FontElement}{footnoterule}\LabelFontElement{footnoterule}% +You can% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.07}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.07}{\Class{scrlttr2}}% + }{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.07}{\Package{scrextend}}% + }{}% + }% +} % +change the colour of the rule with the +\FontElement{footnoterule}\important{\FontElement{footnoterule}} element using +the \DescRef{\ThisCommonLabelBase.cmd.setkomafont} and +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}). The default is no change +of font or colour. In order to change the colour, you must also load a colour +package like +\Package{xcolor}\IndexPackage{xcolor}\important{\Package{xcolor}}.% +\EndIndexGroup +\EndIndexGroup +\fi + +\begin{Declaration} + \Macro{raggedfootnote} +\end{Declaration} +By default% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.23}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.23}{\Class{scrlttr2}}% + }{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.23}{\Package{scrextend}}% + }{}% + }% +} % +\KOMAScript{} justifies footnotes just as in the standard classes. +But\textnote{\KOMAScript{} vs. standard classes} you can also change the +justification separately from the rest of the document by redefining +\Macro{raggedfootnote}. Valid definitions are +\Macro{raggedright}\IndexCmd{raggedright}, +\Macro{raggedleft}\IndexCmd{raggedleft}, +\Macro{centering}\IndexCmd{centering}, \Macro{relax}\IndexCmd{relax} or an +empty definition, which is the default. The alignment commands of the +\Package{ragged2e}\IndexPackage{ragged2e} package are also valid (see +\cite{package:ragged2e}). \IfThisCommonLabelBase{scrextend}{% + You can find a suitable example in + \autoref{sec:\ThisCommonFirstLabelBase.footnotes}, + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.raggedfootnote}.% + \iffalse }{\csname iftrue\endcsname}% + \begin{Example} + \phantomsection\xmpllabel{cmd.raggedfootnote}% + Suppose you are using footnotes only to provide references to very long + links, where line breaks would produce poor results if justified. You can + use +\begin{lstcode} + \let\raggedfootnote\raggedright +\end{lstcode} + in your document's preamble to switch to ragged-right footnotes. + \end{Example}% +\fi +\EndIndexGroup +% +\EndIndexGroup + + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-headfootheight.tex b/macros/latex/contrib/koma-script/source-doc/english/common-headfootheight.tex new file mode 100644 index 0000000000..8f9fcbb946 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-headfootheight.tex @@ -0,0 +1,163 @@ +% ====================================================================== +% common-headfootheight.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-headfootheight.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Text that is common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapitels in der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{common-headfootheight.tex} + [$Date: 2018-02-28 13:23:23 +0100 (Wed, 28 Feb 2018) $ + KOMA-Script guide (common paragraph: Head and Foot Height)] +\translator{Markus Kohm\and Jana Schubert\and Jens H\"uhne\and Karl Hagen} + +% Date of the translated German file: 2018-01-16 + +\section{Header and Footer Height} +\seclabel{height} +\BeginIndexGroup +\BeginIndex{}{header>height}% +\BeginIndex{}{footer>height}% +\IfThisCommonLabelBase{scrlayer-scrpage}{% + \begin{Explain}% + The \LaTeX{} standard classes do not use the footer much, and if they do + use it, they put the contents into a \Macro{mbox} which results in the + footer being a single text line. This is probably the reason that \LaTeX{} + itself does not have a well-defined footer height. Although the distance + between the last baseline of the text area and the baseline of the footer + is defined with \Length{footskip}\IndexLength[indexmain]{footskip}, if the + footer consists of more than one text line, there is no definite statement + whether this length should be the distance to the first or the last + baseline of the footer. + + Although the page header of the standard classes will also be put into a + horizontal box, and therefore is also a single text line, \LaTeX{} in fact + provides a length to set the height of the header. The reason for this may + be that this height is needed to determine the start of the text area. + \end{Explain}% +}{% + The header and footer of a page are central elements not just of a page + style. They can also serve to restrict layers using the appropriate options + (see \autoref{tab:scrlayer.layerkeys}, + \autopageref{tab:scrlayer.layerkeys}). Therefore the heights of these + elements must be defined.% +} + +\IfThisCommonFirstRun{}{% + The information in \autoref{sec:\ThisCommonFirstLabelBase.height} applies + equally to this chapter. So if you have already read and understood + \autoref{sec:\ThisCommonFirstLabelBase.height}, you can skip ahead to + \autoref{sec:\ThisCommonLabelBase.height.next}, + \autopageref{sec:\ThisCommonLabelBase.height.next}.% +} + +\begin{Declaration} + \Length{footheight} + \Length{headheight} + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \OptionVName{autoenlargeheadfoot}{simple switch}% + }{}% +\end{Declaration} +The \Package{scrlayer} package introduces a new length, \Length{footheight}, +analogous to \Length{headheight}% +\IfThisCommonLabelBase{scrlayer-scrpage}{}{of the \LaTeX{} kernel}. +Additionally, +\Package{scrlayer\IfThisCommonLabelBase{scrlayer-scrpage}{-scrpage}{}} +interprets \Length{footskip} to be the distance from the last baseline of the +text area to the first normal baseline of the footer. The +\hyperref[cha:typearea]{\Package{typearea}}\IndexPackage{typearea}% +\important{\hyperref[cha:typearea]{\Package{typearea}}} package interprets +\Length{footheight} in the same way, so \Package{typearea}'s options for the +footer height can also be used to set the values for the \Package{scrlayer} +package. See the \DescRef{typearea.option.footheight} and +\DescRef{typearea.option.footlines} options in +\autoref{sec:typearea.typearea}, \DescPageRef{typearea.option.footheight}) +and option \DescRef{typearea.option.footinclude} on +\DescPageRef{typearea.option.footinclude} of the same section. + +If you do not use the \hyperref[cha:typearea]{\Package{typearea}}% +\important{\hyperref[cha:typearea]{\Package{typearea}}} package, you should +adjust the header and footer heights using appropriate values for the lengths +where necessary. For the header, at least, the \Package{geometry} package, for +example, provides similar settings. +\IfThisCommonLabelBase{scrlayer-scrpage}{\par% + If you choose a header or footer height that is too small for the actual + content, \Package{scrlayer-scrpage} tries by default to adjust the lengths + appropriately. At the same time, it will issue a warning containing + suggestions for suitable settings. These automatic changes take effect + immediately after the need for them has been detected and are not + automatically reversed, for example, when the content of the header or + footer becomes smaller afterwards. + However,\ChangedAt{v3.25}{\Package{scrlayer-scrpage}}, this behaviour can be + changed by using the \Option{autoenlargeheadfoot} option. This option + recognizes the values for simple switches in \autoref{tab:truefalseswitch}, + \autopageref{tab:truefalseswitch}. The option is activated by default. If it + is deactivated, the header and footer are no longer enlarged + automatically. Only a warning with hints for suitable settings is issued.% +}{% + \IfThisCommonLabelBase{scrlayer}{\par% + If you choose a header or footer height that is too small for the actual + content, \Package{scrlayer} usually accepts this without issuing an error + message or a warning. The header then expands according to its height, + usually upwards, with the footer moved down accordingly. Information about + this change is not obtained automatically. However, packages like + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + \important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}}% + \IndexPackage{scrlayer-scrpage} that build upon \Package{scrlayer} may + contain their own tests which can lead to their own actions (see + \DescRef{scrlayer-scrpage.length.headheight} and + \DescRef{scrlayer-scrpage.length.footheight} on + \DescPageRef{scrlayer-scrpage.length.headheight}).% + }{}% +}% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide.tex" +%%% TeX-PDF-mode: t +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-interleafpage.tex b/macros/latex/contrib/koma-script/source-doc/english/common-interleafpage.tex new file mode 100644 index 0000000000..36f9fb4ae4 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-interleafpage.tex @@ -0,0 +1,338 @@ +% ====================================================================== +% common-interleafpage.tex +% Copyright (c) Markus Kohm, 2001-2017 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-interleafpage.tex +% Copyright (c) Markus Kohm, 2001-2017 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-interleafpage.tex}% + [$Date: 2018-03-30 09:37:06 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (common paragraphs: Interleaf Pages)] +\translator{Markus Kohm\and Gernot Hassenpflug\and Krickette Murabayashi\and + Karl Hagen} + +% Date of the translated German file: 2017-12-07 + +\section{Interleaf Pages} +\seclabel{emptypage}% +\BeginIndexGroup +\BeginIndex{}{interleaf page}%% +\BeginIndex{}{page>style}% + +\IfThisCommonFirstRun{}{% + The information in \autoref{sec:\ThisCommonFirstLabelBase.emptypage} applies + equally to this chapter. So if you have already read and understood + \autoref{sec:\ThisCommonFirstLabelBase.emptypage}, you can skip ahead to + \autoref{sec:\ThisCommonLabelBase.emptypage.next}, + \autopageref{sec:\ThisCommonLabelBase.emptypage.next}.% +} + +Interleaf pages are pages that are inserted between parts of a document. +Traditionally, these pages are completely blank. \LaTeX{}, however, +sets them by default with the current page style. \KOMAScript{} provides +several extensions to this functionality. + +Interleaf pages are mostly found in books. Because book chapters commonly +start on the right (recto) page of a two-page spread, an empty left (verso) +page must be inserted if the previous chapter ends on a recto page. For this +reason, interleaf pages really only exist for two-sided printing. +% +\iffalse % Umbruchkorrektur + The blank versos in one-sided printing are not true interleaf pages, + although they may appear as such in counting the printed sheets. +\fi% + +\IfThisCommonLabelBase{scrlttr2}{% + Interleaf pages are unusual in letters. This is not least because two-sided + letters are rare, as letters are usually not bound. Nevertheless, + \KOMAScript{} also supports interleaf pages for two-sided letters. However, + since the commands described here are seldom used in letters, you will not + find any examples here. If necessary, please refer to the examples in + \autoref{sec:maincls.emptypage}, starting on + \autopageref{sec:maincls.emptypage}.% +}{}% + +\begin{Declaration} + \OptionVName{cleardoublepage}{page style} + \OptionValue{cleardoublepage}{current} +\end{Declaration}% +With this option,\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}% + }{}% +} you can define the page style of the interleaf pages created by the commands +\DescRef{\LabelBase.cmd.cleardoublepage}, +\DescRef{\LabelBase.cmd.cleardoubleoddpage}, or +\DescRef{\LabelBase.cmd.cleardoubleevenpage} to advance to the desired page. +You can use any previously defined \PName{page style} (see +\autoref{sec:\ThisCommonLabelBase.pagestyle} from +\autopageref{sec:\ThisCommonLabelBase.pagestyle} and +\autoref{cha:scrlayer-scrpage} from \autopageref{cha:scrlayer-scrpage}). +In addition, \OptionValue{cleardoublepage}{current} is also possible. +This case corresponds to the default prior to \KOMAScript~2.98c and creates an +interleaf page without changing the page style. Starting with +\KOMAScript~3.00\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}% + }{}% +}, the default\textnote{default} follows the recommendation of most +typographers and creates interleaf pages with the +\IfThisCommonLabelBase{scrextend}{% + \DescRef{maincls.pagestyle.empty}}{% + \DescRef{\ThisCommonLabelBase.pagestyle.empty}}\IndexPagestyle{empty} +page style unless you switch compatibility to earlier \KOMAScript{} versions +(see option \DescRef{\ThisCommonLabelBase.option.version}% +\important{\OptionValueRef{\LabelBase}{version}{2.98c}}, +\autoref{sec:\ThisCommonLabelBase.compatibilityOptions}, +\DescPageRef{\ThisCommonLabelBase.option.version}). +\IfThisCommonLabelBase{maincls}{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{option.cleardoublepage}% + Suppose you want interleaf pages that are empty except for the pagination% + \iffree{, so they are created with \IfThisCommonLabelBase{scrextend}{% + \DescRef{maincls.pagestyle.plain}}{% + \DescRef{\LabelBase.pagestyle.plain}}}{}. You can achieve this, + for example, with: +\begin{lstcode} + \KOMAoptions{cleardoublepage=plain} +\end{lstcode} + You can find more information about the + \IfThisCommonLabelBase{scrextend}{% + \DescRef{maincls.pagestyle.plain}}{\DescRef{\LabelBase.pagestyle.plain}} + page style in \IfThisCommonLabelBase{scrextend}{% + \autoref{sec:maincls.pagestyle}}{% + \autoref{sec:\LabelBase.pagestyle}}, + \IfThisCommonLabelBase{scrextend}{% + \DescPageRef{maincls.pagestyle.plain}}{% + \DescPageRef{\LabelBase.pagestyle.plain}}. + \end{Example} +\else + \IfThisCommonLabelBase{scrextend}{% + You can find an example for setting the page style of interleaf pages in + \autoref{sec:\ThisCommonFirstLabelBase.emptypage}, + \PageRefxmpl{\ThisCommonFirstLabelBase.option.cleardoublepage}.% + \iffalse% Umbruchvariante ohne Beispiel + }{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{option.cleardoublepage}% + Suppose you want interleaf pages that are empty except for the pagination, + so they are created with the \IfThisCommonLabelBase{scrextend}{% + \DescRef{maincls.pagestyle.plain}}{\DescRef{\LabelBase.pagestyle.plain}} + page style. You can achieve this with +\begin{lstcode} + \KOMAoptions{cleardoublepage=plain} +\end{lstcode} + You can find more information about the + \DescRef{maincls.pagestyle.plain} page style in + \autoref{sec:maincls.pagestyle}, \DescPageRef{maincls.pagestyle.plain}. + \end{Example}% + \fi% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{clearpage}% + \Macro{cleardoublepage}% + \Macro{cleardoublepageusingstyle}\Parameter{page style}% + \Macro{cleardoubleemptypage}% + \Macro{cleardoubleplainpage}% + \Macro{cleardoublestandardpage}% + \Macro{cleardoubleoddpage}% + \Macro{cleardoubleoddpageusingstyle}\Parameter{page style}% + \Macro{cleardoubleoddemptypage}% + \Macro{cleardoubleoddplainpage}% + \Macro{cleardoubleoddstandardpage}% + \Macro{cleardoubleevenpage}% + \Macro{cleardoubleevenpageusingstyle}\Parameter{page style}% + \Macro{cleardoubleevenemptypage}% + \Macro{cleardoubleevenplainpage}% + \Macro{cleardoubleevenstandardpage} +\end{Declaration}% +The\textnote{standard classes} {\LaTeX} kernel provides the \Macro{clearpage} +command, which ensures that all pending floats are output and then starts a +new page. There is also the \Macro{cleardoublepage} command, which works like +\Macro{clearpage} but which starts a new right-hand page in two-sided printing +(see the \Option{twoside} layout option in \autoref{sec:typearea.options}, +\DescPageRef{typearea.option.twoside}). An empty left-hand page in the current +page style is output if necessary. + +With\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}% + }{}% +} \Macro{cleardoubleoddstandardpage}, {\KOMAScript}\textnote{\KOMAScript} +works as exactly in the way just described for the standard classess. The +\Macro{cleardoubleoddplainpage}% +\important{\IfThisCommonLabelBase{scrextend}{% + \DescRef{maincls.pagestyle.plain}}{\DescRef{\LabelBase.pagestyle.plain}}} +command, on the other hand, additionally changes the page style of the empty +left page to \IfThisCommonLabelBase{scrextend}{% + \DescRef{maincls.pagestyle.plain}}{\DescRef{\LabelBase.pagestyle.plain}}% +\IndexPagestyle{plain} in order to suppress the +\IfThisCommonLabelBase{scrlttr2}{page header}{running title}. Likewise, the +\Macro{cleardoubleoddemptypage}\important{% + \IfThisCommonLabelBase{scrextend}{\DescRef{maincls.pagestyle.empty}}{% + \DescRef{\LabelBase.pagestyle.empty}}} command uses the +\IfThisCommonLabelBase{scrextend}{\DescRef{maincls.pagestyle.empty}}{% + \DescRef{\LabelBase.pagestyle.empty}}\IndexPagestyle{empty} page style to +suppress both \IfThisCommonLabelBase{scrlttr2}{page header and page footer}% +{running title and page number} on the empty left-hand side. The page is thus +completely empty. If you want to specify your own \PName{page style} for the +interleaf page, this should be given as an argument of +\Macro{cleardoubleoddusingpagestyle}. You can use any previously defined +\PName{page style} (see \autoref{cha:scrlayer-scrpage}). + +\IfThisCommonLabelBase{scrlttr2}{}{% + Sometimes\textnote{odd-side interleaf pages} you want chapters to start not + on the right-hand but on the left-hand page. Although this layout contradicts + classic typography, it can be appropriate if the double-page spread at the + beginning of the chapter very specific contents. For this reason, + \KOMAScript{} provides the \Macro{cleardoubleevenstandardpage} command, + which is equivalent to the \Macro{cleardoubleoddstandardpage} command + except that the next page is a left page. The same applies to the + \Macro{cleardoubleevenplainpage}, \Macro{cleardoubleevenemptypage}, and + \Macro{cleardoubleevenpageusingstyle} commands% + \IfThisCommonLabelBase{maincls}{% Umbruchoptimierungsalternative + , the last of which expects an argument}{}.% +} + +The \Macro{cleardoublestandardpage}, \Macro{cleardoubleemptypage}, and +\Macro{cleardoubleplainpage} commands, and the single-argument +\Macro{cleardoublepageusingstyle} command, as well as the standard +\Macro{cleardoublepage} command, % +\IfThisCommonLabelBase{maincls}{% + depend on the \DescRef{maincls.option.open}\IndexOption{open}% + \important{\DescRef{maincls.option.open}} option explained in + \autoref{sec:maincls.structure}, \DescPageRef{maincls.option.open} and, + depending on that setting, correspond to one of the commands explained in + the preceding paragraphs. }{% + correspond to the commands previously explained for the + \IfThisCommonLabelBase{scrlttr2}{\Class{scrlttr2} class}{% + \IfThisCommonLabelBase{scrextend}{\Package{scrextend} package}{% + \InternalCommonFileUsageError}% + }% + \IfThisCommonLabelBase{scrlttr2}{. % + The remaining commands are defined in \Class{scrlttr2} for completeness + only. You can find more information on them in + \autoref{sec:maincls.emptypage}, \DescPageRef{maincls.cmd.cleardoublepage} + if necessary% + }{% + \ to transition to the next odd page% + }.% +}% +\IfThisCommonLabelBaseOneOf{scrlttr2,scrextend}{\iffalse}{\csname + iftrue\endcsname} + \begin{Example} + \phantomsection\xmpllabel{cmd.cleardoublepage}% + Suppose you want to insert a double-page spread into your document with a + picture on the left-hand page and a new chapter starting on the right-hand + page. If the previous chapter ends with a left-hand page, an interleaf + page has to be added, which should be completely empty. The picture should + be the same size as the text area without any header or footer. +\iffalse% Umbruchkorrekturtext + First of all, +\begin{lstcode} + \KOMAoptions{cleardoublepage=empty} +\end{lstcode} + ensures that interleaf pages use the + \IfThisCommonLabelBase{scrextend}{\DescRef{maincls.pagestyle.empty}}{% + \DescRef{\LabelBase.pagestyle.empty}} page style. You can put this + setting in the document preamble, or you can set it as an optional + argument of \DescRef{\ThisCommonLabelBase.cmd.documentclass}. +\fi + + At the relevant place in your document, write: +\begin{lstcode} + \cleardoubleevenemptypage + \thispagestyle{empty} + \includegraphics[width=\textwidth,% + height=\textheight,% + keepaspectratio]% + {picture} + \chapter{Chapter Heading} +\end{lstcode} + The first of these lines switches to the next left-hand page. If needed it + also adds a completely blank right-hand page. The second line makes sure + that the following left-hand page will also be set using the + \IfThisCommonLabelBase{scrextend}{\DescRef{maincls.pagestyle.empty}}{% + \DescRef{\LabelBase.pagestyle.empty}} page style. The third through + sixth lines load an image file named \File{picture} and scale it to the + desired size without distorting it. This command requires the + \Package{graphicx}\IndexPackage{graphicx} package (see + \cite{package:graphics}). The last line starts + a new chapter on the next page, which will be a right-hand one. + \end{Example}% +\fi% + +In two-sided printing, \Macro{cleardoubleoddpage} always moves to the next +left-hand page and \Macro{cleardoubleevenpage} to the next right-hand +page. The style of the interleaf page to be inserted if necessary is defined +with the \DescRef{\LabelBase.option.cleardoublepage} option.% +\IfThisCommonLabelBase{scrextend}{\par% + For an example that uses \Macro{cleardoubleevenemptypage}, see + \autoref{sec:maincls.emptypage}, + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.cleardoublepage}.% +}{}% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: + +% LocalWords: mutatis mutandis Interleaf interleaf diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-lists.tex b/macros/latex/contrib/koma-script/source-doc/english/common-lists.tex new file mode 100644 index 0000000000..79a0a697fd --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-lists.tex @@ -0,0 +1,837 @@ +% ====================================================================== +% common-lists.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-lists.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-lists.tex} + [$Date: 2018-03-30 09:37:06 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (common paragraphs)] +\translator{Gernot Hassenpflug\and Markus Kohm\and Krickette Murabayashi\and + Karl Hagen} + +% Date of the translated German file: 2018-02-06 + +\section{Lists} +\seclabel{lists}% +\BeginIndexGroup +\BeginIndex{}{lists}% + +\IfThisCommonFirstRun{}{% + The information in \autoref{sec:\ThisCommonFirstLabelBase.lists} applies + equally to this chapter. So if you have already read and understood + \autoref{sec:\ThisCommonFirstLabelBase.lists}, you can skip ahead to + \autoref{sec:\ThisCommonLabelBase.lists.next}, + \autopageref{sec:\ThisCommonLabelBase.lists.next}.% + \IfThisCommonLabelBaseOneOf{scrextend,scrlttr2}{ % + \IfThisCommonLabelBase{scrlttr2}{% + The \Package{scrletter}\OnlyAt{\Package{scrletter}} package does not + define any list environments itself but leaves them to the class + used. If this is not a \KOMAScript{} class, it will load + \hyperref[cha:scrextend]{\Package{scrextend}}\IndexPackage{scrextend}% + \important{\hyperref[cha:scrextend]{\Package{scrextend}}}.% + }{} % + However, the \Package{scrextend} package only defines the + \DescRef{\ThisCommonLabelBase.env.labeling}, + \DescRef{\ThisCommonLabelBase.env.addmargin}, and + \DescRef{\ThisCommonLabelBase.env.addmargin*} environments. All other list + environments are left to the responsibility of the class used.% + }{}% +} + +\IfThisCommonLabelBase{scrextend}{}{% + Both {\LaTeX} and the standard classes\textnote{\KOMAScript{} vs. standard + classes} offer different environments for lists. Naturally, {\KOMAScript} + also offers all these environments, though slightly modified or extended in + some cases. In general, all lists\,---\,even those of different + kinds\,---\,can be nested up to four levels deep. From a typographical view, + anything more would make no sense, as lists of more than three levels cannot + easily be apprehended. In such cases, I recommend\textnote{Hint!} that you + split a large list into several smaller ones.% +} + +\IfThisCommonFirstRun{}{% + Because lists are standard elements of \LaTeX{}, examples have been omitted + in this section. Nevertheless, you can find examples either in + \autoref{sec:\ThisCommonFirstLabelBase.lists}, + \autopageref{sec:\ThisCommonFirstLabelBase.lists} or in any \LaTeX{} + tutorial.% +} + +\IfThisCommonLabelBase{scrextend}{\iffalse}{\csname iftrue\endcsname} + \begin{Declaration} + \begin{Environment}{itemize} + \begin{Body} + \Macro{item} \dots + \BodyDots + \end{Body} + \end{Environment} + \Macro{labelitemi} + \Macro{labelitemii} + \Macro{labelitemiii} + \Macro{labelitemiv} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{}% + The simplest form of a list is the itemized list\textnote{itemized list}, + \Environment{itemize}. % + \iffalse % Umbruckoptimierungstext + The users of a certain disliked word processing package often refer to this + form of a list as \emph{bullet points}. Presumably, they cannot imagine + that, depending on the level, a symbol other than a large dot could be used + to introduce each point. % + \fi% + Depending on the level, \KOMAScript{} classes use the following marks: + ``{\labelitemi}'', ``{\labelitemii}'', ``{\labelitemiii}'', and + ``{\labelitemiv}''. The definition of these symbols is specified in + the macros \Macro{labelitemi}, \Macro{labelitemii}, + \Macro{labelitemiii}, and \Macro{labelitemiv}, all of which you can + redefine using \Macro{renewcommand}. Every item is introduced with + \Macro{item}.% + \IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.itemize}% + You have a simple list which is nested in several levels. You write, + for example: +\begin{lstcode} + \minisec{Vehicles in the game} + \begin{itemize} + \item aeroplanes + \begin{itemize} + \item biplane + \item transport planes + \begin{itemize} + \item single-engine + \begin{itemize} + \item jet propelled + \item propeller driven + \end{itemize} + \item twin-engine + \begin{itemize} + \item jet propelled + \item propeller driven + \end{itemize} + \end{itemize} + \item helicopters + \end{itemize} + \item motorcycles + \item automobiles + \begin{itemize} + \item racing cars + \item passenger cars + \item lorries + \end{itemize} + \item bicycles + \end{itemize} +\end{lstcode} + As output you get: + \begin{ShowOutput}[\baselineskip] + \minisec{Vehicles in the game} + \begin{itemize} + \item aeroplanes + \begin{itemize} + \item biplanes + \item transport planes + \begin{itemize} + \item single-engine + \begin{itemize} + \item jet-propelled + \item propeller-driven + \end{itemize} + \item twin-engine + \begin{itemize} + \item jet propelled + \item propeller driven + \end{itemize} + \end{itemize} + \item helicopters + \end{itemize} + \item motorcycles + % \begin{itemize} + % \item historically accurate + % \item futuristic, not real + % \end{itemize} + \item automobiles + \begin{itemize} + \item racing cars + \item passenger cars + \item lorries + \end{itemize} + \item bicycles + \end{itemize} + \end{ShowOutput} + \end{Example} + \fi + % + \EndIndexGroup + + + \begin{Declaration} + \begin{Environment}{enumerate}\labelsuffix[enumerate] + \begin{Body} + \Macro{item} \dots + \BodyDots + \end{Body} + \end{Environment} + \Macro{theenumi}% + \Macro{theenumii}% + \Macro{theenumiii}% + \Macro{theenumiv}% + \Macro{labelenumi}% + \Macro{labelenumii}% + \Macro{labelenumiii}% + \Macro{labelenumiv} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{}The numbered + list\textnote{numbered list} is also very common and already provided by the + {\LaTeX} kernel. The numbering\Index{numbering} differs according to the + level, with Arabic numbers, small letters, small Roman numerals, and capital + letters, respectively. The style of numbering is defined with the macros + \Macro{theenumi} down to \Macro{theenumiv}. The output format is determined + by the macros \Macro{labelenumi} to \Macro{labelenumiv}. While the small + letter of the second level is followed by a right parenthesis, the values of + all other levels are followed by a dot. Every item is introduced with + \Macro{item}.% + \IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.enumerate}% + Let's shorten the previous example, using an + \DescRef{\ThisCommonLabelBase.env.itemize} environment instead of the + \Environment{enumerate} environment: + \begin{ShowOutput}[\baselineskip] + \minisec{Vehicles in the game} + \begin{enumerate} + \item aeroplanes + \begin{enumerate} + \item biplanes + \item transport planes + \begin{enumerate} + \item single-engine + \begin{enumerate} + \item jet-propelled\label{xmp:maincls.jets} + \item propeller-driven + \end{enumerate} + \item twin-engine + \end{enumerate} + % \item helicopters + \end{enumerate} + \item motorcycles + \begin{enumerate} + \item historically accurate + \item futuristic, not real + \end{enumerate} + %\item automobiles + % \begin{enumerate} + % \item racing cars + % \item private cars + % \item lorries + % \end{enumerate} + %\item bicycles + \end{enumerate} + \end{ShowOutput} + Within the list, you can set labels in the normal way with + \Macro{label} and then reference then with \Macro{ref}. + In the example above, a label was set after the jet-propelled, + single-engine transport planes with + ``\Macro{label}\PParameter{xmp:jets}''. The \Macro{ref} value is then + ``\ref{xmp:maincls.jets}''. + \end{Example} + \fi% + % + \EndIndexGroup + + + \begin{Declaration} + \begin{Environment}{description}\labelsuffix[description] + \begin{Body} + \Macro{item}\OParameter{keyword} \dots + \BodyDots + \end{Body} + \end{Environment} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{}Another list + form is the description list\textnote{description list}. It primarily serves + to describe individual items or keywords. The item itself is specified as an + optional parameter in \Macro{item}. % + \BeginIndex{FontElement}{descriptionlabel}% + \LabelFontElement{descriptionlabel}% + The font\Index{font>style}\ChangedAt{v2.8p}{% + \Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}% + \ used to format the keyword can be changed with the + \DescRef{\ThisCommonLabelBase.cmd.setkomafont} and + \DescRef{\ThisCommonLabelBase.cmd.addtokomafont} commands (see + \autoref{sec:\ThisCommonLabelBase.textmarkup}, + \DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}) for the + \FontElement{descriptionlabel}\important{\FontElement{descriptionlabel}} + element (see \autoref{tab:\ThisCommonLabelBase.fontelements}, + \autopageref{tab:\ThisCommonLabelBase.fontelements}). The default is + \Macro{sffamily}\linebreak[1]\Macro{bfseries}.% + \IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.description}% + You want the keywords to be printed bold and in the normal font instead + of bold and sans serif. Using +\begin{lstcode} + \setkomafont{descriptionlabel}{\normalfont\bfseries} +\end{lstcode} + you redefine the font accordingly. + + An example for a description list is the output of the page styles + listed in \autoref{sec:maincls.pagestyle}. The (abbreviated) source is: +\begin{lstcode} + \begin{description} + \item[empty] is the page style without any header or footer. + \item[plain] is the page style without headings. + \item[headings] is the page style with running headings. + \item[myheadings] is the page style for manual headings. + \end{description} +\end{lstcode} + This gives: + \begin{ShowOutput} + \begin{description} + \item[empty] is the page style without any header or footer. + \item[plain] is the page style without headings. + \item[headings] is the page style with running headings. + \item[myheadings] is the page style for manual headings. + \end{description} + \end{ShowOutput} + \end{Example} + \fi% + % + \EndIndexGroup% +\fi + +\begin{Declaration} + \begin{Environment}{labeling}\OParameter{delimiter} + \Parameter{widest pattern} + \labelsuffix[labeling] + \begin{Body} + \Macro{item}\OParameter{keyword}\dots + \BodyDots + \end{Body} + \end{Environment} +\end{Declaration}% +Another form of description list\textnote{alternative description list} is +only available in the {\KOMAScript} classes% +\IfThisCommonLabelBase{scrextend}{ and \Package{scrextend} }{% + \IfThisCommonLabelBase{scrlttr2}{ and + \hyperref[cha:scrextend]{\Package{scrextend}}}{}% +}% +: the \Environment{labeling} environment. Unlike +\IfThisCommonLabelBase{scrextend}{% + \DescRef{\ThisCommonFirstLabelBase.env.description}% +}{% + the \DescRef{\ThisCommonLabelBase.env.description} described above% +}, you can specify a pattern for \Environment{labeling} whose length +determines the indentation of all items. Furthermore, you can put an optional +\PName{delimiter} between the item and its description. % +\BeginIndexGroup +\BeginIndex{FontElement}{labelinglabel}\LabelFontElement{labelinglabel}% +\BeginIndex{FontElement}{labelingseparator}% +\LabelFontElement{labelingseparator}% +The font\Index{font>style}% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.02}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.02}{\Class{scrlttr2}}% + }{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.02}{\Package{scrextend}}% + }{\InternalCommonFileUsageError}% + }% +} used to format the item and the separator can be changed with the +\DescRef{\ThisCommonLabelBase.cmd.setkomafont} and +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}) for the element +\FontElement{labelinglabel} and \FontElement{labelingseparator} (see +\autoref{tab:\ThisCommonLabelBase.fontelements}, +\autopageref{tab:\ThisCommonLabelBase.fontelements}). +\IfThisCommonFirstRun{\iftrue}{\par\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.labeling}% + \IfThisCommonLabelBase{scrextend}{% + A small example of a list like this can be written as follows:% + }{% + Slightly changing the example from the + \DescRef{\ThisCommonLabelBase.env.description} environment, we could + write the following:% + }% +\begin{lstcode} + \setkomafont{labelinglabel}{\ttfamily} + \setkomafont{labelingseparator}{\normalfont} + \begin{labeling}[~--]{myheadings} + \item[empty] + Page style without header or footer + \item[plain] + Page style for chapter beginnings without headings + \item[headings] + Page style for running headings + \item[myheadings] + Page style for manual headings + \end{labeling} +\end{lstcode} + The result is this: + \begin{ShowOutput} + \setkomafont{labelinglabel}{\ttfamily} + \setkomafont{labelingseparator}{\normalfont} + \begin{labeling}[~--]{myheadings} + \item[empty] + Page style without header or footer + \item[plain] + Page style for chapter beginnings without headings + \item[headings] + Page style for running headings + \item[myheadings] + Page style for manual headings + \end{labeling} + \end{ShowOutput} + As this example shows, you can set a font-changing command in the usual + way. But if you do not want the font of the separator to be changed in the + same way as the font of the label, you have to set the font of the + separator as well. + \end{Example} +\fi% +\EndIndexGroup +Originally, this environment was implemented for things like ``Premise, +Evidence, Proof'', or ``Given, Find, Solution'' that are often used in +lecture handouts. These days, however, the environment has very different +applications. For example, the environment for examples in this guide was +defined with the \Environment{labeling} environment.% +% +\EndIndexGroup + + +\IfThisCommonLabelBase{scrextend}{\iffalse}{\csname iftrue\endcsname} + \begin{Declaration} + \begin{Environment}{verse}\end{Environment} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{} The + \Environment{verse} environment\textnote{verse} is not normally perceived + as a list environment because you do not work with \Macro{item} commands. + Instead, fixed line breaks are used within the \Environment{flushleft} + environment. Internally, however, both the standard classes as well as + {\KOMAScript} implement it as a list environment. + + In general, the \Environment{verse} environment is used for + poetry\Index{poetry}. Lines are indented both left and right. Individual + lines of verse are ended by a fixed line break: \verb|\\|. Verses are set as + paragraphs, separated by an empty line. Often also + \Macro{medskip}\IndexCmd{medskip} or \Macro{bigskip}\IndexCmd{bigskip} is + used instead. To avoid a page break at the end of a line of verse you can, + as usual, insert \verb|\\*| instead of \verb|\\|. + \IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.verse}% + \iffalse + As an example, the first lines of ``Little Red Riding Hood and the + Wolf'' by Roald Dahl: +\begin{lstcode} + \begin{verse} + As soon as Wolf began to feel\\* + that he would like a decent meal,\\* + He went and knocked on Grandma's door.\\* + When Grandma opened it, she saw\\* + The sharp white teeth, the horrid grin,\\* + And Wolfie said, `May I come in?' + \end{verse} +\end{lstcode} + The result is as follows: + \begin{ShowOutput} + \begin{verse} + As soon as Wolf began to feel\\* + That he would like a decent meal,\\* + He went and knocked on Grandma's door.\\* + When Grandma opened it, she saw\\* + The sharp white teeth, the horrid grin,\\* + And Wolfie said, `May I come in?' + \end{verse} + \end{ShowOutput} + \else + As an example, Emma Lazarus's sonnet from the pedestal of Liberty + Enlightening the World\footnote{The lines from Roald Dahl's poem + ``Little Red Riding Hood and the Wolf'', which was used in former + releases, has been replaced, because in these times certain + politicians around the world really seem to need ``The New + Colossus'' as urgent reminder.}: +\begin{lstcode} + \begin{verse} + Not like the brazen giant of Greek fame\\* + With conquering limbs astride from land to land\\* + Here at our sea-washed, sunset gates shall stand\\* + A mighty woman with a torch, whose flame\\* + Is the imprisoned lightning, and her name\\* + Mother of Exiles. From her beacon-hand\\* + Glows world-wide welcome; her mild eyes command\\* + The air-bridged harbor that twin cities frame.\\* + ``Keep, ancient lands, your storied pomp!'' cries she\\* + With silent lips. ``Give me your tired, your poor,\\* + Your huddled masses yearning to breathe free,\\* + The wretched refuse of your teeming shore.\\* + Send these, the homeless, tempest-tossed to me:\\* + I lift my lamp beside the golden door.'' + \end{verse} +\end{lstcode} + The result is as follows: + \begin{ShowOutput} + \begin{verse} + Not like the brazen giant of Greek fame\\* + With conquering limbs astride from land to land\\* + Here at our sea-washed, sunset gates shall stand\\* + A mighty woman with a torch, whose flame\\* + Is the imprisoned lightning, and her name\\* + Mother of Exiles. From her beacon-hand\\* + Glows world-wide welcome; her mild eyes command\\* + The air-bridged harbor that twin cities frame.\\* + ``Keep, ancient lands, your storied pomp!'' cries she\\* + With silent lips. ``Give me your tired, your poor,\\* + Your huddled masses yearning to breathe free,\\* + The wretched refuse of your teeming shore.\\* + Send these, the homeless, tempest-tossed to me:\\* + I lift my lamp beside the golden door.'' + \end{verse} + \end{ShowOutput} + \fi + However, if you have very long lines of verse where a line + break occurs within a line of verse: +\begin{lstcode} + \begin{verse} + Both the philosopher and the house-owner + always have something to repair.\\* + \bigskip + Don't trust a man, my son, who tells you + that he has never lied. + \end{verse} +\end{lstcode} + \begin{ShowOutput} + \begin{verse} + Both the philosopher and the house-owner always have something to + repair.\\ + \bigskip Don't trust a man, my son, who tells you that he has never + lied. + \end{verse} + \end{ShowOutput} + in this case \verb|\\*| can not prevent a page break occurring within a + verse at such a line break. To prevent such a page break, a + \Macro{nopagebreak}\IndexCmd{nopagebreak} would have to be inserted + somewhere in the first line: +\begin{lstcode} + \begin{verse} + Both the philosopher and the house-owner\nopagebreak{} + always have something to repair.\\ + \bigskip + Don't trust a man, my son, who tells you\nopagebreak{} + that he has never lied. + \end{verse} +\end{lstcode} + \iftrue% Umbruchkorrekturtext + Here are two sayings that should always be considered when confronted + with seemingly strange questions about {\LaTeX} or its accompanying + explanations: +\begin{lstcode} + \begin{verse} + A little learning is a dangerous thing.\\* + Drink deep, or taste not the Pierian Spring;\\ + \bigskip + Our judgments, like our watches, none\\* + go just alike, yet each believes his own. + \end{verse} +\end{lstcode} + \begin{ShowOutput} + \iffree{}{\vskip-.8\baselineskip}% Umbruchkorrektur + \begin{verse} + A little learning is a dangerous thing.\\* + Drink deep, or taste not the Pierian Spring;\\ + \bigskip + Our judgments, like our watches, none\\* + go just alike, yet each believes his own. + \end{verse} + \end{ShowOutput} + \fi + Incidentally, \Macro{bigskip} was used in these examples to separate two + sayings. + \end{Example} + \fi + % + \EndIndexGroup + + \iftrue% Umbruchkorrekturvarianten + \begin{Declaration} + \begin{Environment}{quote}\end{Environment} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{}This is + internally also a list environment\textnote{block quote with paragraph + spacing} and can be found both in the standard classes and in + {\KOMAScript}. The content of the environment is set fully justified. + The environment is often used to format longer quotes\Index{quotes}. + Paragraphs within the environment are distinguished with vertical space.% + \EndIndexGroup + + \begin{Declaration} + \begin{Environment}{quotation}\end{Environment} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{}This + environment\textnote{block quote with paragraph indent} is comparable to + \DescRef{\ThisCommonLabelBase.env.quote}. While + \DescRef{\ThisCommonLabelBase.env.quote} paragraphs are indicated by + vertical spacing, \Environment{quotation} indents the first line of each + paragraph horizontally. This also applies to the first paragraph of a + \Environment{quotation} environment. If you want to prevent the + indentation there, you must precede it with the + \Macro{noindent}\IndexCmd{noindent} command.% + \else + \begin{Declaration} + \begin{Environment}{quote}\end{Environment} + \begin{Environment}{quotation}\end{Environment} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{} These two + environments\textnote{block quotes} are also set internally as list + environments and can be found in both the standard and the {\KOMAScript} + classes. Both environments use justified text which is indented on both + the left and the right side. Often they are used to separate longer + quotations\Index{quotations} from the main text. The difference between + the two lies in in the manner in which paragraphs are typeset. While + \Environment{quote} paragraphs are distinguished by vertical space, in + \Environment{quotation} paragraphs, the first line is indented. This also + applies to the first line of a \Environment{quotation} + environment% Umbruchkorrektur + \IfThisCommonLabelBase{maincls}{% + , unless it is preceded by \Macro{noindent}\IndexCmd{noindent}.% + }{% + \IfThisCommonLabelBase{scrlttr2}{% + . If you want to prevent the indentation there, you must precede it + with the \Macro{noindent} command\IndexCmd{noindent}.% + }{\InternalCommonFileUsageError}% + }% + \fi % Umbruchkorrekturvarianten + \IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.quote}% + You want to highlight a short anecdote. You write the following + \Environment{quotation} environment for this:% +\begin{lstcode} + A small example for a short anecdote: + \begin{quotation} + The old year was turning brown; the West Wind was + calling; + + Tom caught the beechen leaf in the forest falling. + ``I've caught the happy day blown me by the breezes! + Why wait till morrow-year? I'll take it when me pleases. + This I'll mend my boat and journey as it chances + west down the withy-stream, following my fancies!'' + + Little Bird sat on twig. ``Whillo, Tom! I heed you. + I've a guess, I've a guess where your fancies lead you. + Shall I go, shall I go, bring him word to meet you?'' + \end{quotation} +\end{lstcode} + The result is: + \begin{ShowOutput} + A small example for a short anecdote: + \begin{quotation} + The old year was turning brown; the West Wind was + calling; + + Tom caught the beechen leaf in the forest falling. + ``I've caught the happy day blown me by the breezes! + Why wait till morrow-year? I'll take it when me pleases. + This I'll mend my boat and journey as it chances + west down the withy-stream, following my fancies!'' + + Little Bird sat on twig. ``Whillo, Tom! I heed you. + I've a guess, I've a guess where your fancies lead you. + Shall I go, shall I go, bring him word to meet you?'' + \end{quotation} + \end{ShowOutput} + % + Using a \Environment{quote} environment instead you get: + % + \begin{ShowOutput} + A small example for a short anecdote: + \begin{quote}\setlength{\parskip}{4pt plus 2pt minus 2pt} + The old year was turning brown; the West Wind was + calling; + + Tom caught the beechen leaf in the forest falling. + ``I've caught the happy day blown me by the breezes! + Why wait till morrow-year? I'll take it when me pleases. + This I'll mend my boat and journey as it chances + west down the withy-stream, following my fancies!'' + + Little Bird sat on twig. ``Whillo, Tom! I heed you. + I've a guess, I've a guess where your fancies lead you. + Shall I go, shall I go, bring him word to meet you?'' + \end{quote} + \end{ShowOutput} + % + \end{Example} + \fi + % + \EndIndexGroup +\fi + +\begin{Declaration} + \begin{Environment}{addmargin} + \OParameter{left indentation}\Parameter{indentation} + \end{Environment} + \begin{Environment}{addmargin*} + \OParameter{inner indentation}\Parameter{indentation} + \end{Environment} +\end{Declaration} +Like \IfThisCommonLabelBase{scrextend}{% + \DescRef{\ThisCommonFirstLabelBase.env.quote} and + \DescRef{\ThisCommonFirstLabelBase.env.quotation}, which are available in + the standard and the \KOMAScript{} classes}{% + \DescRef{\ThisCommonLabelBase.env.quote} and + \DescRef{\ThisCommonLabelBase.env.quotation}% +}, the \Environment{addmargin} environment changes the margin\Index{margin}. +However, unlike the first two environments, \Environment{addmargin} lets the +user change the width of the indentation. Apart from this change, this +environment does not change the indentation of the first line nor the vertical +spacing between paragraphs. + +If only the obligatory argument \PName{indentation} is given, both the left +and right margin are expanded by this value. If the optional argument +\PName{left indentation} is given as well, then the value \PName{left + indentation} is used for the left margin instead of \PName{indentation}. + +The starred variant \Environment{addmargin*}% +\important{\Environment{addmargin*}} differs from the normal version only in +the two-sided mode. Furthermore, the difference only occurs if the optional +argument \PName{inner indentation} is used. In this case, the value of +\PName{inner indentation} is added to the normal inner indentation. For +right-hand pages this is the left margin; for left-hand pages, the right +margin. Then the value of \PName{indentation} determines the width of the +opposite margin. + +Both versions of this environment allow negative values for all parameters. +\IfThisCommonLabelBase{scrextend}{% + The environment then protrudes into the margin accordingly.% +}{% + This can be done so that the environment protrudes into the margin.% +}% +\IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.addmargin}% +\begin{lstcode} + \newenvironment{SourceCodeFrame}{% + \begin{addmargin*}[1em]{-1em}% + \begin{minipage}{\linewidth}% + \rule{\linewidth}{2pt}% + }{% + \rule[.25\baselineskip]{\linewidth}{2pt}% + \end{minipage}% + \end{addmargin*}% + } +\end{lstcode} + If you now put your source code in such an environment, it will show + up as: + \begin{ShowOutput} + \newenvironment{SourceCodeFrame}{% + \begin{addmargin*}[1em]{-1em}% + \begin{minipage}{\linewidth}% + \rule{\linewidth}{2pt}% + }{% + \rule[.25\baselineskip]{\linewidth}{2pt}% + \end{minipage}% + \end{addmargin*}% + } + You define the following environment: + \begin{SourceCodeFrame} +\begin{lstcode} +\newenvironment{\SourceCodeFrame}{% + \begin{addmargin*}[1em]{-1em}% + \begin{minipage}{\linewidth}% + \rule{\linewidth}{2pt}% +}{% + \rule[.25\baselineskip]{\linewidth}{2pt}% + \end{minipage}% + \end{addmargin*}% +} +\end{lstcode} + \end{SourceCodeFrame} + This may be feasible or not. In any case, it shows the usage of this + environment. + \end{ShowOutput} + The optional argument of the \Environment{addmargin*} environment + makes sure that the inner margin is extended by 1\Unit{em}. In turn + the outer margin is decreased by 1\Unit{em}. The result is a shift + by 1\Unit{em} to the outside. Instead of \PValue{1em}, you can of + course use a length, for example, \PValue{2\Macro{parindent}}. + \end{Example} +\fi% + +Whether a page is going to be on the left or right side of the book cannot be +determined reliably on the first {\LaTeX} run. For details please refer to +the explanation of the commands +\DescRef{\ThisCommonLabelBase.cmd.ifthispageodd} +(\autoref{sec:\ThisCommonLabelBase.oddOrEven}, +\DescPageRef{\ThisCommonLabelBase.cmd.ifthispageodd}) and +\iffree{\Macro{ifthispagewasodd}}{% + \DescRef{maincls-experts.cmd.ifthispagewasodd}} +(\autoref{sec:maincls-experts.addInfos}\iffree{}{, +\DescPageRef{maincls-experts.cmd.ifthispageodd}}). +\IfThisCommonLabelBase{scrlttr2}{}{% +\begin{Explain} + The interplay of environments such as lists and paragraphs gives rise to + frequent questions. Therefore, you can find further explanation in the + description of the \Option{parskip} option in + \autoref{sec:maincls-experts.addInfos}\iffree{}{, + \DescPageRef{maincls-experts.option.parskip}. Also in the expert section, in + \autoref{sec:maincls-experts.addInfos}, + \DescPageRef{maincls-experts.env.addmargin*}, you can find additional + information about page breaks inside \Environment{addmargin*}}.% +\end{Explain}}% +% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-marginpar.tex b/macros/latex/contrib/koma-script/source-doc/english/common-marginpar.tex new file mode 100644 index 0000000000..05e2bdd1f3 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-marginpar.tex @@ -0,0 +1,144 @@ +% ====================================================================== +% common-marginpar.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-marginpar.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-marginpar.tex} + [$Date: 2019-01-15 08:29:44 +0100 (Tue, 15 Jan 2019) $ + KOMA-Script guide (common paragraphs)] +\translator{Gernot Hassenpflug\and Markus Kohm\and Karl Hagen} + +% Date of the translated German file: 2018-01-29 + +\section{Marginal Notes} +\seclabel{marginNotes}% +\BeginIndexGroup +\BeginIndex{}{marginal notes}% + +\IfThisCommonFirstRun{}{% + The information in \autoref{sec:\ThisCommonFirstLabelBase.marginNotes} + applies equally to this chapter. So if you have already read and understood + \autoref{sec:\ThisCommonFirstLabelBase.marginNotes}, you can skip ahead to + \autoref{sec:\ThisCommonLabelBase.marginNotes.next}, + \autopageref{sec:\ThisCommonLabelBase.marginNotes.next}.% +} + +In addition to the text area, which normally fills the type area, documents +often contain a column for marginalia. You can set marginal notes in this +area. +\IfThisCommonLabelBase{scrlttr2}{% + In letters, however, marginal notes are unusual and should be used + sparingly.% +}{% + This \iffree{guide}{book} makes frequent use of them.% +}% + + +\begin{Declaration} + \Macro{marginpar}\OParameter{margin note left}\Parameter{margin note}% + \Macro{marginline}\Parameter{margin note} +\end{Declaration}% +Marginal notes\Index[indexmain]{marginal notes} in {\LaTeX} are usually +inserted with the \Macro{marginpar} command. They are placed in the outer +margin. One-sided documents use the right border. Although you can specify a +different marginal note for \Macro{marginpar} in case it winds up in the left +margin, marginal notes are always fully justified. However, experience has +shown that many users prefer left- or right-justified marginal notes +instead. For this purpose, {\KOMAScript} offers the \Macro{marginline} +command. + +\IfThisCommonFirstRun{% + \iftrue% +}{% + For a detailed example, see + \autoref{sec:\ThisCommonFirstLabelBase.marginNotes} at + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.marginline}.% + \csname iffalse\endcsname% +}% + \begin{Example} + \phantomsection\xmpllabel{cmd.marginline}% + In some parts of this \iffree{guide}{book}, the class name + \Class{scrartcl} can be found in the margin. You can produce this with:% + \iftrue% Umbruchkorrekturtext + \footnote{Actually, instead of \Macro{texttt}, a semantic markup + was used. To avoid confusion, this has been replaced in the example.}% + \fi +\begin{lstcode} + \marginline{\texttt{scrartcl}} +\end{lstcode} + + Instead of \Macro{marginline} you could have used \Macro{marginpar}. In fact + the first command is implemented internally as: +\begin{lstcode} + \marginpar[\raggedleft\texttt{scrartcl}] + {\raggedright\texttt{scrartcl}} +\end{lstcode} + Thus \Macro{marginline} is really just a shorthand notation for the + code above.% +\end{Example}% +\fi + +Advanced users\textnote{Attention!} will find notes about difficulties that +can arise using \Macro{marginpar} in \autoref{sec:maincls-experts.addInfos}% +\iffree{}{, on \DescPageRef{maincls-experts.cmd.marginpar}}. These remarks +also apply to \Macro{marginline}. In addition, +\autoref{cha:scrlayer-notecolumn} introduces a package that you can use to +create note columns with their own page breaks.% +\iftrue% Umbruchkorrektur + \ However, the + \hyperref[cha:scrlayer-notecolumn]{\Package{scrlayer-notecolumn}}% + \IndexPackage{scrlayer-notecolumn} package is more a proof of concept than a + finished package.% +\fi% +% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-oddorevenpage.tex b/macros/latex/contrib/koma-script/source-doc/english/common-oddorevenpage.tex new file mode 100644 index 0000000000..04ff2b91ac --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-oddorevenpage.tex @@ -0,0 +1,132 @@ +% ====================================================================== +% common-oddorevenpage.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-oddorevenpage.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-oddorevenpage.tex} + [$Date: 2018-03-30 09:37:06 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (common paragraph: Detection of Odd and + Even Pages)] +\translator{Markus Kohm\and Krickette Murabayashi\and Karl Hagen} + +% Date of the translated German file: 2018-01-30 + +\section{Detecting Odd and Even Pages} +\seclabel{oddOrEven}% +\BeginIndexGroup% +\BeginIndex{}{page>odd}% +\BeginIndex{}{page>even}% + +\IfThisCommonFirstRun{}{% + The information in \autoref{sec:maincls.oddOrEven} applies equally to this + chapter. So if you have already read and understood + \autoref{sec:\ThisCommonFirstLabelBase.oddOrEven}, you can skip ahead to + \autopageref{sec:\ThisCommonLabelBase.oddOrEven.next}, + \autopageref{sec:\ThisCommonLabelBase.oddOrEven.next}.% +} + +In two-sided documents we distinguish left and right pages. Left pages always +have an even page number, and right pages always have an odd page number. % +\IfThisCommonLabelBase{maincls}{% + Identifying right and left pages is equivalent to identifying even- or + odd-numbered pages, and so we normally refer to them as even and odd pages + in this \iffree{guide}{book}. + + % Umbruchkorrekturtext + \iftrue% + In one-sided documents, the distinction between left and right pages does + not exist. Nevertheless, there are still pages with even and odd page + numbers.% + \fi% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + As a rule, letters will be set one-sided. However, if you need to print + letters using both sides of the paper or, in exceptional cases, are + generating real two-sided letters, it may be useful to know whether you + are currently on an even or odd page.% + }{}% +} + + +\begin{Declaration} + \Macro{ifthispageodd}\Parameter{true part}\Parameter{false part} +\end{Declaration}% +If you want to determine whether text appears on an even or odd page, +\KOMAScript{} provides the \Macro {ifthispageodd} command. The \PName{true + part} argument is executed only if you are currently on an odd page. +Otherwise the \PName{false part} argument is executed. + +\begin{Example} + Suppose you simply want to show whether a text will be placed onto an + even or odd page. You may achieve that using +\begin{lstcode} + This page has an \ifthispageodd{odd}{even} + page number. +\end{lstcode} + This results in the output + \begin{quote} + This page has an \ifthispageodd{odd}{even} page number. + \end{quote} +\end{Example} + +Because the \Macro{ifthispageodd} command uses a mechanism that is very +similar to a label and a reference to it, at least two {\LaTeX} runs are +required after each change to the text. Only then will the decision be +correct. In the first run, a heuristic is used to make the initial choice. + +\iffree{}{In \autoref{sec:maincls-experts.addInfos}, +\DescPageRef{maincls-experts.cmd.ifthispageodd}, advanced users can find more +information about the problems of detecting left and right pages, or even and +odd page numbers.}% +% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-options.tex b/macros/latex/contrib/koma-script/source-doc/english/common-options.tex new file mode 100644 index 0000000000..fff22502bb --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-options.tex @@ -0,0 +1,231 @@ +% ====================================================================== +% common-options.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-options.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-options.tex} + [$Date: 2017-12-07 23:10:55 -0800 (Thu, 07 Dec 2017) $ + KOMA-Script guide (common paragraphs)] +\translator{Gernot Hassenpflug\and Krickette Murabayashi\and Karl Hagen} + +% Date of the translated German file: 2018-10-23 + +\section{Early or Late Selection of Options} +\seclabel{options} +\BeginIndexGroup +\BeginIndex{}{options}% + +\IfThisCommonFirstRun{% + This section introduces a special feature of \KOMAScript{} which, in + addition to \IfThisCommonLabelBase{typearea}{\Package{typearea}}{% + \IfThisCommonLabelBase{maincls}{\Class{scrbook}, \Class{scrreprt}, and + \Class{scrartcl}}{% + \IfThisCommonLabelBase{scrlttr2}{the \Class{scrlttr2} class}{% + \IfThisCommonLabelBase{scrextend}{the classes and + \Package{scrextend}}{% + \IfThisCommonLabelBase{scrhack}{\Package{scrhack}}{% + \IfThisCommonLabelBase{scrjura}{\Package{scrjura}}{% + \IfThisCommonLabelBase{scrlayer}{\Package{scrlayer}}{% + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \Package{scrlayer-scrpage}}{% + \IfThisCommonLabelBase{scrlayer-notecolumn}{% + \Package{scrlayer-notecolumn}}{% + \InternalCommonFileUsageError}}}}}}}}}% + , is also relevant to other \KOMAScript{} packages and classes. % + \IfThisCommonLabelBase{scrlttr2}{So that each chapter may stand on its own, + this section appears in nearly identical form in several chapters, but if + you are studying all of \KOMAScript{}, you of course only need to read it + one time.% + }{This section appears in nearly identical form in several chapters, so you + can find all the information about a single package or class in the + relevant chapter. Users who are interested not just in a particular + package or class but in getting an overview of \KOMAScript{} as a whole + only need to read this section in one of the chapters and can + \IfThisCommonLabelBase{maincls}{skip the rest of the chapter.}{% + then skip it as they study the guide.}% + }% +}{% + The information in \autoref{sec:\ThisCommonFirstLabelBase.options} applies + equally to this chapter. So if you have already read and understood + \autoref{sec:\ThisCommonFirstLabelBase.options}, you can skip ahead to + \autoref{sec:\ThisCommonLabelBase.options.next}, + \autopageref{sec:\ThisCommonLabelBase.options.next}.% +} + + + +\begin{Declaration} + \Macro{documentclass}\OParameter{option list}% + \Parameter{{\KOMAScript} class} + \Macro{usepackage}\OParameter{option list}% + \Parameter{package list} +\end{Declaration} +\LaTeX{} allows users to pass class options\textnote{class options} as a +comma-separated list of keywords in the optional argument to +\Macro{documentclass}. In addition to being passed to the class, these options +are also passed on to all packages\textnote{global options} that can +understand them. Users can also pass a similar comma-separated list of +keywords in the optional argument of \Macro{usepackage}\textnote{packet + options}. \KOMAScript{} extends\ChangedAt{v3.00}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}\and \Package{scrextend}\and + \Package{typearea}} the option mechanism for +\IfThisCommonLabelBaseOneOf{scrextend,scrjura}{}{the \KOMAScript{} classes and +} some packages with further options. Thus most \KOMAScript{} options can also +take a value, so an option does not necessarily take the form \PName{option}, +but can also take the form \PName{option}\texttt{=}\PName{value}% +\important{\PName{option}\texttt{=}\PName{value}}. Except for this difference, +\Macro{documentclass} and \Macro{usepackage} in \KOMAScript{} function as +described in \cite{latex:usrguide} or any introduction to \LaTeX, for example +\cite{lshort}.% +% +\iffree{}{\IfThisCommonLabelBase{scrlayer-scrpage}{\par + Incidentally, the \Package{scrpage2}\IndexPackage{scrpage2}% + \important{\Package{scrpage2}} package, which is considered obsolete, does + not have this extension. It therefore understands only simple options without + an assigned value.\par}{}}% + +\IfThisCommonLabelBaseNotOneOf{% + scrjura,scrhack,scrlayer,scrlayer-scrpage,scrlayer-notecolumn,scrextend% +}{% + When using a \KOMAScript{} class\textnote{Attention!}, you should not + specify options when loading the \Package{typearea} or \Package{scrbase} + packages. The reason for this restriction is that the class already loads + these packages without options, and \LaTeX{} refuses to load a package + multiple times with different option settings.% + \IfThisCommonLabelBaseOneOf{maincls,scrlttr2}{ In general, it is not + necessary to load either one of these packages explicitly when using any + \KOMAScript{} class.}{}% + \par +}{} + +% Umbruchoptimierung!!! +\IfThisCommonLabelBase{typearea}{Setting the options with + \Macro{documentclass} has one\textnote{Attention!} major disadvantage: % +}{% + Note that \Macro{documentclass} has one drawback when using the option + interface described bellow\textnote{Attention!}: % +}% +unlike the interface described below, the options in \Macro{documentclass} are +not robust. So commands, lengths, counters, and such constructs may break +inside the optional argument of this command. For example, with many +non-\KOMAScript{} classes, using a \LaTeX{} length in the value of an option +results in an error% +\IfThisCommonLabelBaseNotOneOf{maincls,scrlttr2}{ before the value is passed + to a \KOMAScript{} package and it can take control of the option + execution}{}% +. So if you want to use a \LaTeX{} length, counter, or command as part of the +value of an option, you should use \DescRef{\LabelBase.cmd.KOMAoptions} or +\DescRef{\LabelBase.cmd.KOMAoption}. These commands will be described next.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{KOMAoptions}\Parameter{option list} + \Macro{KOMAoption}\Parameter{option}\Parameter{value list} +\end{Declaration} +\KOMAScript{}\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{scrextend}\and \Package{typearea}} also +provides the ability to change the values of most +\IfThisCommonLabelBaseOneOf{scrextend,scrjura}{}{class and }package options +even after loading the \IfThisCommonLabelBaseOneOf{scrextend,scrjura}{}{% + class or} package. You can use the \Macro{KOMAoptions} command to change the +values of a list of options, as in +\DescRef{\ThisCommonLabelBase.cmd.documentclass} or +\DescRef{\ThisCommonLabelBase.cmd.usepackage}. Each option in the +\PName{option list} has the form \PName{option}\texttt{=}\PName{value}% +\important{\PName{option}\texttt{=}\PName{value},\dots}. + +Some options also have a default value. If you do not specify a value, that is +if you give the option simply as \PName{option}, then this default value will +be used. + +Some options can have several values simultaneously. For such options, it is +possible, with the help of \Macro{KOMAoption}, to pass a list of values to a +single \PName{option}. The individual values are given as a comma-separated +\PName{value list}\important{\PName{value},\dots}. + +\begin{Explain} + \KOMAScript{} uses the commands \DescRef{scrbase.cmd.FamilyOptions} and + \DescRef{scrbase.cmd.FamilyOption} with the family ``\PValue{KOMA}'' to + implement this ability. + \IfThisCommonLabelBaseOneOf{typearea}{% Umbruchkorrektur + Advanced users will find more on these instructions in + \autoref{sec:scrbase.keyvalue}, \DescPageRef{scrbase.cmd.FamilyOptions}. + }{% + See \autoref{part:forExperts}, \autoref{sec:scrbase.keyvalue}, + \DescPageRef{scrbase.cmd.FamilyOptions}. }% +\end{Explain} + +Options set with \Macro{KOMAoptions} or \Macro{KOMAoption} will reach +\IfThisCommonLabelBase{scrextend}{}{both the \KOMAScript{} class and }any +previously loaded \KOMAScript{} packages that recognise these options. If an +option or a value is unknown, \hyperref[cha:scrbase]{\Package{scrbase}}% +\IndexPackage{scrbase}\important{\hyperref[cha:scrbase]{\Package{scrbase}}} +will report it as an error.% +% +\iffalse% Umbruchkorrekturtext +\iffree{}{\IfThisCommonLabelBase{scrlayer-scrpage}{\par + Incidentally, the \Package{scrpage2}\IndexPackage{scrpage2}% + \important{\Package{scrpage2}}, which is considered obsolete, does not have + this extension. Options can therefore only be set when the package is loaded + with the option explained previously.}{}}% +\fi% +% +\EndIndexGroup +% +\EndIndexGroup + +\phantomsection +\label{sec:\ThisCommonLabelBase.options.end} +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-pagestylemanipulation.tex b/macros/latex/contrib/koma-script/source-doc/english/common-pagestylemanipulation.tex new file mode 100644 index 0000000000..3a3933167d --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-pagestylemanipulation.tex @@ -0,0 +1,1038 @@ +% ====================================================================== +% common-pagestylemanipulation.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-pagestylemanipulation.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Text that is common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapitels in der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{common-pagestylemanipulation.tex} + [$Date: 2018-02-05 01:50:56 -0800 (Mon, 05 Feb 2018) $ + KOMA-Script guide (common paragraph: + Setting up defined page styles)] +\translator{Markus Kohm\and Jana Schubert\and Karl Hagen} + +% Date version of the translated file: 2018-02-05 + +\section{Manipulating Page Styles} +\seclabel{pagestyle.content} +\BeginIndexGroup +\BeginIndex{}{page>style} + +\IfThisCommonLabelBase{scrlayer}{% + Although \Package{scrlayer} itself does not define concrete page styles with + content\,---\,the previously mentioned page styles + \DescRef{\LabelBase.pagestyle.@everystyle@} and \PageStyle{empty} are + initially defined without any layers, i.\,e., without content\,---\,, the + package provides some options and commands to manipulate their contents.% +}{% + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \autoref{sec:scrlayer-scrpage.predefined.pagestyles} explains how the page + styles \DescRef{\LabelBase.pagestyle.scrheadings} and + \DescRef{\LabelBase.pagestyle.plain.scrheadings} are defined and how these + defaults can be changed. But topics such as creating running headers, + changing the widths of the header and footer, and putting horizontal lines + above or below the header or footer have yet to be described. Although + these capabilities are actually part of the + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + \important{\hyperref[cha:scrlayer]{\Package{scrlayer}}} package, they will + be explained below because these basic features of + \hyperref[cha:scrlayer]{\Package{scrlayer}} make up an important part of + \IfThisCommonLabelBase{scrlayer-scrpage}{\Package{scrlayer-scrpage}% + }{% + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + }.% + }{% + \IfThisCommonLabelBase{scrlayer-scrpage-experts}{% + This section is a supplement to + \autoref{sec:scrlayer.pagestyle.content}. It describes features that may + be too complicated for beginners.% + }{\InternalCommonFileUsageError}% + }% +} + +\IfThisCommonLabelBase{scrlayer-scrpage-experts}{\iffalse}{% + \csname iftrue\endcsname}% + \begin{Declaration} + \Macro{automark}\OParameter{section level of the right mark} + \Parameter{section level of the left mark} + \Macro{automark*}\OParameter{section level of the right mark} + \Parameter{section level of the left mark} + \Macro{manualmark} + \end{Declaration} + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \begin{Explain} + In both the standard \LaTeX{} classes and the \KOMAScript{} classes, the + decision of whether to use automatic or static running + heads\Index{running heads>automatic}\Index{running heads>static} is made + by using the appropriate page style. Running heads repeat some + descriptive text, such as a title, that is appropriate to the page or + column, usually in the header, more rarely in the footer. As already + explained in + \autoref{sec:maincls.pagestyle}, you get automatic running heads with + \DescRef{maincls.pagestyle.headings}\IndexPagestyle{headings}% + \important{\DescRef{maincls.pagestyle.headings}} + + In the article classes\OnlyAt{\Class{article}\and \Class{scrartcl}} + \Class{article} or \hyperref[cha:maincls]{\Class{scrartcl}}, the + \PageStyle{headings}\IndexPagestyle{headings} page style uses the + section heading, which is either the mandatory or the optional argument + of \DescRef{maincls.cmd.section}, for the running head% + \textnote{automatic running head} of one-sided documents. Two-sided + documents use this section heading as the \emph{left mark} and the + subsection heading as the \emph{right mark}. The left mark is printed, + as the name indicates, on left-hand (verso) pages. The right mark is + printed on right-hand (recto)\,---\,in one-sided printing this means on + all\,---\,pages. The classes by default also delete the right mark + whenever they put the section heading into the left mark. + + The report and book classes \OnlyAt{\Class{report}\and + \Class{scrreprt}\and \Class{book}\and \Class{scrbook}} start one level + higher. Thus they use the chapter heading as the right mark in one-sided + printing. In two-sided printing, the chapter heading is the left mark + and the section heading is the right mark. + + If you use \DescRef{maincls.pagestyle.myheadings}% + \IndexPagestyle{myheadings}% + \important{\DescRef{maincls.pagestyle.myheadings}}\textnote{manual + running head}, the marks in the page header still exist, and the page + numbers are placed in the same way, but section commands no longer set + the marks automatically. You can set them manually\important{% + \DescRef{\ThisCommonLabelBase.cmd.markright}\\ + \DescRef{\ThisCommonLabelBase.cmd.markboth}} using the commands + \DescRef{\ThisCommonLabelBase.cmd.markright} and + \DescRef{\ThisCommonLabelBase.cmd.markboth}, which are described later + in this section. + \end{Explain}\par + }{% + \IfThisCommonLabelBase{scrlayer}{% + For most classes, the choice of a page style\,---\,generally + \PageStyle{headings} or \PageStyle{myheading}\,---\,determines whether + the running heads are created automatically or manually. % + }{\InternalCommonFileUsageError}% + }% + This distinction has been eliminated by % + \iffalse \Package{scrpage2} and now also by \fi% + \hyperref[cha:scrlayer]{\Package{scrlayer}}\IndexPackage{scrlayer}. Instead + of distinguishing between automatic\textnote{automatic and manual running + heads} and manual running heads by which page style is selected, there are + two new commands: \Macro{automark} and \Macro{manualmark}. + + The \Macro{manualmark}\important{\Macro{manualmark}} command switches to + manual marks and deactivates the automatic filling of the marks. In contrast, + \Macro{automark}\important{\Macro{automark}} and \Macro{automark*} define + which section levels should be used to set the mark automatically. The + optional argument is the \PName{section level of the right mark}, the + mandatory argument the \PName{section level of the left mark}. The + arguments should always be the name of a section level like + \PValue{part}, \PValue{chapter}, \PValue{section}, \PValue{subsection}, + \PValue{subsubsection}, \PValue{paragraph}, or \PValue{subparagraph}. + + Normally, the higher level should be used for the left mark and the lower + level for the right mark. This is only a convention and not a requirement, + but it makes sense. + + Please note\textnote{Attention!} that not every class provides running heads + for every section level. For example, the standard classes\textnote{% + \KOMAScript{} vs. standard classes} never use \DescRef{maincls.cmd.part} + in the heading. The \KOMAScript{} classes, on the other hand, support all + levels. + + The difference between \Macro{automark} and \Macro{automark*}% + \important{\Macro{automark*}} is that \Macro{automark} overrides all + previous commands to automatically set the mark, while \Macro{automark*} + changes only the behaviour of the section levels specified in its + arguments.% + \IfThisCommonLabelBase{scrlayer-scrpage}{}{ With this feature you can handle + relatively complex cases.}% Umbruchoptimierung + \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{\csname + iffalse\endcsname}% + \iffalse% Umbruchkorrekturtext + \iffree{}{\par + The obsolete package + \Package{scrpage2}\IndexPackage{scrpage2}\important{\Package{scrpage2}} + understands both \Macro{manualmark} and \Macro{automark}, but not + \Macro{automark*}. Therefore the following examples are not completely + transferable when using \Package{scrpage2}.% + }% + \fi + % + \begin{Example} + \phantomsection\xmpllabel{mark}% + Suppose you want chapter headings to be used as the running head of even + pages and the section heading to be the running head of odd pages, as + usual. But on odd pages you also want the chapter headings to be used as + the running head until the first section appears. To do so, you first + have to load \IfThisCommonLabelBase{scrlayer-scrpage}{% + \Package{scrlayer-scrpage}% + }{% + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} + and select the \DescRef{\LabelBase.pagestyle.scrheadings} page style, + so the document starts with: +\begin{lstcode} + \documentclass{scrbook} + \usepackage{scrlayer-scrpage} + \pagestyle{scrheadings} +\end{lstcode} + Next, ensure that the chapter headings set both the left and the right + marks: +\begin{lstcode} + \automark[chapter]{chapter} +\end{lstcode} + Then the section heading should also set right marks: +\begin{lstcode} + \automark*[section]{} +\end{lstcode} + Here the starred version is used, since the previous \Macro{automark} + command should remain in effect. Additionally, the mandatory argument + for the \PName{section level of the left mark} is empty because this + mark should remain unchanged. + + All that's missing now is a bit of document content to show the result: +\begin{lstcode} + \usepackage{lipsum} + \begin{document} + \chapter{Chapter Heading} + \lipsum[1-20] + \section{Section Heading} + \lipsum[21-40] + \end{document} +\end{lstcode} + We use the extremely useful \Package{lipsum}\IndexPackage{lipsum} + package to generate some dummy text with command + \Macro{lipsum}\IndexCmd{lipsum}. + + If you test the example, you will see that the first page of the chapter + appears, as usual, without a running head, since this page automatically + uses the \PageStyle{plain} page style + \DescRef{\LabelBase.pagestyle.plain.scrheadings} (see the + \DescRef{maincls.cmd.chapterpagestyle} on + \DescPageRef{maincls.cmd.chapterpagestyle}). Pages~2--4 have the + chapter headings in the running head. After the section heading on + page~4, the running head of page~5 changes to this section heading. From + this page to the end, the running head alternates from page to page + between the chapter and section headings.% + \end{Example} + \fi + + \begin{Declaration} + \Option{automark} + \OptionVName{autooneside}{simple switch} + \Option{manualmark} + \end{Declaration} + Instead of the commands described previously, you can also use the + \Option{manualmark}\important{\Option{manualmark}\\\Option{automark}} and + \Option{automark} options to switch between automatic and manual running + heads. \Option{automark} always uses the default\textnote{default} + \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{\csname + iffalse\endcsname}% + \lstinline|\automark[section]{chapter}| for classes with + \DescRef{maincls.cmd.chapter} and + \lstinline|\automark[subsection]{section}| for other classes. + \else +\begin{lstcode} + \automark[section]{chapter} +\end{lstcode} + for classes with \DescRef{maincls.cmd.chapter} and +\begin{lstcode} + \automark[subsection]{section} +\end{lstcode} + for other classes. + \fi + + \IfThisCommonLabelBase{scrlayer-scrpage}{% + In one-sided printing, you normally want only the higher section levels + to provide the running title.% + }{% + In one-sided printing, you normally do not want the lower section level + to influence the right mark. Instead, you want the higher section + level, which would appear in only the left mark in two-sided printing, to + be the running head of all pages.% + } The default option \Option{autooneside}\important{\Option{autooneside}} + corresponds to this behaviour. The option accepts the values for + simple switches listed in \autoref{tab:truefalseswitch}, + \autopageref{tab:truefalseswitch}. If you deactivate this option, the + optional and mandatory arguments of \Macro{automark} and \Macro{automark*} + will again control the running head in one-sided printing.% + \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{\csname + iffalse\endcsname}% + \begin{Example} + \phantomsection\xmpllabel{mark.oneside}% + Suppose you have a one-sided report but want running heads similar to + those in the previous book example. Specifically, the chapter headings + should be used as the running head until the first section appears. + From the then on, the section heading should be used. So we modify the + previous example a little bit: +\begin{lstcode} + \documentclass{scrreprt} + \usepackage[autooneside=false]{scrlayer-scrpage} + \pagestyle{scrheadings} + \automark[section]{chapter} + \usepackage{lipsum} + \begin{document} + \chapter{Chapter Heading} + \lipsum[1-20] + \section{Section Heading} + \lipsum[21-40] + \end{document} +\end{lstcode} + As you can see an \DescRef{\LabelBase.cmd.automark*} command is not + required in this case. You should try the example with + \Option{autooneside} set to \PValue{true}, or remove the option, for + comparison. You will notice a difference in the running head from + page~4 on. + \end{Example} + \fi + + Note\textnote{Attention!} that merely loading the package does not have any + effect on whether automatic or manual running heads are used, or what kind + of sectioning headings fill the marks. Only by explicitly using the option + \Option{automark} or \Option{manualmark}, or the command + \DescRef{\LabelBase.cmd.automark} or \DescRef{\LabelBase.cmd.manualmark}, + will the conditions here be initialized.% + \IfThisCommonLabelBase{scrlayer-scrpage}{\par% + You can find additional background information and examples of how to use + these commands in the documentation for the \Package{scrlayer} package + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \Package{scrlayer-scrpage}% + }{% + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + } in \autoref{sec:scrlayer-scrpage.pagestyle.content}, starting on + \DescPageRef{scrlayer-scrpage.cmd.manualmark}.% + }{}% + \EndIndexGroup + \EndIndexGroup + + + \begin{Declaration} + \OptionVName{draft}{simple switch} + \end{Declaration} + This \KOMAScript{} option accepts the values for simple switches + listed in \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. + If this option is active, all elements of the page styles will also show + rulers\index{ruler}% + \IfThisCommonLabelBase{scrlayer}{ for}{% + . This can sometimes be useful during} + the drafting process.% + \IfThisCommonLabelBase{scrlayer-scrpage}{ % + If this option has been set globally (see the optional argument + of \DescRef{\LabelBase.cmd.documentclass}) but you do not want the + rulers, you can deactivate them for this package alone by using + \OptionValue{draft}{false} as an optional argument of + \DescRef{\LabelBase.cmd.usepackage} while loading the package.% + }{}% + \EndIndexGroup + + \begin{Declaration} + \Macro{MakeMarkcase}\Parameter{text} + \end{Declaration} + Automatic running heads, but not manual ones, use \Macro{MakeMarkcase} for + their output. If the command has not been defined, e.\,g., by the class + while loading \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + }, it is defined by default to output the argument \PName{text} without + changes. But the default can be changed either by redefining + \Macro{MakeMarkcase} or by using the \DescRef{\LabelBase.option.markcase}% + \IndexOption{markcase}\important{\DescRef{\LabelBase.option.markcase}} + option, which will be described next. Depending on the setting, the + argument can, e.\,g., be converted into upper or lower case.% + \EndIndexGroup + + + \begin{Declaration} + \OptionVName{markcase}{value} + \end{Declaration} + As explained earlier, with \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } you can choose between manual and automatic running heads. Using automatic + running heads, the corresponding marks are set using the section heading + commands. In some cultures, in contrast to the typography of German-speaking + countries, it is common practice to set the running heads in upper-case + letters. The \LaTeX{} standard classes do so by default. The + \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } package also offers this as an option. To do so, use the + \OptionValue{markcase}{upper}\important{\OptionValue{markcase}{upper}}% + \IndexOption[indexmain]{markcase~=upper} option, which redefines + \DescRef{scrlayer.cmd.MakeMarkcase}\IndexCmd[indexmain]{MakeMarkcase}. + + \IfThisCommonLabelBase{scrlayer}{% + Because of the poor typographical quality of the primitive capitalisation + routine (see the explanation of \DescRef{scrlayer-scrpage.option.markcase} + in \autoref{sec:scrlayer-scrpage.pagestyle.content}, + \autopageref{expl:scrlayer-scrpage.MakeUppercase}) the author of + \KOMAScript recommends that you avoid upper-case typesetting for running + heads.% + }{% + Unfortunately,\phantomsection\label{expl:\ThisCommonLabelBase.MakeUppercase} + the \LaTeX{} command for converting text to upper case\Index{upper case}, + \Macro{MakeUppercase}\IndexCmd{MakeUppercase}, does not produce good + results because it neither spaces characters nor balances lines + appropriately. This is certainly in part due to the fact that a + typographically correct upper-case conversion requires analysing the + glyphs to account for the different letter shapes \iffree{and their + combinations}{} while balancing the block. I therefore recommend that + you avoid upper-case typesetting for running heads.% + } This is usually possible with \OptionValue{markcase}{used}\important{% + \OptionValue{markcase}{used}}\IndexOption[indexmain]{markcase~=used}. + However, some classes insert \Macro{MarkUppercase}, or even the \TeX{} + command \Macro{uppercase}, into the running heads. For such cases, you can + use the option \OptionValue{markcase}{noupper}% + \important{\OptionValue{markcase}{noupper}}% + \IndexOption[indexmain]{markcase~=noupper}. This will also deactivate + \Macro{MakeUppercase} and \Macro{uppercase} inside the running heads. + + You can find all valid values for \Option{markcase} in + \autoref{tab:scrlayer-scrpage.markcase}% + \IfThisCommonLabelBase{scrlayer-scrpage}{}{, + \autopageref{tab:scrlayer-scrpage.markcase}}.% + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \begin{table} + \centering + \caption[Available values for the \Option{markcase} option]{Available + values for the \Option{markcase} option to select upper/lower case + typesetting in automatic running heads}% + \label{tab:\ThisCommonLabelBase.markcase}% + \begin{desctabular} + \pventry{lower}{\IndexOption[indexmain]{markcase~=lower}% + redefines \DescRef{\LabelBase.cmd.MakeMarkcase} to convert the + automatic running heads into lower-case letters using + \Macro{MakeLowercase} (lower case typesetting).% + }% + \pventry{upper}{\IndexOption[indexmain]{markcase~=upper}% + redefines \DescRef{\LabelBase.cmd.MakeMarkcase} to convert the + automatic running heads into upper-case letters using + \Macro{MakeUppercase} (upper case typesetting).% + }% + \pventry{used}{\IndexOption[indexmain]{markcase~=used}% + redefines \DescRef{\LabelBase.cmd.MakeMarkcase} to use automatic + running heads without any case changes.% + }% + \entry{\PValue{ignoreuppercase}, \PValue{nouppercase}, + \PValue{ignoreupper}, + \PValue{noupper}}{\IndexOption[indexmain]{markcase~=noupper}% + redefines not only \DescRef{\LabelBase.cmd.MakeMarkcase} but also + \Macro{MakeUppercase} and \Macro{uppercase} locally to the running + heads to leave the automatic running heads unchanged.% + }% + \end{desctabular} + \end{table} + }{}% + \EndIndexGroup + + + \begin{Declaration} + \Macro{leftmark} + \Macro{rightmark} + \Macro{headmark} + \Macro{pagemark} + \end{Declaration} + If you want to depart from the predefined page styles, you typically need to + decide where to place the marks' contents. With + \Macro{leftmark}\important{\Macro{leftmark}} you can define what will + appear in the left mark when the page is output. + + Similarly, you can use \Macro{rightmark}\important{\Macro{rightmark}} to + define the contents of the right mark.\iffree{}{ For information about some + subtleties when using these commands, see further + \DescRef{maincls-experts.cmd.rightmark} in + \autoref{sec:maincls-experts.addInfos}, + \DescPageRef{maincls-experts.cmd.rightmark}.} + + You can make life easier with \Macro{headmark}\important{\Macro{headmark}}. + This extension of \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } is a shorthand that resolves to either \Macro{leftmark} or + \Macro{rightmark} depending on whether the current page is even or odd. + + The \Macro{pagemark}\important{\Macro{pagemark}} command has nothing to do + with \TeX's mark mechanism. It is serves to output a formatted page number. + \BeginIndex{FontElement}{pagenumber}\LabelFontElement{pagenumber}% + The font of element + \FontElement{pagenumber}\important{\FontElement{pagenumber}} will be used + for the output. This can be changed using the \Macro{setkomafont} or + \DescRef{maincls.cmd.addtokomafont} commands (see also + \autoref{sec:maincls.textmarkup}, \DescPageRef{maincls.cmd.setkomafont}).% + \EndIndex{FontElement}{pagenumber}% + \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{% + \par % + If you are interested in an example showing the usage of the + \Macro{headmark} and \Macro{pagemark} commands, see + \autoref{sec:scrlayer-scrpage.pagestyle.content}, + \PageRefxmpl{scrlayer-scrpage.cmd.headmark}. Internally, the + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \Package{scrlayer-scrpage}% + }{% + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + } package uses many such features of + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + }{% + \Package{scrlayer}% + }.% + \csname iffalse\endcsname}% + \begin{Example} + \phantomsection\xmpllabel{cmd.headmark}% + Suppose you want the running head to be aligned to the left margin and + the page number to the right margin in one-sided printing. The following + minimal working example does just this: +\begin{lstcode} + \documentclass{scrreprt} + \usepackage{blindtext} + \usepackage[automark]{scrlayer-scrpage} + \pagestyle{scrheadings} + \ihead{\headmark} + \ohead*{\pagemark} + \chead{} + \cfoot[]{} + \begin{document} + \blinddocument + \end{document} +\end{lstcode} + The \Package{blindtext}\IndexPackage{blindtext} package and its + \Macro{blinddocument}\IndexCmd{blinddocument} command have been used + here to quickly generate sample document content for the example. + + The \DescRef{scrlayer-scrpage.cmd.ihead}\IndexCmd{ihead} and + \DescRef{scrlayer-scrpage.cmd.ohead*}\IndexCmd{ohead*} commands + configure the desired marks. The starred variant + \DescRef{scrlayer-scrpage.cmd.ohead*} % + \iffalse% Umbruchvarianten + configures the page number mark not only on the pages set with the + \DescRef{\LabelBase.pagestyle.scrheadings}% + \IndexPagestyle{scrheadings} page style but also those set + with the \PageStyle{plain} % + \else% + also configures the page number with the % + \fi% + \DescRef{\LabelBase.pagestyle.plain.scrheadings}% + \IndexPagestyle{plain.scrheadings} page style used on the first page of + a chapter.% + + Because these page styles have predefined marks in the centre of the + header and footer, those elements are cleared by using + \DescRef{scrlayer-scrpage.cmd.chead} and + \DescRef{scrlayer-scrpage.cmd.cfoot} with empty arguments. Alternatively + you could use + \DescRef{scrlayer-scrpage-experts.cmd.clearpairofpagestyles} + \IndexCmd{clearpairofpagestyles} \emph{before} + \DescRef{scrlayer-scrpage.cmd.ihead}. You will find this command + described in \autoref{sec:scrlayer-scrpage-experts.pagestyle.pairs}. + \end{Example} + + Please note\textnote{Attention!} that the empty optional argument of + \DescRef{scrlayer-scrpage.cmd.cfoot} in the example above is not the same + as omitting the optional argument. You should try it yourself and have a + look at the difference in the footer of the first page.% + \fi + + \IfThisCommonLabelBase{scrlayer-scrpage}{% Umbruchvarianten + Advanced users can find more mark-setting commands% + }{% + If the options for the marks described above are not sufficient, + additional commands for advanced users are documented% + } % + starting on \IfThisCommonLabelBase{scrlayer-scrpage}{% + \DescPageRef{scrlayer-scrpage-experts.cmd.righttopmark}}{% + \DescPageRef{\ThisCommonLabelBase.cmd.righttopmark}}.% + \iffalse% Umbruchkorrektur + \ For example, there you can find + \DescRef{scrlayer-scrpage-experts.cmd.leftfirstmark} and + \DescRef{scrlayer-scrpage-experts.cmd.rightbotmark}, which are quite useful + for documents like lexicons.% + \fi% + \EndIndexGroup + + + \begin{Declaration} + \Macro{partmarkformat}% + \Macro{chaptermarkformat}% + \Macro{sectionmarkformat}% + \Macro{subsectionmarkformat}% + \Macro{subsubsectionmarkformat}% + \Macro{paragraphmarkformat}% + \Macro{subparagraphmarkformat} + \end{Declaration} + \KOMAScript{} classes and the \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } package typically use these commands internally to format the section + numbers. They also support the \DescRef{maincls.cmd.autodot} mechanism of + the \KOMAScript{} classes. If desired, these commands can be redefined to + achieve a different formatting of section numbers.% + \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{% + \ See the example in \autoref{sec:scrlayer-scrpage.pagestyle.content}, + \PageRefxmpl{scrlayer-scrpage.cmd.sectionmarkformat} for more + information.% + \csname iffalse\endcsname% + }% + \begin{Example} + \phantomsection\xmpllabel{cmd.sectionmarkformat}% + \iftrue + For example, if you want to have running heads without a section + number, this is how you do it: + \else + Suppose you want section headings without the section number to appear + in the running head. This can be accomplished easily with the + following: + \fi +\begin{lstcode}[belowskip=-\dp\strutbox] + \renewcommand*{\sectionmarkformat}{} +\end{lstcode} + \end{Example} + \fi% + \EndIndexGroup + + + \begin{Declaration} + \Macro{partmark}\Parameter{Text}% + \Macro{chaptermark}\Parameter{Text}% + \Macro{sectionmark}\Parameter{Text}% + \Macro{subsectionmark}\Parameter{Text}% + \Macro{subsubsectionmark}\Parameter{Text}% + \Macro{paragraphmark}\Parameter{Text}% + \Macro{subparagraphmark}\Parameter{Text} + \end{Declaration} + Most classes use these commands internally to set the marks according to the + sectioning commands. The argument should contain the text without the number + of the sectioning unit. The number is automatically determined using the + current section level if you use numbered headings. + + However\textnote{Attention!}, not all classes use such a command for + every section level. The standard classes\textnote{\KOMAScript{} vs. + standard classes}, for example, do not call \Macro{partmark} + \IfThisCommonLabelBase{scrlayer-scrpage}{% + upon a \Macro{part} command}{% + , whereas the \KOMAScript{} classes naturally support \Macro{partmark} as + well}. + + If you redefine these commands, be sure\textnote{Attention!} to check + whether the numbers will be output via the + \DescRef{maincls.counter.secnumdepth} before setting the number even if you + do not change the \DescRef{maincls.counter.secnumdepth} counter yourself, + because packages and classes may do so locally and rely on correct handling + of \DescRef{maincls.counter.secnumdepth}. + + The \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } package also redefines these commands whenever you use + \DescRef{scrlayer.cmd.automark} or \DescRef{scrlayer.cmd.manualmark} or the + corresponding options, to activate or deactivate the desired running heads.% + \EndIndexGroup + + + \begin{Declaration} + \Macro{markleft}\Parameter{left mark}% + \Macro{markright}\Parameter{right mark}% + \Macro{markboth}\Parameter{left mark}\Parameter{right mark} + \end{Declaration} + Regardless of whether you are working with manual or automatic running + heads, you can always change the contents of the \PName{left mark} or the + \PName{right mark} using these commands. Note that the left-hand mark + resulting from \Macro{leftmark}\IndexCmd{leftmark}% + \important{\Macro{leftmark}} will be the last mark placed on the + corresponding page, while the right-hand mark resulting from + \Macro{rightmark}\IndexCmd{rightmark}\important{\Macro{rightmark}} is the + first mark placed on the corresponding page. For more details, see + \iffree{}{the additional explanation of + \DescRef{maincls-experts.cmd.rightmark} in + \autoref{sec:maincls-experts.addInfos}, + \DescPageRef{maincls-experts.cmd.rightmark} or} to + \DescRef{scrlayer.cmd.rightfirstmark}\IfThisCommonLabelBase{scrlayer}{}{ in + \autoref{sec:scrlayer.pagestyle.content}}, + \DescPageRef{scrlayer.cmd.rightfirstmark}. + + If you are using manual running heads\Index{running head>manual}, the marks + remain valid until they are explicitly replaced by reusing the corresponding + commands. However, if you are using automatic running heads, the marks can + become invalid with the next section heading, depending on the automatic + configuration. + + You can also use these commands in conjunction with the starred versions of + the sectioning commands.% + \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{% + \ You can find detailed examples illustrating usage of \Macro{markboth} + with the \IfThisCommonLabelBase{scrlayer-scrpage}{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + }{% + \Package{scrlayer}% + }-derived package \IfThisCommonLabelBase{scrlayer-scrpage}{% + \Package{scrlayer-scrpage}% + }{% + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + } in + \autoref{sec:scrlayer-scrpage.pagestyle.content}, + \PageRefxmpl{scrlayer-scrpage.cmd.markboth}.% + \csname iffalse\endcsname% + }% + \begin{Example} + \phantomsection\xmpllabel{cmd.markboth}% + Suppose you write a preface of several pages placed just before the + table of contents but not appearing in it. However, since you use + dividing lines in your header, you want a running head for this preface: +\begin{lstcode} + \documentclass[headsepline]{book} + \usepackage{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{blindtext} + \begin{document} + \chapter*{Preface} + \markboth{Preface}{Preface} + \blindtext[20] + \tableofcontents + \blinddocument + \end{document} +\end{lstcode} + At first glance, this seems to produce the desired result. Taking a + second look, however, you can see that the running title + ``\texttt{Preface}'' does not appear in upper-case letters, unlike the + other running heads. But that's easy to change: +\begin{lstcode} + \documentclass[headsepline]{book} + \usepackage{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{blindtext} + \begin{document} + \chapter*{Preface} + \markboth{\MakeMarkcase{Preface}}{\MakeMarkcase{Preface}} + \blindtext[20] + \tableofcontents + \blinddocument + \end{document} +\end{lstcode} + Using command \DescRef{\LabelBase.cmd.MakeMarkcase} results in getting + the same letter case as for automatic running heads. + + Now, let's move the \DescRef{maincls.cmd.tableofcontents} in front + of the preface and remove the \Macro{markboth} command. You'll + discover that the preface now has the running head + ``\texttt{CONTENTS}''. This is due to a quirk of + \DescRef{maincls.cmd.chapter*} (see also \autoref{sec:maincls.structure} + on \DescPageRef{maincls.cmd.chapter*}). If you do not want a running + head here, you can easily accomplish this by passing two empty arguments + to \Macro{markboth}: +\begin{lstcode} + \documentclass[headsepline]{book} + \usepackage{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{blindtext} + \begin{document} + \tableofcontents + \chapter*{Preface} + \markboth{}{} + \blindtext[20] + \blinddocument + \end{document} +\end{lstcode} + \end{Example} + \fi% + \EndIndexGroup +\fi + + +\IfThisCommonLabelBase{scrlayer-scrpage}{\iffalse}{\csname iftrue\endcsname} + \begin{Declaration} + \Macro{GenericMarkFormat}\Parameter{name of the section level} + \end{Declaration} + By default, this command is used to format all section numbers in running + heads below the subsection level, and for classes without + \DescRef{maincls.cmd.chapter}, also for the section and subsection levels, + unless the respective mark commands for those levels are defined before + loading \Package{scrlayer}. The command causes the package to use + \Macro{@seccntmarkformat}\IndexCmd{@seccntmarkformat}% + \important{\Macro{@seccntmarkformat}} if this internal command is defined, + as it is in the \KOMAScript{} classes. Otherwise \Macro{@seccntformat}% + \IndexCmd{@seccntformat}\important{\Macro{@seccntformat}} will be used, + which is provided by the \LaTeX{} kernel. The mandatory argument of the + command contains the name of a sectioning command, such as \PValue{chapter} + or \PValue{section} \emph{without} the backslash prefix. + + By redefining this command, you can change the default number format for all + sectioning commands that use it. Classes can also change the default + formatting also by defining this command.% + \IfThisCommonLabelBase{scrlayer-scrpage-experts}{\iftrue}{% + \par % + A detailed example illustrating the interplay of the + \Macro{GenericMarkFormat} command with the + \DescPageRef{\ThisCommonLabelBase.cmd.chaptermark} command and + \DescRef{\ThisCommonLabelBase.cmd.sectionmarkformat} or + \DescRef{\ThisCommonLabelBase.cmd.subsectionmarkformat} when using + the \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + }-derived package \IfThisCommonLabelBase{scrlayer-scrpage}{% + \Package{scrlayer-scrpage}% + }{% + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + } is shown in \autoref{sec:scrlayer-scrpage-experts.pagestyle.content}, + \PageRefxmpl{scrlayer-scrpage-experts.cmd.GenericMarkFormat}.% + \csname iffalse\endcsname}% + \begin{Example} + \phantomsection + \xmpllabel{cmd.GenericMarkFormat}% + Suppose you want the section numbers of all levels in the running head + of an article to be printed in white within a black box. Since the + commands \Macro{sectionmarkformat} and \Macro{subsectionmarkformat} of + the \Package{scrlayer} package are defined with + \Macro{GenericMarkFormat} for articles using the standard \LaTeX{} + \Class{article} class, you need to redefine only this one command: +\begin{lstcode} + \documentclass{article} + \usepackage{blindtext} + \usepackage[automark]{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{xcolor} + \newcommand*{\numberbox}[1]{% + \colorbox{black}{\strut~\textcolor{white}{#1}~}} + \renewcommand*{\GenericMarkFormat}[1]{% + \protect\numberbox{\csname the#1\endcsname}\enskip} + \begin{document} + \blinddocument + \end{document} +\end{lstcode} + The colour has been changed using the + \Package{xcolor}\IndexPackage{xcolor} package. More details can be found + in that package's manual (see \cite{package:xcolor}). + + This example also uses an invisible strut. Any detailed \LaTeX{} + introduction should explain the related command \Macro{strut}. + + A helper macro, \Macro{numberbox}, has been defined to format the number + within a box. This command is prefixed in the redefinition of + \Macro{GenericMarkFormat} by \Macro{protect} in order to protect it from + expansion. This is necessary because otherwise the upper-case letter + conversion of \Macro{MakeUppercase} for the running head, would result + in using the colours ``\texttt{BLACK}'' and ``\texttt{WHITE}'' instead + of ``\texttt{black}'' and ``\texttt{white}'', and those colours are + undefined. Alternatively, you could define \Macro{numberbox} using + \Macro{DeclareRobustCommand*} instead of \Macro{newcommand*} and omit + \Macro{protect} (see \cite{latex:clsguide}). + + If you wanted to achieve the same effect with a \KOMAScript{} class or + with the standard \LaTeX{} classes \Class{book} or \Class{report}, you + would also have to redefine, respectively, + \DescRef{scrlayer.cmd.sectionmarkformat}\IndexCmd{sectionmarkformat}% + \important{\DescRef{scrlayer.cmd.sectionmarkformat}} and + \DescRef{scrlayer.cmd.subsectionmarkformat}% + \IndexCmd{subsectionmarkformat}% + \important{\DescRef{scrlayer.cmd.subsectionmarkformat}}, or + \DescRef{scrlayer.cmd.chaptermarkformat}% + \IndexCmd{chaptermarkformat}% + \important{\DescRef{scrlayer.cmd.chaptermarkformat}} and + \DescRef{scrlayer.cmd.sectionmarkformat}% + \IndexCmd{sectionmarkformat}% + \important{\DescRef{scrlayer.cmd.sectionmarkformat}}, because + these are not by default defined using \Macro{GenericMarkFormat}: +\begin{lstcode} + \documentclass{scrbook} + \usepackage{blindtext} + \usepackage[automark]{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{xcolor} + \newcommand*{\numberbox}[1]{% + \colorbox{black}{\strut~\textcolor{white}{#1}~}} + \renewcommand*{\GenericMarkFormat}[1]{% + \protect\numberbox{\csname the#1\endcsname}\enskip} + \renewcommand*{\chaptermarkformat}{\GenericMarkFormat{chapter}} + \renewcommand*{\sectionmarkformat}{\GenericMarkFormat{section}} + \begin{document} + \blinddocument + \end{document} +\end{lstcode} + \end{Example} + \fi% + \EndIndexGroup + + + \begin{Declaration} + \Macro{righttopmark}% + \Macro{rightbotmark}% + \Macro{rightfirstmark}% + \Macro{lefttopmark}% + \Macro{leftbotmark}% + \Macro{leftfirstmark} + \end{Declaration} + \LaTeX\ChangedAt{v3.16}{\Package{scrlayer}} typically uses a two-part + \TeX{} mark for page styles. Running heads can access the left part of that + mark with \DescRef{scrlayer.cmd.leftmark}% + \important{\DescRef{scrlayer.cmd.leftmark}}\IndexCmd{leftmark} and the right + part with \DescRef{scrlayer.cmd.rightmark}% + \important{\DescRef{scrlayer.cmd.rightmark}}\IndexCmd{rightmark}. In fact, + it was probably intended to use \DescRef{scrlayer.cmd.leftmark} for the + running head of left (even) pages and \DescRef{scrlayer.cmd.rightmark} for + the running head of right (odd) pages of two-sided documents. In + one-sided printing, however, the standard classes do not even set the left + part of the mark. + + \TeX{} itself knows three ways to access a mark. The \Macro{botmark}% + \IndexCmd{botmark}\important{\Macro{botmark}} is the last valid mark of the + most recent page that has been built. If no mark has been set on the page, + it corresponds to the last mark set on the pages that have already been + shipped out. The \LaTeX{} command \DescRef{scrlayer.cmd.leftmark} uses + precisely this mark, so it returns the left part of the last mark of the + page. This corresponds exactly to \Macro{leftbotmark}% + \important{\Macro{leftbotmark}}. By comparison, \Macro{rightbotmark}% + \important{\Macro{rightbotmark}} prints the right part of this mark. + + \Macro{firstmark}\IndexCmd{firstmark}\important{\Macro{firstmark}} is the + first mark of the last page that has been built. This is the first mark that + has been set on the page. If no mark has been set on the page, it + corresponds to the last mark of the pages that have already been shipped + out. The \LaTeX{} command \DescRef{scrlayer.cmd.rightmark} uses precisely + this mark, so it returns the right part of the first mark of the page. This + corresponds exactly to \Macro{rightfirstmark}% + \important{\Macro{rightfirstmark}}. By comparison, \Macro{leftfirstmark}% + \important{\Macro{leftfirstmark}} prints the left part of this mark. + + \Macro{topmark}\IndexCmd{topmark}\important{\Macro{topmark}} is the content + that \Macro{botmark} had before building the current page. \LaTeX{} itself + does not use it. Nevertheless, \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } provides \Macro{lefttopmark}\important{\Macro{lefttopmark}} to access the + left part of this mark and \Macro{righttopmark}% + \important{\Macro{righttopmark}} to access the right part. + + Note\textnote{Attention!} that the left and right portions of the mark + can only be set together. Even if you use + \DescRef{scrlayer.cmd.markright}\IndexCmd{markright} to change only the + right part, the left part will set again (unchanged). Accordingly, in + two-sided printing, using the \PageStyle{headings}% + \important{\PageStyle{headings}}\IndexPagestyle{headings} page style, + the higher section levels always make both parts. For example, + \DescRef{scrlayer.cmd.chaptermark} uses \DescRef{scrlayer.cmd.markboth} with + an empty right argument in this case. This is the reason + \DescRef{scrlayer.cmd.rightmark} or \Macro{rightfirstmark} always shows an + empty value on pages which start a chapter, even if there was a + \DescRef{scrlayer.cmd.sectionmark} or \DescRef{maincls.cmd.section} on the + same page to make the right part of the mark. + + Please note\textnote{Attention!} that using any of these commands to show + the left or right part of the mark as part of the page content may lead to + unexpected results. They are really meant for use in the header or footer + of a page style only. Therefore, they should always be part of the contents + of a layer when using \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + }. But it does not matter whether the layer is restricted to the background + or the foreground, since all layers are shipped out after building the + current page. + + If you need more information about the mark mechanism + \iffree{of \TeX{}}{\unskip}, please have a look at + \cite[chapter~23]{knuth:texbook}. The topic is flagged there as an issue for + real experts. \IfThisCommonLabelBase{scrlayer}{% Umbruchkorrektur + So if the explanation above confused you, please don't worry about it.}{}% + \EndIndexGroup + + + \begin{Declaration} + \Macro{@mkleft}\Parameter{left mark}% + \Macro{@mkright}\Parameter{right mark}% + \Macro{@mkdouble}\Parameter{mark}% + \Macro{@mkboth}\Parameter{left mark}\Parameter{right mark} + \end{Declaration} + Within classes and packages, you may only want to use running heads if + automatic running heads are active (see the + \DescRef{scrlayer.option.automark} option and the + \DescRef{scrlayer.cmd.automark} command on + \DescPageRef{scrlayer-scrpage.cmd.automark}). In the standard \LaTeX{} + classes, this only works with \Macro{@mkboth}. This command corresponds to + either \Macro{@gobbletwo}, which simply consumes both mandatory arguments, + or \DescRef{scrlayer.cmd.markboth}, which sets both the \PValue{left mark} + and the \PValue{right mark}. Packages like \Package{babel} also change + \Macro{\@mkboth}, e.\,g., to enable language switching in the running head. + + However, if you want to change only the \PName{left mark} or the + \PName{right mark} without changing the other one, there is no corresponding + command. The \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } package itself needs such commands to implement automatic running heads. + So if \Macro{@mkleft}, for setting the left mark only, or \Macro{@mkright}, + for setting the right mark only, or \Macro{@mkdouble}, for setting both + marks with the same content, is undefined when loading + \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + }, this package will define them. This definition uses the state of + \Macro{@mkboth} as an indication of whether to use automatic running heads. + The commands will set the marks only in the case of automatic running heads. + + Class and package authors can also fall back on these commands as appropriate + if they want to set the left or right the marks only if automatic running + heads are activated.% + \EndIndexGroup% +\fi% +% +\IfThisCommonLabelBase{scrlayer}{% + \par + For more information about manipulating the contents of page styles, see + also \autoref{sec:scrlayer-scrpage.pagestyle.content} starting at + \autopageref{sec:scrlayer-scrpage.pagestyle.content}.% +}{}% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide.tex" +%%% TeX-PDF-mode: t +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-parmarkup.tex b/macros/latex/contrib/koma-script/source-doc/english/common-parmarkup.tex new file mode 100644 index 0000000000..647d09dde3 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-parmarkup.tex @@ -0,0 +1,270 @@ +% ====================================================================== +% common-parmarkup.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-parmarkup.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-parmarkup.tex} + [$Date: 2018-03-30 09:37:06 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (common paragraph: Paragraph Markup)] +\translator{Gernot Hassenpflug\and Markus Kohm\and Krickette Murabayashi\and + Karl Hagen} + +% Date of the translated German file: 2018-01-31 + +\section{Marking Paragraphs} +\seclabel{parmarkup}% +\BeginIndexGroup +\BeginIndex{}{paragraph>marking}% + +\IfThisCommonLabelBase{maincls}{% + The\textnote{paragraph indent vs. paragraph spacing} standard classes + normally set paragraphs\Index[indexmain]{paragraph} indented and without any + vertical, inter-paragraph space. This is the best solution when using a + regular page layout like the ones produced with the \Package{typearea} + package. If neither indentation nor vertical space is used, only the length + of the last line would give the reader a guide to the paragraph break. In + extreme cases, it is very difficult to tell whether a line is full or not. + Furthermore, typographers find that a signal given at the paragraph's end is + easily forgotten by the start of the next line. A signal at the paragraph's + beginning is more easily remembered. Inter-paragraph spacing has the + drawback of disappearing in some contexts. For instance, after a displayed + formula it would be impossible to detect if the previous paragraph continues + or a new one begins. Also, at the top of a new page, it might be necessary + to look at the previous page to determine if a new paragraph has been + started or not. All these problems disappear when using indentation. A + combination of indentation and vertical inter-paragraph spacing is redundant + and therefore should be avoided. Indentation\Index[indexmain]{indentation} + alone is sufficient. The only drawback of indentation is that it shortens + the line length. The use of inter-paragraph spacing\Index{paragraph>spacing} + is therefore justified when using short lines, such as in a newspaper.% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + The preliminaries of \autoref{sec:maincls.parmarkup}, + \autopageref{sec:maincls.parmarkup} explain why paragraph indentation is + preferred to paragraph spacing. But the elements to which this explanation + refers, for example figures, tables, lists, equations, and even new pages, + are rare in normal letters. Letters are usually not so long that an + unrecognised paragraph will have serious consequences to the readability + of the document. The arguments for indentation, therefore, are less + consequential for standard letters. This may be one reason that you often + find paragraphs in letters marked with vertical spacing. But two + advantages of paragraph indentation remain. One is that such a letter + stands out from the crowd. Another is that it maintains the \emph{brand + identity}, that is the uniform appearance, of all documents from a single + source.% + }{\InternalCommonFileUsageError}% +} % +\IfThisCommonFirstRun{}{% + Apart from these suggestions, the information described in + \autoref{sec:\ThisCommonFirstLabelBase.parmarkup} for the other + \KOMAScript{} classes is valid for letters too. So if you have already read + and understood \autoref{sec:\ThisCommonFirstLabelBase.parmarkup} you can + skip ahead to \autoref{sec:\ThisCommonLabelBase.parmarkup.next} on + \autopageref{sec:\ThisCommonLabelBase.parmarkup.next}.% + \IfThisCommonLabelBase{scrlttr2}{ % + This also applies if you work not with the + \Class{scrlttr2}\OnlyAt{scrlttr2} class but with the \Package{scrletter} + package. The package does not provide its own settings for paragraph + formatting but relies entirely on the class being used.% + }{}% +} + + +\begin{Declaration} + \OptionVName{parskip}{method} +\end{Declaration} +\IfThisCommonLabelBase{maincls}{% + Once in a while you may require a document layout with vertical + inter-paragraph spacing instead of indentation. The \KOMAScript{} classes + provide several ways to accomplish this with the + \Option{parskip}\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} option.% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + In letters, you often encounter paragraphs marked not by indentation of + the first line but by a vertical space between them. The \KOMAScript{} + class \Class{scrlttr2}\OnlyAt{scrlttr2} provides ways to accomplish this + with the \Option{parskip} option.% + }{\InternalCommonFileUsageError}% +} % +The \PName{method} consists of two elements. The first element is either +\PValue{full}\important{\OptionValue{parskip}{full}\\ + \OptionValue{parskip}{half}} or \PValue{half}, where \PValue{full} stands +for a paragraph spacing of one line and \PValue{half} stands for a paragraph +spacing of half a line. The second element consists of one of the characters +``\PValue{*}'', ``\PValue{+}'', or ``\PValue{-}'' and can be omitted. Without +the second element\important{\OptionVName{parskip}{distance}}, the final line +of a paragraph will end with a white space of at least 1\Unit{em}. With the +plus character as the second element% +\important{\OptionValue{parskip}{\PName{distance}+}}, the white space will be +at least one third\,---\,and with the +asterisk\important{\OptionValue{parskip}{\PName{distance}*}} one +fourth\,---\,the width of a normal line. With the minus variant% +\important{\OptionValue{parskip}{\PName{Abstand}-}}, no provision is made for +white space in the last line of a paragraph. + +You can change the setting at any time. If you change it inside the document, +the \Macro{selectfont}\IndexCmd{selectfont}% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.08}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.08}{\Class{scrlttr2}}% + }{% + \InternalComonFileUsageError% + }% +} % +command will be called implicitly. Changes to paragraph spacing within a +paragraph will not be visible until the end of the paragraph. + +In addition to the resulting eight combinations for \PName{method}, you can +use the values for simple switches shown in \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch}. Activating the option% +\important{\Option{parskip}\\\OptionValue{parskip}{true}} corresponds to using +\PValue{full} with no second element and therefore results in inter-paragraph +spacing of one line with at least 1\Unit{em} white space at the end of the +last line of each paragraph. Deactivating% +\important{\OptionValue{parskip}{false}} the option re-activates the default +indentation of 1\Unit{em} at the first line of the paragraph instead of +paragraph spacing. A summary of all possible values for \PName{method} are +shown in \autoref{tab:\ThisCommonFirstLabelBase.parskip}% +\IfThisCommonFirstRun{.% + \begin{desclist} + % Umbruchkorrektur + \vskip-\ht\strutbox + \renewcommand{\abovecaptionskipcorrection}{-\normalbaselineskip}% +% \begin{table} + \desccaption +% \caption + [{Available values of option \Option{parskip}}]{% + Available values of option \Option{parskip} to select + how paragraph are + distinguished\label{tab:\ThisCommonFirstLabelBase.parskip}% + }% + {% + Available values of option \Option{parskip} (\emph{continuation})% + }% + % \begin{desctabular} + \entry{\PValue{false}, \PValue{off}, \PValue{no}% + \IndexOption{parskip~=\textKValue{false}}}{% + paragraph indentation instead of vertical space; the last line of a + paragraph can be arbitrarily filled}% + \entry{\PValue{full}, \PValue{true}, \PValue{on}, \PValue{yes}% + \IndexOption{parskip~=\textKValue{full}}% + }{% + one line vertical space between paragraphs; there must be at least + 1\Unit{em} free space in the last line of a paragraph}% + \pventry{full-}{% + one line vertical space between paragraphs; the last line of a paragraph + can be arbitrarily filled\IndexOption{parskip~=\textKValue{full-}}}% + \pventry{full+}{% + one line vertical space between paragraphs; there must be at least a third + of a line of free space at the end of a + paragraph\IndexOption{parskip~=\textKValue{full+}}}% + \pventry{full*}{% + one line vertical space between paragraphs; there must be at least a + quarter of a line of free space at the end of a + paragraph\IndexOption{parskip~=\textKValue{full*}}}% + \pventry{half}{% + half a line vertical space between paragraphs; there must be at least + 1\Unit{em} free space in the last line of a + paragraph\IndexOption{parskip~=\textKValue{half}}}% + \pventry{half-}{% + one line vertical space between + paragraphs\IndexOption{parskip~=\textKValue{half-}}}% + \pventry{half+}{% + half a line vertical space between paragraphs; there must be at least a + third of a line of free space at the end of a + paragraph\IndexOption{parskip~=\textKValue{half+}}}% + \pventry{half*}{% + half a line vertical space between paragraphs; there must be at least a + quarter of a line of free space at the end of a + paragraph\IndexOption{parskip~=\textKValue{half*}}}% + \pventry{never}{% + there% + \IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.08}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + }{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.08}{\Class{scrlttr2}}% + }{}% + } % + will be no inter-paragraph spacing even if additional vertical spacing is + needed for the vertical adjustment with + \Macro{flushbottom}\IndexCmd{flushbottom}% + \IndexOption{parskip~=\textKValue{never}}}% +% \end{desctabular} +% \end{table}% + \end{desclist}% +}{ at \autopageref{tab:\ThisCommonFirstLabelBase.parskip}.} + +All\textnote{Attention!} eight \PValue{full} and \PValue{half} option values +also change the spacing before, after, and inside list environments. This +prevents these environments or the paragraphs inside them from having +a larger separation than that between the paragraphs of normal text.% +\IfThisCommonLabelBase{maincls}{ % + Additionally, these options ensure that the table of contents and the lists + of figures and tables are set without any additional spacing.% +}{ % + Several elements of the letterhead are always set without inter-paragraph + spacing.% +}% + +The default\textnote{default} behaviour of \KOMAScript{} is +\OptionValue{parskip}{false}. In this case, there is no spacing between +paragraphs, only an indentation of the first line by 1\Unit{em}.% +% +\EndIndexGroup +% +\EndIndexGroup + + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-textmarkup.tex b/macros/latex/contrib/koma-script/source-doc/english/common-textmarkup.tex new file mode 100644 index 0000000000..49cbe456ed --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-textmarkup.tex @@ -0,0 +1,805 @@ +% ====================================================================== +% common-textmarkup.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-textmarkup.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-textmarkup.tex} + [$Date: 2019-01-15 08:29:44 +0100 (Tue, 15 Jan 2019) $ + KOMA-Script guide (common paragraphs)] +\translator{Gernot Hassenpflug\and Markus Kohm\and Krickette Murabayashi\and + Karl Hagen} + +% Date of the translated German file: 2018-07-20 + +\section{Text Markup} +\seclabel{textmarkup}% +\BeginIndexGroup% +\BeginIndex{}{text>markup}% +\BeginIndex{}{font}% + +\IfThisCommonFirstRun{}{% + The information in in \autoref{sec:\ThisCommonFirstLabelBase.textmarkup} + largely applies to this chapter. So if you have already read and understood + \autoref{sec:\ThisCommonFirstLabelBase.textmarkup}, you can + \IfThisCommonLabelBaseOneOf{scrextend,scrjura,scrlayer-notecolumn}{}{% + limit yourself to examining + \autoref{tab:\ThisCommonLabelBase.fontelements}, + \autopageref{tab:\ThisCommonLabelBase.fontelements} and then }% + skip ahead to \autoref{sec:\ThisCommonLabelBase.textmarkup.next}, + \autopageref{sec:\ThisCommonLabelBase.textmarkup.next}.% + \IfThisCommonLabelBase{scrextend}{\ In this case, however, + note\textnote{limitation} that \Package{scrextend} supports only the + elements for the document title, the dictum, the footnotes, and the + \DescRef{maincls.env.labeling} environment. from + \autoref{tab:maincls.fontelements}, + \autopageref{tab:maincls.fontelements}. Although the + \DescRef{maincls.fontelement.disposition} element exists, + \Package{scrextend} uses it only for the document title.% + }{}% +} + +% Umbruchkorrektur +\IfThisCommonLabelBase{scrlayer-scrpage}{}{% + {\LaTeX} offers different possibilities for logical and direct + markup\Index{logical markup}\Index{markup} of text. % + \IfThisCommonLabelBaseOneOf{scrlttr2}{}{% + In addition to the choice of the font, this includes commands for choosing + the font size and orientation. % + } For more information about the standard font facilities, see + \cite{lshort}, \cite{latex:usrguide}, and \cite{latex:fntguide}.} + +\IfThisCommonLabelBaseOneOf{scrlayer-scrpage,scrjura,scrlayer-notecolumn}{% + \iffalse}{% + \csname iftrue\endcsname}% + \begin{Declaration} + \Macro{textsuperscript}\Parameter{text}% + \Macro{textsubscript}\Parameter{text} + \end{Declaration} + The \LaTeX{} kernel defines the command + \Macro{textsuperscript}\IndexCmd{textsuperscript} to put text in + superscript\Index{text>superscript}\Index{superscript}. Unfortunately, + \LaTeX{}\textnote{\Latex~2015/01/01} itself did not offer a command to + produce text in subscript\Index{text>subscript}\Index{subscript} until + release 2015/01/01. \KOMAScript{} defines \Macro{textsubscript} for this + purpose. % + \ifthiscommonfirst + \begin{Example} + \phantomsection + \xmpllabel{cmd.textsubscript}% + You are writing a text on human metabolism. From time to time you + have to give some simple chemical formulas in which the numbers are + in subscript. To allow for logical markup, you first define in the + document preamble or in a separate package: +\begin{lstcode} + \newcommand*{\molec}[2]{#1\textsubscript{#2}} +\end{lstcode} + \newcommand*{\molec}[2]{#1\textsubscript{#2}} + Using this you then write: +\begin{lstcode} + The cell produces its energy partly from the reaction of \molec C6\molec + H{12}\molec O6 and \molec O2 to produce \molec H2\Molec O{} and + \molec C{}\molec O2. However, arsenic (\molec{As}{}) has quite a + detrimental effect on the metabolism. +\end{lstcode} + The output looks as follows: + \begin{ShowOutput} + The cell produces its energy partly from the reaction of \molec C6\molec + H{12}\molec O6 and \molec O2 to produce \molec H2\molec O{} and + \molec C{}\molec O2. However, arsenic (\molec{As}{}) has quite a + detrimental effect on the metabolism. + \end{ShowOutput} + + Some time later you decide that the chemical formulas should be + typeset in sans serif. Now you can see the advantages of using + logical markup. You only have the redefine the \Macro{molec} + command: +\begin{lstcode} + \newcommand*{\molec}[2]{\textsf{#1\textsubscript{#2}}} +\end{lstcode} + \renewcommand*{\molec}[2]{\textsf{#1\textsubscript{#2}}} + Now the output in the whole document changes to: + \begin{ShowOutput} + The cell produces its energy partly from the reaction of \molec + C6\molec H{12}\molec O6 and \molec O2 to produce \molec H2\molec + O{} and \molec C{}\molec O2. However, arsenic (\molec{As}{}) has + quite a detrimental effect on the metabolism. + \end{ShowOutput} + \end{Example} + \iftrue + \begin{Explain} + The example above uses the notation ``\verb|\molec C6|''. + This makes use of the fact that arguments consisting of only one + character do not have to be enclosed in parentheses. That is why + ``\verb|\molec C6|'' is similar to ``\verb|\molec{C}{6}|''. You + may already be familiar with this notation from indices or powers in + mathematical environments, such as ``\verb|$x^2$|'' instead of + ``\verb|$x^{2}$|'' + for ``$x^2$''. + \end{Explain} + \else % maybe some time I've made an English book + Advanced users can find information about the reason the example above + does work unless you put all arguments of \Macro{molec} into braces in + \autoref{sec:experts.knowhow}, + \DescPageRef{experts.macroargs}.% + \fi% + \else% + You can find an example that uses it in + \autoref{sec:\ThisCommonFirstLabelBase.textmarkup}, + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.textsubscript}. + \fi% + \EndIndexGroup% +\fi + + +\begin{Declaration} + \Macro{setkomafont}\Parameter{element}\Parameter{commands}% + \Macro{addtokomafont}\Parameter{element}\Parameter{commands}% + \Macro{usekomafont}\Parameter{element} +\end{Declaration}% +With% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v2.8p}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{} the help of the \Macro{setkomafont} and \Macro{addtokomafont} +commands, you can attach particular font styling \PName{commands} that change +the appearance of a given \PName{element}. Theoretically, all statements, +including literal text, can be used as \PName{commands}. You +should\textnote{Attention!}, however, limit yourself to those statements that +really change font attributes only. These are usually commands like +\Macro{rmfamily}, \Macro{sffamily}, \Macro{ttfamily}, \Macro{upshape}, +\Macro{itshape}, \Macro{slshape}, \Macro{scshape}, \Macro{mdseries}, +\Macro{bfseries}, \Macro{normalfont}, as well as the font size commands +\Macro{Huge}, \Macro{huge}, \Macro{LARGE}, \Macro{Large}, \Macro{large}, +\Macro{normalsize}, \Macro{small}, \Macro{footnotesize}, \Macro{scriptsize}, +and \Macro{tiny}. You can find these commands explained in \cite{lshort}, +\cite{latex:usrguide}, or \cite{latex:fntguide}. Colour switching commands +like \Macro{normalcolor} (see \cite{package:graphics} and +\cite{package:xcolor}) are also acceptable.% +\iffalse % Umbruchkorrekturtext + \ The behaviour when using other commands, especially those that lead to + redefinitions or generate output, is undefined. Strange behaviour is possible + and does not represent a bug. +\else + \ The use of other commands, in particular those that redefine things or + or lead to output, is not supported. Strange behaviour is possible in these + cases and does not represent a bug. +\fi + +The command \Macro{setkomafont} provides an element with a completely new +definition of its font styling. In contrast, the \Macro{addtokomafont} command +merely extends an existing definition. You should not use either command +inside the document body but only in the preamble. For examples of their use, +refer to the sections for the respective element.% +\IfThisCommonLabelBase{scrlayer-notecolumn}{}{% + \ The name and meaning of each element + \IfThisCommonLabelBaseOneOf{scrlayer-scrpage,scrjura}{, as well as their + defaults,}{} are listed in \IfThisCommonLabelBase{scrextend}{% + \autoref{tab:maincls.fontelements}, \autopageref{tab:maincls.fontelements} + }{% + \autoref{tab:\ThisCommonLabelBase.fontelements} % + }.% + \IfThisCommonLabelBase{scrextend}{ % + However, in \Package{scrextend} only\textnote{limitation} the listed + elements for the document title, dictum, footnotes, and the + \DescRef{maincls.env.labeling} environment are supported. Although the + \DescRef{maincls.fontelement.disposition} element exists, + \Package{scrextend} uses it only for the document title.% + }{% + \IfThisCommonLabelBase{scrlayer-scrpage}{ % + The specified defaults apply only if the corresponding element has not + already been defined before loading \Package{scrlayer-scrpage}. For + example, the \KOMAScript classes define + \DescRef{maincls.fontelement.pageheadfoot}, and then + \Package{scrlayer-scrpage} uses the setting it finds.% + }{% + \IfThisCommonLabelBase{scrjura}{}{ % + The default values can be found in the corresponding sections.% + }% + }% + }% +}% + +\IfThisCommonLabelBaseOneOf{scrlttr2,scrextend}{% Umbruchvarianten + The \Macro{usekomafont} command can be used to switch the current font style + to the specified \PName{Element}.% +}{% + With the \Macro{usekomafont} command, the current font style can be changed + to the one defined for the specified \PName{element}.% +} + +\IfThisCommonLabelBase{maincls}{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{cmd.setkomafont}% + Suppose you want to use the same font specification for the element + \DescRef{\ThisCommonLabelBase.fontelement.captionlabel} + that is used with + \DescRef{\ThisCommonLabelBase.fontelement.descriptionlabel}. This can be + easily done with: +\begin{lstcode} + \setkomafont{captionlabel}{% + \usekomafont{descriptionlabel}% + } +\end{lstcode} + You can find other examples in the explanation of each element. + \end{Example} + + \begin{desclist} + \desccaption{% + Elements whose font style can be changed in \Class{scrbook}, + \Class{scrreprt} or \Class{scrartcl} with \Macro{setkomafont} and + \Macro{addtokomafont}% + \label{tab:maincls.fontelements}% + \label{tab:scrextend.fontelements}% + }{% + Elements whose font style can be changed (\emph{continued})% + }% + \feentry{author}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{scrextend}}% + author of the document in the title, i.\,e., the argument of + \DescRef{\ThisCommonLabelBase.cmd.author} when + \DescRef{\ThisCommonLabelBase.cmd.maketitle} is used (see + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.author})}% + \feentry{caption}{text of a figure or table caption (see + \autoref{sec:maincls.floats}, \DescPageRef{maincls.cmd.caption})}% + \feentry{captionlabel}{label of a figure or table caption; applied in + addition to the \DescRef{\ThisCommonLabelBase.fontelement.caption} + element (see \autoref{sec:maincls.floats}, + \DescPageRef{maincls.cmd.caption})}% + \feentry{chapter}{title of the sectioning command + \DescRef{\ThisCommonLabelBase.cmd.chapter} (see + \autoref{sec:maincls.structure}, \DescPageRef{maincls.cmd.chapter})}% + \feentry{chapterentry}{% + table of contents entry for the sectioning command + \DescRef{\ThisCommonLabelBase.cmd.chapter} (see + \autoref{sec:maincls.toc}, \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{chapterentrydots}{% + \ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}}% + optional points connecting table-of-content entries for the + \DescRef{\ThisCommonLabelBase.cmd.chapter} level, differing from the + \DescRef{\ThisCommonLabelBase.fontelement.chapterentrypagenumber} + element (see \autoref{sec:maincls.toc}, + \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{chapterentrypagenumber}{% + page number of the table of contents entry for the sectioning command + \DescRef{\ThisCommonLabelBase.cmd.chapter}, differing from the element + \DescRef{\ThisCommonLabelBase.fontelement.chapterentry} (see + \autoref{sec:maincls.toc}, \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{chapterprefix}{% + label, e.\,g., ``Chapter'', appearing before the chapter number in both + \OptionValueRef{maincls}{chapterprefix}{true} and + \OptionValueRef{maincls}{appendixprefix}{true} (see + \autoref{sec:maincls.structure}, + \DescPageRef{maincls.option.chapterprefix})}% + \feentry{date}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{scrextend}}% + date of the document in the main title, i.\,e., the argument of + \DescRef{\ThisCommonLabelBase.cmd.date} when + \DescRef{\ThisCommonLabelBase.cmd.maketitle} is used (see + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.date})}% + \feentry{dedication}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{scrextend}}% + dedication page after the main title, i.\,e., the argument of + \DescRef{\ThisCommonLabelBase.cmd.dedication} when + \DescRef{\ThisCommonLabelBase.cmd.maketitle} is used (see + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.dedication})}% + \feentry{descriptionlabel}{labels, i.\,e., the optional argument of + \DescRef{\ThisCommonLabelBase.cmd.item.description} in the + \DescRef{\ThisCommonLabelBase.env.description} environment (see + \autoref{sec:maincls.lists}, \DescPageRef{maincls.env.description})}% + \feentry{dictum}{dictum or epigraph (see \autoref{sec:maincls.dictum}, + \DescPageRef{maincls.cmd.dictum})}% + \feentry{dictumauthor}{author of a dictum or epigraph; applied in addition + to the element \DescRef{\ThisCommonLabelBase.fontelement.dictum} (see + \autoref{sec:maincls.dictum}, \DescPageRef{maincls.cmd.dictum})}% + \feentry{dictumtext}{alternative name for + \DescRef{\ThisCommonLabelBase.fontelement.dictum}}% + \feentry{disposition}{all sectioning command titles, i.\,e., the arguments + of \DescRef{\ThisCommonLabelBase.cmd.part} down to + \DescRef{\ThisCommonLabelBase.cmd.subparagraph} and + \DescRef{\ThisCommonLabelBase.cmd.minisec}, including the title of the + abstract; applied before the element of the respective unit (see + \autoref{sec:maincls.structure}, \autopageref{sec:maincls.structure})}% + \feentry{footnote}{footnote text and marker (see + \autoref{sec:maincls.footnotes}, \DescPageRef{maincls.cmd.footnote})}% + \feentry{footnotelabel}{marker for a footnote; applied in addition to the + element \DescRef{\ThisCommonLabelBase.fontelement.footnote} (see + \autoref{sec:maincls.footnotes}, \DescPageRef{maincls.cmd.footnote})}% + \feentry{footnotereference}{footnote reference in the text (see + \autoref{sec:maincls.footnotes}, \DescPageRef{maincls.cmd.footnote})}% + \feentry{footnoterule}{% + horizontal rule\ChangedAt{v3.07}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} above the footnotes at the end + of the text area (see \autoref{sec:maincls.footnotes}, + \DescPageRef{maincls.cmd.setfootnoterule})}% + \feentry{labelinglabel}{labels, i.\,e., the optional argument of + \DescRef{\ThisCommonLabelBase.cmd.item.labeling} in the + \DescRef{\ThisCommonLabelBase.env.labeling} environment (see + \autoref{sec:maincls.lists}, \DescPageRef{maincls.env.labeling})}% + \feentry{labelingseparator}{separator, i.\,e., the optional argument of + the \DescRef{\ThisCommonLabelBase.env.labeling} environment; applied in + addition to the element + \DescRef{\ThisCommonLabelBase.fontelement.labelinglabel} (see + \autoref{sec:maincls.lists}, \DescPageRef{maincls.env.labeling})}% + \feentry{minisec}{title of \DescRef{\ThisCommonLabelBase.cmd.minisec} (see + \autoref{sec:maincls.structure} ab \DescPageRef{maincls.cmd.minisec})}% + \feentry{pagefoot}{only used if package \Package{scrlayer-scrpage} has + been loaded (see \autoref{cha:scrlayer-scrpage}, + \DescPageRef{scrlayer-scrpage.fontelement.pagefoot})}% + \feentry{pagehead}{alternative name for + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}}% + \feentry{pageheadfoot}{the header and footer of a page (see + \autoref{sec:maincls.pagestyle} from + \autopageref{sec:maincls.pagestyle})}% + \feentry{pagenumber}{page number in the header or footer (see + \autoref{sec:maincls.pagestyle})}% + \feentry{pagination}{alternative name for + \DescRef{\ThisCommonLabelBase.fontelement.pagenumber}}% + \feentry{paragraph}{title of the sectioning command + \DescRef{\ThisCommonLabelBase.cmd.paragraph} (see + \autoref{sec:maincls.structure}, \DescPageRef{maincls.cmd.paragraph})}% + \feentry{part}{title of the \DescRef{\ThisCommonLabelBase.cmd.part} + sectioning command, without the line containing the part number (see + \autoref{sec:maincls.structure}, \DescPageRef{maincls.cmd.part})}% + \feentry{partentry}{% + table of contents entry for the sectioning command + \DescRef{\ThisCommonLabelBase.cmd.part} (see \autoref{sec:maincls.toc}, + \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{partentrypagenumber}{% + page number of the table of contents entry for the sectioning command + \DescRef{\ThisCommonLabelBase.cmd.part}; applied in addition to the + element \DescRef{\ThisCommonLabelBase.fontelement.partentry} (see + \autoref{sec:maincls.toc}, \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{partnumber}{line containing the part number in a title of the + sectioning command \DescRef{\ThisCommonLabelBase.cmd.part} (see + \autoref{sec:maincls.structure}, \DescPageRef{maincls.cmd.part})}% + \feentry{publishers}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{scrextend}}% + publishers of the document in the main title, i.\,e., the argument of + \DescRef{\ThisCommonLabelBase.cmd.publishers} when + \DescRef{\ThisCommonLabelBase.cmd.maketitle} is used (see + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.publishers})}% + \feentry{section}{title of the sectioning command + \DescRef{\ThisCommonLabelBase.cmd.section} (see + \autoref{sec:maincls.structure}, \DescPageRef{maincls.cmd.section})}% + \feentry{sectionentry}{% + table of contents entry for sectioning command + \DescRef{\ThisCommonLabelBase.cmd.section} (only available in + \Class{scrartcl}, see \autoref{sec:maincls.toc}, + \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{sectionentrypagenumber}{% + page number of the table of contents entry for the sectioning command + \DescRef{\ThisCommonLabelBase.cmd.section}; applied in addition to + element \DescRef{\ThisCommonLabelBase.fontelement.sectionentry} (only + available in \Class{scrartcl, see \autoref{sec:maincls.toc}, + \DescPageRef{maincls.cmd.tableofcontents}})}% + \feentry{sectioning}{alternative name for + \DescRef{\ThisCommonLabelBase.fontelement.disposition}}% + \feentry{subject}{% + topic of the document, i.\,e., the argument of + \DescRef{\ThisCommonLabelBase.cmd.subject} on the main title page (see + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.subject})}% + \feentry{subparagraph}{title of the sectioning command + \DescRef{\ThisCommonLabelBase.cmd.subparagraph} (see + \autoref{sec:maincls.structure}, + \DescPageRef{maincls.cmd.subparagraph})}% + \feentry{subsection}{title of the sectioning command + \DescRef{\ThisCommonLabelBase.cmd.subsection} (see + \autoref{sec:maincls.structure}, \DescPageRef{maincls.cmd.subsection})}% + \feentry{subsubsection}{title of the sectioning command + \DescRef{\ThisCommonLabelBase.cmd.subsubsection} (see + \autoref{sec:maincls.structure}, + \DescPageRef{maincls.cmd.subsubsection})}% + \feentry{subtitle}{% + subtitle of the document, i.\,e., the argument of + \DescRef{\ThisCommonLabelBase.cmd.subtitle} on the main title page (see + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.title})}% + \feentry{title}{main title of the document, i.\,e., the argument of + \DescRef{\ThisCommonLabelBase.cmd.title} (for details about the title + size see the additional note in the text of + \autoref{sec:maincls.titlepage} from \DescPageRef{maincls.cmd.title})}% + \feentry{titlehead}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{scrextend}}% + heading above the main title of the document, i.\,e., the argument of + \DescRef{\ThisCommonLabelBase.cmd.titlehead} when + \DescRef{\ThisCommonLabelBase.cmd.maketitle} is used (see + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.titlehead})}% + \end{desclist} +\else + \IfThisCommonLabelBase{scrextend}{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + Suppose you want to print the document title in a red serif font. + You can do this using: +\begin{lstcode} + \setkomafont{title}{\color{red}} +\end{lstcode} + You will need the \Package{color} or the \Package{xcolor} package for + the \Macro{color}\PParameter{red} command. Using \Macro{normalfont} is + unnecessary in this case because it is already part of the definition of + the title itself. This\textnote{Attention!} example also needs the + \OptionValueRef{scrextend}{extendedfeature}{title} option (see + \autoref{sec:scrextend.optionalFeatures}, + \DescPageRef{scrextend.option.extendedfeature}). + \end{Example} + \else + \IfThisCommonLabelBase{scrlttr2}{% + You can find a general example that uses both \Macro{setkomafont} and + \Macro{usekomafont} in \autoref{sec:maincls.textmarkup} on + \PageRefxmpl{maincls.cmd.setkomafont}. + + \begin{desclist} + \desccaption{% + Elements whose font style can be changed in the \Class{scrlttr2} + class or the \Package{scrletter} package with the + \Macro{setkomafont} and \Macro{addtokomafont} + commands\label{tab:scrlttr2.fontelements}% + }{% + Elements whose font style can be changed (\emph{continued})% + }% + \feentry{addressee}{recipient's name and address in the address field + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.option.addrfield})}% + \feentry{backaddress}{% + return address for a window envelope + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.option.backaddress})}% + \feentry{descriptionlabel}{% + label, i.\,e. the optional argument of + \DescRef{\ThisCommonLabelBase.cmd.item.description}, in a + \DescRef{\ThisCommonLabelBase.env.description} environment + (\autoref{sec:scrlttr2.lists}, + \DescPageRef{scrlttr2.env.description})}% + \feentry{foldmark}{% + fold mark on the letterhead page; allows change of line colour + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.option.foldmarks})}% + \feentry{footnote}{% + footnote text and marker (\autoref{sec:scrlttr2.footnotes}, + \DescPageRef{scrlttr2.cmd.footnote})}% + \feentry{footnotelabel}{% + footnote marker; applied in addition to the + \DescRef{\ThisCommonLabelBase.fontelement.footnote} element + (\autoref{sec:scrlttr2.footnotes}, + \DescPageRef{scrlttr2.cmd.footnote})}% + \feentry{footnotereference}{% + footnote reference in the text (\autoref{sec:scrlttr2.footnotes}, + \DescPageRef{scrlttr2.cmd.footnote})}% + \feentry{footnoterule}{% + horizontal rule\ChangedAt{v3.07}{\Class{scrlttr2}} above the + footnotes at the end of the text area + (\autoref{sec:maincls.footnotes}, + \DescPageRef{maincls.cmd.setfootnoterule})}% + \feentry{fromaddress}{% + sender's address in the letterhead + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.fromaddress})}% + \feentry{fromname}{% + sender's name in the letterhead, not including + \PValue{fromaddress} (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.fromname})}% + \feentry{fromrule}{% + horizontal rule in the letterhead; intended for + colour changes (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.option.fromrule})}% + \feentry{labelinglabel}{% + labels, i.\,e. the optional argument of + \DescRef{\ThisCommonLabelBase.cmd.item.labeling} in the + \DescRef{\ThisCommonLabelBase.env.labeling} environment % + (see \autoref{sec:scrlttr2.lists}, + \DescPageRef{scrlttr2.env.labeling})}% + \feentry{labelingseparator}{% + separator, i.\,e. the optional argument of the + \DescRef{\ThisCommonLabelBase.env.labeling} environment; applied + in addition to the + \DescRef{\ThisCommonLabelBase.fontelement.labelinglabel} element + (see \autoref{sec:scrlttr2.lists}, + \DescPageRef{scrlttr2.env.labeling})}% + \feentry{pagefoot}{% + used after the + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot} element for + the footer defined with the + \DescRef{scrlttr2.variable.nextfoot}\IndexVariable{nextfoot} + variable, or for the footer of the \Package{scrlayer-scrpage} + package (\autoref{cha:scrlayer-scrpage}, + \DescPageRef{scrlayer-scrpage.fontelement.pagefoot})}% + \feentry{pagehead}{% + alternative name for + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}}% + \feentry{pageheadfoot}{% + the header and footer of a page for all page styles + that have been defined using \KOMAScript{} + (\autoref{sec:maincls.pagestyle}, + \DescPageRef{\ThisCommonLabelBase.fontelement.pageheadfoot})}% + \feentry{pagenumber}{% + page number in the header or footer % + (\autoref{sec:maincls.pagestyle}, + \DescPageRef{\ThisCommonLabelBase.fontelement.pagenumber})}% + \feentry{pagination}{% + alternative name for + \DescRef{\ThisCommonLabelBase.fontelement.pagenumber}}% + \feentry{placeanddate}{% + \ChangedAt{v3.12}{\Class{scrlttr2}}% + place and date, if a date line will be used instead of a normal + reference line (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.placeseparator})}% + \feentry{refname}{% + description or title of the fields in the reference line % + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.yourref})}% + \feentry{refvalue}{% + content of the fields in the reference line % + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.yourref})}% + \feentry{specialmail}{% + delivery type in the address field % + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.specialmail})}% + \feentry{lettersubject}{% + \ChangedAt{v3.17}{\Class{scrlttr2}\and \Package{scrletter}}% + subject in the opening of the letter % + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.subject})}% + \feentry{lettertitle}{% + \ChangedAt{v3.17}{\Class{scrlttr2}\and \Package{scrletter}}% + title in the opening of the letter % + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.title})}% + \feentry{toaddress}{% + variation of the + \DescRef{\ThisCommonLabelBase.fontelement.addressee} element to + format the recipient's address, not including the name, in the + address field (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.toaddress})}% + \feentry{toname}{% + variation of the + \DescRef{\ThisCommonLabelBase.fontelement.addressee} element to + format the recipient's name in the address field + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.toname})}% + \end{desclist} + }{% + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \begin{desclist} + \desccaption[{Elements of \Package{scrlayer-scrpage} whose font + styles can be changed with the \Macro{setkomafont} and + \Macro{addtokomafont} commands}]% + {Elements of \Package{scrlayer-scrpage} whose font styles can be + changed with the \Macro{setkomafont} and \Macro{addtokomafont} + commands, and their defaults, if they have not been defined + before loading \Package{scrlayer-scrpage}% + \label{tab:scrlayer-scrpage.fontelements}% + }% + {Elements whose font style can be changed (\emph{continued})}% + \feentry{footbotline}{% + horizontal line below the footer of a page style defined using + \Package{scrlayer-scrpage}. The font will be applied after + \Macro{normalfont}\IndexCmd{normalfont} and the fonts of elements + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}% + \IndexFontElement{pageheadfoot} and + \DescRef{\ThisCommonLabelBase.fontelement.pagefoot}% + \IndexFontElement{pagefoot}. It is recommended to use this element + for colour changes only.\par + \mbox{Default: \emph{empty}}% + }% + \feentry{footsepline}{% + horizontal line above the footer of a page style defined using + \Package{scrlayer-scrpage}. The font will be applied after + \Macro{normalfont}\IndexCmd{normalfont} and the fonts of elements + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}% + \IndexFontElement{pageheadfoot} and + \DescRef{\ThisCommonLabelBase.fontelement.pagefoot}% + \IndexFontElement{pagefoot}. It is recommended to use this element + for colour changes only.\par + \mbox{Default: \emph{empty}}% + }% + \feentry{headsepline}{% + horizontal line below the header of a page style defined using + \Package{scrlayer-scrpage}. The font will be applied after + \Macro{normalfont}\IndexCmd{normalfont} and the fonts of elements + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}% + \IndexFontElement{pageheadfoot} and + \DescRef{scrlayer-scrpage.fontelement.pagehead}% + \IndexFontElement{pagehead}. It is recommended to use this element + for colour changes only.\par + Default: \emph{empty}% + }% + \feentry{headtopline}{% + horizontal line above the header of a page style defined using + \Package{scrlayer-scrpage}. The font will be applied after + \Macro{normalfont}\IndexCmd{normalfont} and the fonts of elements + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}% + \IndexFontElement{pageheadfoot} and + \DescRef{scrlayer-scrpage.fontelement.pagehead}% + \IndexFontElement{pagehead}. It is recommended to use this element + for colour changes only.\par + \mbox{Default: \emph{empty}}% + }% + \feentry{pagefoot}{% + contents of the page footer of a page style defined using + \Package{scrlayer-scrpage}. The font will be applied after + \Macro{normalfont}\IndexCmd{normalfont} and the font of element + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}% + \IndexFontElement{pageheadfoot}.\par + \mbox{Default: \emph{empty}}% + }% + \feentry{pagehead}{% + contents of the page header of a page style defined using + \Package{scrlayer-scrpage}. The font will be applied after + \Macro{normalfont}\IndexCmd{normalfont} and the font of element + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}% + \IndexFontElement{pageheadfoot}.\par + \mbox{Default: \emph{empty}}% + }% + \feentry{pageheadfoot}{% + contents of the page header or footer of a page style defined + using \Package{scrlayer-scrpage}. The font will be applied after + \Macro{normalfont}\IndexCmd{normalfont}.\par + \mbox{Default: \Macro{normalcolor}\Macro{slshape}}% + }% + \feentry{pagenumber}{% + pagination set with + \DescRef{\ThisCommonLabelBase.cmd.pagemark}. If you redefine + \DescRef{\ThisCommonLabelBase.cmd.pagemark}, you have to be sure + that your redefinition also uses + \Macro{usekomafont}\PParameter{pagenumber}!\par + \mbox{Default: \Macro{normalfont}}% + }% + \end{desclist} + }{% + \IfThisCommonLabelBase{scrjura}{% + \begin{table} + \caption{Elements whose \Package{scrjura} font styles can be + changed with \Macro{setkomafont} and \Macro{addtokomafont}, + including their default settings}% + \label{tab:scrjura.fontelements}% + \begin{desctabular} + \feentry{Clause}{% + alias for \FontElement{\PName{environment name}.Clause} + within a contract environment, for example + \FontElement{contract.Clause} within + \DescRef{\ThisCommonLabelBase.env.contract}; if no + corresponding element is defined, + \FontElement{contract.Clause} is used% + }% + \feentry{contract.Clause}{% + heading of a paragraph within + \DescRef{\ThisCommonLabelBase.env.contract} (see + \autoref{sec:\ThisCommonLabelBase.contract}, + \DescPageRef{\ThisCommonLabelBase.fontelement.contract.Clause}); + \par + \mbox{Default: \Macro{sffamily}\Macro{bfseries}\Macro{large}}% + }% + \entry{\DescRef{\ThisCommonLabelBase.fontelement./Name/.Clause}}{% + \IndexFontElement[indexmain]{\PName{name}.Clause}% + heading of a paragraph within a \PName{name} environment + defined with + \DescRef{\ThisCommonLabelBase.cmd.DeclareNewJuraEnvironment} + as long as the setting was made with \Option{ClauseFont} or + the item was subsequently defined (see + \autoref{sec:\ThisCommonLabelBase.newenv}, + \DescPageRef{\ThisCommonLabelBase.fontelement./Name/.Clause}); + \par + \mbox{Default: \emph{none}}% + }% + \feentry{parnumber}{% + paragraph numbers within a contract environment (see + \autoref{sec:\ThisCommonLabelBase.par}, + \DescPageRef{\ThisCommonLabelBase.fontelement.parnumber});\par + \mbox{Default: \emph{empty}}% + }% + \feentry{sentencenumber}{% + \ChangedAt{v3.26}{\Package{scrjura}}% + sentence number of \DescRef{\ThisCommonLabelBase.cmd.Sentence} + (see \autoref{sec:\ThisCommonLabelBase.sentence}, + \DescPageRef{% + \ThisCommonLabelBase.fontelement.sentencenumber});\par + \mbox{Default: \emph{empty}}% + }% + \end{desctabular} + \end{table} + }{% + \IfThisCommonLabelBase{scrlayer-notecolumn}{}{% + \InternalCommonFileUsageError% + }% + }% + }% + }% + \fi% +\fi +\EndIndexGroup + + +\begin{Declaration} + \Macro{usefontofkomafont}\Parameter{element}% + \Macro{useencodingofkomafont}\Parameter{element}% + \Macro{usesizeofkomafont}\Parameter{element}% + \Macro{usefamilyofkomafont}\Parameter{element}% + \Macro{useseriesofkomafont}\Parameter{element}% + \Macro{useshapeofkomafont}\Parameter{element} +\end{Declaration} +Sometimes\ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{scrextend}}, although this is not recommended, +the font setting of an element is used for settings that are not actually +related to the font. If you want to apply only the font setting of an element +but not those other settings, you can use \Macro{usefontofkomafont} instead of +\DescRef{\ThisCommonLabelBase.cmd.usekomafont}. This will activate the font +size and baseline skip, the font encoding, the font family, the font series, +and the font shape of an element, but no further settings as long as those +further settings are local. + +You can also switch to a single one of those attributes using one of the other +commands. Note that \Macro{usesizeofkomafont} uses both the font +size and the baseline skip.% +% +\IfThisCommonLabelBase{scrextend}{% Umbruchvariante! +}{% + \IfThisCommonLabelBase{scrjura}{% + \par% + However, the misuse of the font settings is strongly discouraged (see + \autoref{sec:maincls-experts.experts}, + \DescPageRef{maincls-experts.cmd.addtokomafontrelaxlist})!% + }{% + \par% + However, you should not take these commands as legitimizing the insertion + of arbitrary commands in an element's font setting. To do so can lead + quickly to errors (see \autoref{sec:maincls-experts.experts}, + \DescPageRef{maincls-experts.cmd.addtokomafontrelaxlist}).% + }% +}% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-titles.tex b/macros/latex/contrib/koma-script/source-doc/english/common-titles.tex new file mode 100644 index 0000000000..e061743806 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-titles.tex @@ -0,0 +1,679 @@ +% ====================================================================== +% common-titles.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-titles.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-titles.tex} + [$Date: 2018-03-30 09:37:06 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (common paragraphs)] + +\translator{Gernot Hassenpflug\and Markus Kohm\and Krickette Murabayashi\and + Karl Hagen} + +% Date of the translated German file: 2018-01-30 + +\section{Document Titles} +\seclabel{titlepage}% +\BeginIndexGroup +\BeginIndex{}{title}% + +\IfThisCommonFirstRun{}{% + This information in \autoref{sec:\ThisCommonFirstLabelBase.titlepage} + largely applies to this chapter. So if you have already read and understood + \autoref{sec:\ThisCommonFirstLabelBase.titlepage}, you can skip to + \autoref{sec:\ThisCommonLabelBase.titlepage.next}, + \autopageref{sec:\ThisCommonLabelBase.titlepage.next}.% +}% +\IfThisCommonLabelBase{scrextend}{\iftrue}{\csname iffalse\endcsname}% + \ However,\textnote{Attention!} the capabilities of \Package{scrextend} + for handling the document title are part of the optional, advanced + features. Therfore they are only available, if + \OptionValueRef{\ThisCommonLabelBase}{extendedfeature}{title} is + selected while loading the package (see + \autoref{sec:\ThisCommonLabelBase.optionalFeatures}, + \DescRef{\ThisCommonLabelBase.option.extendedfeature}). + + Furthermore, \Package{scrextend} cannot be used with a \KOMAScript{} + class. Because of this, you should replace +\begin{lstcode} + \documentclass{scrbook} +\end{lstcode} + with +\begin{lstcode} + \documentclass{book} + \usepackage[extendedfeature=title]{scrextend} +\end{lstcode} + for all examples from \autoref{sec:maincls.titlepage}, if you want to + try them with \Package{scrextend}. +\fi + +In general, we distinguish two kinds of document titles. First, there are +title pages. These include title of the document, together with additional +information such as the author, on a separate page. In addition to the main +title page, there may be several other title pages, such as the half-title or +bastard title, publisher data, dedication, and so on. Second, there is the +in-page title. This kind of title appears at the top of a new page, usually +the first, and is specially emphasized. It too may be accompanied by +additional information, but it will be followed by more material on the same +page, for example by an abstract, the table of contents, or even a section. + + +\begin{Declaration} + \OptionVName{titlepage}{simple switch}% + \OptionValue{titlepage}{firstiscover} + \Macro{coverpagetopmargin} + \Macro{coverpageleftmargin} + \Macro{coverpagerightmargin} + \Macro{coverpagebottommargin} +\end{Declaration}% +This option\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{} determines whether to use document title pages\Index{title>pages} or +in-page titles\Index{title>in-page} when using +\DescRef{\ThisCommonLabelBase.cmd.maketitle} (see +\DescPageRef{\ThisCommonLabelBase.cmd.maketitle}). Any value from +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} can be used +for \PName{simple switch}. + +With the \OptionValue{titlepage}{true}% +\important{\OptionValue{titlepage}{true}} +\IfThisCommonLabelBase{scrextend}{}{or \Option{titlepage}} option, +invoking \DescRef{\ThisCommonLabelBase.cmd.maketitle} creates titles on +separate pages. These pages are set inside a +\DescRef{\ThisCommonLabelBase.env.titlepage} environment, and they +normally have neither header nor footer. Compared to standard {\LaTeX}, +{\KOMAScript} significantly expands the handling of the titles. These +additional elements can be found on the following pages. + +In contrast, with the +\OptionValue{titlepage}{false}\important{\OptionValue{titlepage}{false}} +option, invoking \DescRef{\ThisCommonLabelBase.cmd.maketitle} creates an +\emph{in-page} title. This means that the title is specially emphasized, but +it may be followed by more material on the same page, for instance an abstract +or a section.% + +The third choice,% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.12}{\Package{scrextend}}% + }{\InternalCommonFileUseError}% +} \OptionValue{titlepage}{firstiscover}% +\important{\OptionValue{titlepage}{firstiscover}} not only activates title +pages but also prints the first title page of +\DescRef{\ThisCommonLabelBase.cmd.maketitle}\IndexCmd{maketitle}, i.\,e. +either the half-title or the main title, as a cover\Index{cover} page. Any +other setting of the \Option{titlepage} option will cancel this setting. The +margins\important{\Macro{coverpage\dots margin}} of the cover page are given +by \Macro{coverpagetopmargin}, \Macro{coverpageleftmargin}, +\Macro{coverpagerightmargin}, and \Macro{coverpagebottommargin}. The defaults +of these depend on the lengths of \Length{topmargin}\IndexLength{topmargin} +and \Length{evensidemargin}\IndexLength{evensidemargin} and can be changed +with \Macro{renewcommand}. + +\IfThisCommonLabelBase{maincls}{% + The default of the \Class{scrbook} and \Class{scrreprt} classes is to use + title pages. The \Class{scrartcl} class, on the other hand, uses in-page + titles by default.% +}{% + \IfThisCommonLabelBase{scrextend}{% + The default depends on the class used and \Package{scrextend} recognizes + it in a way that compatible with the standard class. If a class does not + set up a comparable default, it will be an in-page title.% + }{\InternalCommonFileUsageError}% +}% +% +\EndIndexGroup + + +\begin{Declaration} + \begin{Environment}{titlepage}\end{Environment}% +\end{Declaration}% +The standard classes and {\KOMAScript} set all title pages in a special +environment: the \Environment{titlepage} environment. This environment always +starts a new page\,---\,in two-sided printing a new right-hand page\,---\,and +in single-column mode. For this page, the style is changed to +\DescRef{maincls.cmd.thispagestyle}% +\PParameter{\DescRef{maincls.pagestyle.empty}}, so that neither page number +nor running head is output. At the end of the environment, the page is +automatically shipped out. Should you not be able to use the automatic layout +of the title pages provided by \DescRef{\ThisCommonLabelBase.cmd.maketitle}, +described next, you should design a new one with the help of this environment. + +\IfThisCommonFirstRun{\iftrue}{% + A simple example for a title page with \Environment{titlepage} is shown in + \autoref{sec:\ThisCommonFirstLabelBase.titlepage} on + \PageRefxmpl{\ThisCommonFirstLabelBase.env.titlepage}% + \csname iffalse\endcsname% +}% + \begin{Example} + \phantomsection\xmpllabel{env.titlepage} + Suppose you want a title page on which only the word ``Me'' stands at + the top on the left, as large as possible and in bold\,---\,no + author, no date, nothing else. The following document creates just + that: +\begin{lstcode} + \documentclass{scrbook} + \begin{document} + \begin{titlepage} + \textbf{\Huge Me} + \end{titlepage} + \end{document} +\end{lstcode} + It's simple, isn't it? + \end{Example} +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{maketitle}\OParameter{page number} +\end{Declaration}% +While\textnote{\KOMAScript{} vs. standard classes} the standard classes +produce at most one title page that can have three items (title, author, and +date), with \KOMAScript{} \Macro{maketitle} can produce up to six pages. In +contrast to the standard classes, \Macro{maketitle} in {\KOMAScript} accepts +an optional numeric argument. If it is used, this number is the page number of +the first title page. This page number is not output, but it affects the +subsequent numbering. You should definitely choose an odd number, because +otherwise the whole count gets mixed up. In my opinion, there are only two +useful applications for the optional argument. On the one hand, you could give +the the logical page number -1 to the half-title\Index[indexmain]{half-title} +in order to give the full title page the number 1. On the other hand, you +could use it to start at a higher page number, for example, 3, 5, or 7, to +accommodate other title pages added by the publishing house. The optional +argument is ignored for \emph{in-page} titles. You can change the page style +of such a title page by redefining the +\DescRef{\ThisCommonLabelBase.cmd.titlepagestyle} macro (see +\autoref{sec:maincls.pagestyle}, \DescPageRef{maincls.cmd.titlepagestyle}). + +The following commands do not lead immediately to the ship-out of the titles. +The typesetting and ship-out of the title pages are always done by +\Macro{maketitle}. Note also that \Macro{maketitle} should not be used inside +a \DescRef{\ThisCommonLabelBase.env.titlepage} environment. +As\textnote{Attention!} shown in the examples, you should use either +\Macro{maketitle} or \DescRef{\ThisCommonLabelBase.env.titlepage}, but not +both. + +The following commands only define the contents of the title. Therefore they +must be used before \Macro{maketitle}. It is, however, not necessary and, when +using the \Package{babel} package\IndexPackage{babel} not recommended, to +include these in the preamble before \Macro{begin}\PParameter{document} (see +\cite{package:babel}). You can find examples +\IfThisCommonFirstRun{in the descriptions of the other commands in this + section}{in \autoref{sec:\ThisCommonFirstLabelBase.titlepage}, starting on + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.extratitle}}. + + +\begin{Declaration} + \Macro{extratitle}\Parameter{half-title} + \Macro{frontispiece}\Parameter{frontispiece} +\end{Declaration}% +\begin{Explain}% + In earlier times the inner book was often not protected from dirt by a + cover. This function was then assumed by the first page of the book, which + usually had just a short title, known as the \emph{half-title}. Nowadays the + extra page often appears before the real main title and contains information + about the publisher, series number, and similar information. +\end{Explain} +With {\KOMAScript}, it is possible to include a page before the real title +page. The \PName{half-title} can be arbitrary text\,---\,even several +paragraphs. The contents of the \PName{half-title} are output by {\KOMAScript} +without additional formatting. Their organisation is completely left to the +user. The verso of the half-title\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.25}{\Class{scrbook}\and\Class{scrreprt}\and\Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.25}{\Package{scrextend}}% + }{\ThisCommonLabelBaseFailure}% +} is the frontispiece. The half-title is set on its own page even when in-page +titles are used. The output of the half-title defined with \Macro{extratitle} +takes place as part of the title produced by +\DescRef{\ThisCommonLabelBase.cmd.maketitle}. + +\IfThisCommonFirstRun{\iftrue}{% + An example of a simple title page with half-title and main title is shown + in \autoref{sec:\ThisCommonFirstLabelBase.titlepage} on + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.extratitle}% + \csname iffalse\endcsname% +}% + \begin{Example} + \phantomsection\xmpllabel{cmd.extratitle} + Let's return to the previous example and suppose + that the Spartan ``Me'' is the half-title. The full title should + still follow the half-title. You can proceed as follows: +\begin{lstcode} + \documentclass{scrbook} + \begin{document} + \extratitle{\textbf{\Huge Me}} + \title{It's me} + \maketitle + \end{document} +\end{lstcode} + You can centre the half-title horizontally and put it a little lower down + the page: +\begin{lstcode} + \documentclass{scrbook} + \begin{document} + \extratitle{\vspace*{4\baselineskip} + \begin{center}\textbf{\Huge Me}\end{center}} + \title{It's me} + \maketitle + \end{document} +\end{lstcode} + The command\textnote{Attention!} \DescRef{\ThisCommonLabelBase.cmd.title} + is necessary in order to make the examples above work correctly. It is + explained next. + \end{Example} +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{titlehead}\Parameter{title head}% + \Macro{subject}\Parameter{subject}% + \Macro{title}\Parameter{title}% + \Macro{subtitle}\Parameter{subtitle}% + \Macro{author}\Parameter{author}% + \Macro{date}\Parameter{date}% + \Macro{publishers}\Parameter{publisher}% + \Macro{and}% + \Macro{thanks}\Parameter{footnote} +\end{Declaration}% +There are seven elements available for the content of the main title page. The +main title page is output as part of the title pages created by +\DescRef{\ThisCommonLabelBase.cmd.maketitle}, while the definitions given here +only apply to the respective elements. + +\BeginIndexGroup\BeginIndex{FontElement}{titlehead}% +\LabelFontElement{titlehead}% +The\important{\Macro{titlehead}} \PName{title head}% +\Index[indexmain]{title>head} is defined with the command +\Macro{titlehead}. It occupies the entire text width, at the top of the page, +in normal justification, and it can be freely designed by the user. It uses +the font element\important{\FontElement{titlehead}} with same name (see +\autoref{tab:\ThisCommonFirstLabelBase.mainTitle}, +\autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}).% +\EndIndexGroup + +\BeginIndexGroup\BeginIndex{FontElement}{subject}\LabelFontElement{subject}% +The\important{\Macro{subject}} \PName{subject}\Index[indexmain]{subject} is +output with the font element\important{\FontElement{subject}} of the same name +immediately above the \PName{title}.% +\EndIndexGroup + +\BeginIndexGroup\BeginIndex{FontElement}{title}\LabelFontElement{title}% +The\important{\Macro{title}} \PName{title} is set in a very large font size. +Along\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v2.8p}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}}{} with the font size, the font element +\FontElement{title}\IndexFontElement[indexmain]{title}% +\important{\FontElement{title}} is applied (see +\autoref{tab:\ThisCommonFirstLabelBase.mainTitle}, +\autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}).% +\EndIndexGroup + +\BeginIndexGroup\BeginIndex{FontElement}{subtitle}\LabelFontElement{subtitle}% +The\important{\Macro{subtitle}} +\PName{subtitle}\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v2.97c}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}}{} is set just below the title using the font +element\important{\FontElement{subtitle}} of the same name (see +\autoref{tab:\ThisCommonFirstLabelBase.mainTitle}, +\autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}).% +\EndIndexGroup + +\BeginIndexGroup\BeginIndex{FontElement}{author}\LabelFontElement{author}% +Below\important{\Macro{author}} the \PName{subtitle} appears the +\PName{author}\Index[indexmain]{author}. Several authors can be specified in +the argument of \Macro{author}. They should be separated by +\Macro{and}\important{\Macro{and}}. The output uses the font +element\important{\FontElement{author}} of the same name. (see +\autoref{tab:\ThisCommonFirstLabelBase.mainTitle}, +\autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}).% +\EndIndexGroup + +\BeginIndexGroup\BeginIndex{FontElement}{date}\LabelFontElement{date}% +Below\important{\Macro{date}} the author or authors appears the +date\Index{date} in the font of the element of the same name. The default +value is the current date, as produced by \Macro{today}\IndexCmd{today}. The +\Macro{date} command accepts arbitrary information\,---\,even an empty +argument. The output uses the font element\important{\FontElement{date}} of +the same name (see \autoref{tab:\ThisCommonFirstLabelBase.mainTitle}, +\autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}).% +\EndIndexGroup + +\BeginIndexGroup\BeginIndex{FontElement}{publishers}% +\LabelFontElement{publishers}% +Finally\important{\Macro{publishers}} comes the +\PName{publisher}\Index[indexmain]{publisher}. Of course this command can also +be used for any other information of minor importance. If necessary, the +\Macro{parbox} command can be used to typeset this information over the full +page width like a regular paragraph instead of centring it. It should then be +considered equivalent to the title head. Note, however, that this field is +placed above any existing footnotes. The output uses the font +element\important{\FontElement{publishers}} of the same name (see +\autoref{tab:\ThisCommonFirstLabelBase.mainTitle}, +\autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}).% +\EndIndexGroup + +Footnotes\important{\Macro{thanks}}\Index{footnotes} on the title page are +produced not with \Macro{footnote}, but with \Macro{thanks}. They serve +typically for notes associated with the authors. Symbols are used as footnote +markers instead of numbers. Note\textnote{Attention!} that \Macro{thanks} has +to be used inside the argument of another command, such as in the +\PName{author} argument of the command \Macro{author}. +\IfThisCommonLabelBase{scrextend}{% + However, in order for the \DescRef{\ThisCommonLabelBase.fontelement.footnote} + element to be aware of the \Package{scrextend} package, not only does the + title extension need to be enabled, it must also be set to use footnotes + with this package (see the introduction to + \autoref{sec:\ThisCommonLabelBase.footnotes}, + \autopageref{sec:\ThisCommonLabelBase.footnotes}). Otherwise, the font + specified by the class or other packages used for the footnotes will be + used.% +}{}% + +For% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.12}{\Package{scrextend}}% + }{\InternalCommonFileUsageError}% +} the output of the title elements, the font\textnote{font} can be set using +the \DescRef{\ThisCommonLabelBase.cmd.setkomafont} and +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} command (see +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}). The defaults are listed +in \autoref{tab:\ThisCommonFirstLabelBase.titlefonts}% +\IfThisCommonFirstRun{}{% + , \autopageref{tab:\ThisCommonFirstLabelBase.titlefonts}% +}.% +\IfThisCommonFirstRun{% + \begin{table} +% \centering +% \caption + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \addtokomafont{caption}{\raggedright}% + \begin{captionbeside} + [{Font defaults for the elements of the title}] + {\label{tab:\ThisCommonLabelBase.titlefonts}% + \hspace{0pt plus 1ex}Font defaults for the elements of the title} + [l] + \begin{tabular}[t]{ll} + \toprule + Element name & Default \\ + \midrule + \FontElement{author} & \Macro{Large} \\ + \FontElement{date} & \Macro{Large} \\ + \FontElement{dedication} & \Macro{Large} \\ + \FontElement{publishers} & \Macro{Large} \\ + \FontElement{subject} & + \Macro{normalfont}\Macro{normalcolor}% + \Macro{bfseries}\Macro{Large} \\ + \FontElement{subtitle} & + \DescRef{\ThisCommonLabelBase.cmd.usekomafont}% + \PParameter{title}\Macro{large} \\ + \FontElement{title} & + \DescRef{\ThisCommonLabelBase.cmd.usekomafont}% + \PParameter{disposition} \\ + \FontElement{titlehead} & \\ + \bottomrule + \end{tabular} + \end{captionbeside} + \end{table}% +}{}% + +With the exception of \PName{title head} and any footnotes, all output is +centred horizontally. % +\iffree{% + \IfThisCommonLabelBase{scrextend}{The formatting of each element is}{These + details are} briefly summarized in + \autoref{tab:\ThisCommonFirstLabelBase.mainTitle}\IfThisCommonFirstRun{}{% + , \autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}}.% +}{% + \IfThisCommonLabelBase{scrextend}{% + The alignment of individual elements can also be found in + \autoref{tab:\ThisCommonFirstLabelBase.mainTitle}\IfThisCommonFirstRun{}{% + , \autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}}.% + }{% + For a summary, see \autoref{tab:\ThisCommonFirstLabelBase.mainTitle}.% + }% +}% +\IfThisCommonFirstRun{% + \begin{table} + % \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + % \caption + \begin{captionbeside}[Main title]{% + \hspace{0pt plus 1ex}% + Font and horizontal positioning of the elements in the main title page + in the order of their vertical position from top to bottom when + typeset with \DescRef{\ThisCommonLabelBase.cmd.maketitle}} + [l] + \setlength{\tabcolsep}{.85\tabcolsep}% Umbruchoptimierung + \begin{tabular}[t]{llll} + \toprule + Element & Command & Font & Alignment \\ + \midrule + Title head & \Macro{titlehead} & \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{titlehead} & justified \\ + Subject & \Macro{subject} & \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{subject} & centred \\ + Title & \Macro{title} & \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{title}\Macro{huge} & centred \\ + Subtitle & \Macro{subtitle} & \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{subtitle} & centred \\ + Authors & \Macro{author} & \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{author} & centred \\ + Date & \Macro{date} & \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{date} & centred \\ + Publishers & \Macro{publishers} & \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{publishers} & centred \\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:maincls.mainTitle} + \end{table} +}{} + +Note\textnote{Attention!} that for the main title, \Macro{huge} will be used +after the font switching element +\DescRef{\ThisCommonLabelBase.fontelement.title}\IndexFontElement{title}. So +you cannot change the size of the main title using +\DescRef{\ThisCommonLabelBase.cmd.setkomafont} or +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont}.% + +\IfThisCommonFirstRun{\iftrue}{% + An example for a title page using all the elements offered by \KOMAScript{} + is shown in \autoref{sec:\ThisCommonFirstLabelBase.titlepage} on + \PageRefxmpl{\ThisCommonFirstLabelBase.maintitle}.% + \csname iffalse\endcsname% +}% + \begin{Example} + \phantomsection\xmpllabel{maintitle}% + Suppose you are writing a dissertation. The title page should have the + university's name and address at the top, flush left, and the semester, + flush right. As usual, a title including author and submission date + should be given. The adviser must also be indicated, together with the + fact that the document is a dissertation. You can do this as follows: +\begin{lstcode} + \documentclass{scrbook} + \usepackage[english]{babel} + \begin{document} + \titlehead{{\Large Unseen University + \hfill SS~2002\\} + Higher Analytical Institute\\ + Mythological Rd\\ + 34567 Etherworld} + \subject{Dissertation} + \title{Digital space simulation with the DSP\,56004} + \subtitle{Short but sweet?} + \author{Fuzzy George} + \date{30. February 2002} + \publishers{Adviser Prof. John Eccentric Doe} + \maketitle + \end{document} +\end{lstcode} + \end{Example}% +\fi + +\begin{Explain} + A common misconception concerns the function of the full title page. It is + often erroneously assumed to be the cover\Index{cover} or dust jacket. + Therefore, it is frequently expected that the title page will not follow the + normal layout for two-sided typesetting but will have equally large left and + right margins. + + But if you pick up a book and open it, you will quickly find at least one + title page inside the cover, within the so-called book block. Precisely + these title pages are produced by + \DescRef{\ThisCommonLabelBase.cmd.maketitle}. + + As is the case with the half-title, the full title page belongs to the book + block, and therefore should have the same page layout as the rest of the + document. A cover is actually something that you should create in a + separate document. After all, it often has a very distinct format. It can + also be designed with the help of a graphics or DTP program. A separate + document should also be used because the cover will be printed on a + different medium, such as cardboard, and possibly with another printer. + + Nevertheless, since \KOMAScript~3.12 the first title page issued by + \DescRef{\ThisCommonLabelBase.cmd.maketitle} can be formatted as a cover + page with different margins. Changes to the margins on this page do not + affect the other margins. For more information about this option, see + \OptionValueRef{\ThisCommonLabelBase}{titlepage}{firstiscover}% + \IndexOption{titlepage~=\textKValue{firstiscover}} on + \DescPageRef{\ThisCommonLabelBase.option.titlepage}. +\end{Explain} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{uppertitleback}\Parameter{titlebackhead}% + \Macro{lowertitleback}\Parameter{titlebackfoot} +\end{Declaration}% +In\textnote{\KOMAScript{} vs. standard classes} two-sided printing, the +standard classes leave the back (verso) of the title page empty. However, with +{\KOMAScript} the back of the full title page can be used for other +information. There are exactly two elements which the user can freely format: +\PName{titlebackhead}\Index{title>back}\Index{title>verso} and +\PName{titlebackfoot}. The header can extend to the footer and vice versa. +\iffree{Using this guide as an example, the legal disclaimer was set with the + help of the \Macro{uppertitleback} command.}{The publishers information of + this book, for example, could have been set either with + \Macro{uppertitleback} or \Macro{lowertitleback}.}% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{dedication}\Parameter{dedication} +\end{Declaration}% +{\KOMAScript} offers its own dedication page. This +dedication\Index{dedication} is centred and set by default with a slightly +larger font\textnote{font}. +\BeginIndexGroup\BeginIndex{FontElement}{dedication}% +\LabelFontElement{dedication} +The% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.12}{\Package{scrextend}}% + }{\InternalCommonFileUseError}% +}\important{\FontElement{dedication}} exact font setting for the +\FontElement{dedication} element, which is taken from +\autoref{tab:\ThisCommonFirstLabelBase.titlefonts}, +\autopageref{tab:\ThisCommonFirstLabelBase.titlefonts}, can be changed with +the \DescRef{\ThisCommonLabelBase.cmd.setkomafont} and +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}).% +\EndIndexGroup + +\IfThisCommonFirstRun{\iftrue}{% + An example with all title pages provided by \KOMAScript{} is shown in + \autoref{sec:\ThisCommonFirstLabelBase.titlepage} on + \PageRefxmpl{\ThisCommonFirstLabelBase.fulltitle}.% + \csname iffalse\endcsname% +}% + \begin{Example} + \phantomsection\xmpllabel{fulltitle}% + Suppose you have written a book of poetry and want to + dedicate it to your spouse. A solution would look like this: +\begin{lstcode} + \documentclass{scrbook} + \usepackage[english]{babel} + \begin{document} + \extratitle{\textbf{\Huge In Love}} + \title{In Love} + \author{Prince Ironheart} + \date{1412} + \lowertitleback{This poem book was set with% + the help of {\KOMAScript} and {\LaTeX}} + \uppertitleback{Self-mockery Publishers} + \dedication{To my treasured hazel-hen\\ + in eternal love\\ + from your dormouse.} + \maketitle + \end{document} +\end{lstcode} + Please use your own favourite pet names to personalize it. + \end{Example}% +\fi% +\EndIndexGroup +% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/common-typearea.tex b/macros/latex/contrib/koma-script/source-doc/english/common-typearea.tex new file mode 100644 index 0000000000..30b89d0331 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/common-typearea.tex @@ -0,0 +1,88 @@ +% ====================================================================== +% common-typearea.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-typearea.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-typearea.tex} + [$Date: 2018-03-30 09:37:06 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (common paragraphs: typearea)] +\translator{Markus Kohm\and Krickette Murabayashi\and Karl Hagen} + +% Date of the translated German file: 2018-02-01 + +\section{Page Layout} +\seclabel{typearea} +\BeginIndexGroup +\BeginIndex{}{page>layout} + +Each page of a document consists of different layout elements, such as the +margins, the header, the footer, the text area, the marginal note column, and +the distances between these elements. \KOMAScript{} additionally distinguishes +the entire page, also known as the paper, and the visible page. Without doubt, +the separation of the page into these different parts is one of the basic +features of a class\IfThisCommonLabelBase{scrlttr2}{\OnlyAt{scrlttr2}}{}. +\KOMAScript{} delegates this work to the package \Package{typearea}. This +package can also be used with other classes. The \KOMAScript{} classes, +however, load \Package{typearea} on their own. Therefore, it's neither +necessary nor sensible to load the package explicitly with \Macro{usepackage} +while using a \KOMAScript{} class. See also +\autoref{sec:\ThisCommonLabelBase.options}, +\autopageref{sec:\ThisCommonLabelBase.options}. + +Some settings of \KOMAScript{} classes affect the page layout and vice versa. +Those effects are documented at the corresponding settings. + +For more information about the choice of paper format, the division of the +page into margins and type area, and the choice between one- and two-column +typesetting, see the documentation for the \Package{typearea} package. You can +find it in \autoref{cha:typearea}, starting on \autopageref{cha:typearea}. + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/expertpart.tex b/macros/latex/contrib/koma-script/source-doc/english/expertpart.tex new file mode 100644 index 0000000000..60dd17e9b3 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/expertpart.tex @@ -0,0 +1,78 @@ +% ====================================================================== +% expertpart.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% expertpart.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% First part: KOMA-Script for Authors +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Erster Teil: KOMA-Script fuer Autoren +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{expertpart.tex} + [$Date: 2018-02-28 13:23:23 +0100 (Wed, 28 Feb 2018) $ + Part KOMA-Script for Experts] +\translator{Markus Kohm\and Karl Hagen} + +\setpartpreamble{% + \vspace*{2\baselineskip}% + \setlength{\parindent}{1em}% + + \noindent In this part, you can find information for the authors of LaTeX + packages and classes. This applies not only to commands that are useful for + implementing new packages and classes, but also to interfaces that allow + further alteration of \KOMAScript{}. Moreover, this part provides + information on obsolete options and instructions, as well as background + information on the implementation of \KOMAScript{}. + + This part is intended to supplement the information for authors of articles, + reports, books and letters in \autoref{part:forAuthors}. More information + and examples for those users can be found in that part. +} + +\part{\KOMAScript{} for Advanced Users and Experts} +\label{part:forExperts} + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "guide.tex" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/guide-english.tex b/macros/latex/contrib/koma-script/source-doc/english/guide-english.tex new file mode 100644 index 0000000000..edebaee2b9 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/guide-english.tex @@ -0,0 +1,522 @@ +% ====================================================================== +% guide-english.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% guide-english.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Language dependencies (english) of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Sprachabhaengigkeiten (english) der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ====================================================================== +% +\KOMAProvidesFile{guide-english.tex} + [$Date: 2018-03-21 10:37:34 +0100 (Wed, 21 Mar 2018) $ + KOMA-Script guide language dependencies] +% +% \section{Extra Packages} +% +\RequirePackage[normal]{engord} +% +% \section{Title} +% +% \begin{macro}{\GuideSubject} +% \begin{macro}{\GuideTitle} +% \begin{macro}{\GuideSubTitle} +% \begin{macro}{\GuideAuthorHeadline} +% \begin{macro}{\GuideTranslatorHeadline} +% \begin{macro}{\GuideWarrantyHeadline} +% \begin{macro}{\GuideWarranty} +% \begin{macro}{\GuideCopyright} +% \begin{macro}{\GuideDedication} +% Language dependencies of all the title pages. +% \begin{macrocode} +\newcommand*{\GuideSubject}{The Guide}% +\newcommand*{\GuideTitle}{\KOMAScript}% +\newcommand*{\GuideSubTitle}{a versatile {\LaTeXe} bundle% + % Ugly note + \vfill + \noindent Note: This document is a translation of the German \KOMAScript{} + manual. Several authors have been involved to this translation. Some of them + are native English speakers. Others, like me, are not. Improvements of the + translation by native speakers or experts are welcome at all times!% +}% +\newcommand*{\GuideAuthorHeadline}{Authors of the {\KOMAScript} Bundle}% +\newcommand*{\GuideTranslatorHeadline}{English translation of this manual by: +} \newcommand*{\GuideWarrantyHeadline}{Legal Notes:}% +\newcommand*{\GuideWarranty}{There is no warranty for any part of the + documented software. The authors have taken care in the preparation of this + guide, but make no expressed or implied warranty of any kind and assume no + responsibility for errors or omissions. No liability is assumed for + incidental or consequential damages in connection with or arising out of the + use of the information or programs contained here.\par\medskip% + Many of the designations used by manufacturers and sellers to distinguish + their products are claimed as trademarks. Where those designations appear in + this book, and the authors were aware of a trademark claim, the designations + have been printed with initial capital letters or in all capitals.}% +\newcommand*{\GuideCopyright}{Free screen version without any optimization of + paragraph and page breaks\par\medskip% + This guide is part of {\KOMAScript}, which is free under the terms and + conditions of {\LaTeX} Project Public License Version 1.3c. A version of + this license, which is valid for {\KOMAScript}, is part of {\KOMAScript} (see + \File{lppl.txt}). Distribution of this manual\,---\,even if it is + printed\,---\,is allowed provided that all parts of {\KOMAScript} are + distributed with it. Distribution without the other parts of {\KOMAScript} + requires an explicit, additional authorization by the authors.}% +\newcommand*{\GuideDedication}{To all my friends all over the world!}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \section{CTAN Server to be Used} +% +% \begin{macro}{\GuideCTANserver} +% Unused since 2015-09-30. +% \begin{macrocode} +%\newcommand*{\GuideCTANserver}{ftp.ctan.org} +% \end{macrocode} +% \end{macro} +% +% +% \section{Terms} +% +% Some terms, e.g. used at index notes. +% +% \begin{macro}{\GuideClass} +% \begin{macro}{\GuideClassIndexCategory} +% \begin{macro}{\GuideClassIndexCategoryExpanded} +% The term ``class''. +% \begin{macrocode} +\newcommand*{\GuideClass}{class} +\newcommand*{\GuideClassIndexCategory}{classes} +\let\GuideClassIndexCategoryExpanded\GuideClassIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideCounter} +% \begin{macro}{\GuideCounterIndexCategory} +% \begin{macro}{\GuideCounterIndexCategoryExpanded} +% The term ``counter''. +% \begin{macrocode} +\newcommand*{\GuideCounter}{counter} +\newcommand*{\GuideCounterIndexCategory}{counters} +\let\GuideCounterIndexCategoryExpanded\GuideCounterIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideEnvironment} +% \begin{macro}{\GuideEnvIndexCategory} +% \begin{macro}{\GuideEnvIndexCategoryExpanded} +% The term ``environment''. +% \begin{macrocode} +\newcommand*{\GuideEnvironment}{environment} +\newcommand*{\GuideEnvIndexCategory}{environments} +\let\GuideEnvIndexCategoryExpanded\GuideEnvIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideExample} +% The term ``Example'' used at a kind of heading, so it should be upper case. +% \begin{macrocode} +\newcommand*{\GuideExample}{Example} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GuideFile} +% \begin{macro}{\GuideFileIndexCategory} +% \begin{macro}{\GuideFileIndexCategoryExpanded} +% The term ``file''. +% \begin{macrocode} +\newcommand*{\GuideFile}{file} +\newcommand*{\GuideFileIndexCategory}{files} +\let\GuideFileIndexCategoryExpanded\GuideFileIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideFloatstyle} +% \begin{macro}{\GuideFloatstyleIndexCategory} +% \begin{macro}{\GuideFloatstyleIndexCategoryExpanded} +% The term ``\Package{float} style''. +% \begin{macrocode} +\newcommand*{\GuideFloatstyle}{\Package{float} style} +\newcommand*{\GuideFloatstyleIndexCategory}{\Package{float} styles} +\newcommand*{\GuideFloatstyleIndexCategoryExpanded}{float styles} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideFontElement} +% \begin{macro}{\GuideFontElementIndexCategory} +% \begin{macro}{\GuideFontElementIndexCategoryExpanded} +% The term ``element''. +% \begin{macrocode} +\newcommand*{\GuideFontElement}{element} +\newcommand*{\GuideFontElementIndexCategory}{elements} +\let\GuideFontElementIndexCategoryExpanded\GuideFontElementIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideLength} +% \begin{macro}{\GuideLengthIndexCategory} +% \begin{macro}{\GuideLengthIndexCategoryExpanded} +% The term ``length''. +% \begin{macrocode} +\newcommand*{\GuideLength}{length} +\newcommand*{\GuideLengthIndexCategory}{lengths} +\let\GuideLengthIndexCategoryExpanded\GuideLengthIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideMacro} +% \begin{macro}{\GuideMacroIndexCategory} +% \begin{macro}{\GuideMacroIndexCategoryExpanded} +% \begin{macro}{\GuideCommand} +% \begin{macro}{\GuideCommandIndexCategory} +% \begin{macro}{\GuideCommandIndexCategoryExpanded} +% The term ``command''. +% \begin{macrocode} +\newcommand*{\GuideMacro}{command} +\let\GuideCommand\GuideMacro +\newcommand*{\GuideMacroIndexCategory}{commands} +\let\GuideCommandIndexCategory\GuideMacroIndexCategory +\let\GuideMacroIndexCategoryExpanded\GuideMacroIndexCategory +\let\GuideCommandIndexCategoryExpanded\GuideCommandIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideOption} +% \begin{macro}{\GuideOptionIndexCategory} +% \begin{macro}{\GuideOptionIndexCategoryExpanded} +% The term ``option''. +% \begin{macrocode} +\newcommand*{\GuideOption}{option} +\newcommand*{\GuideOptionIndexCategory}{options} +\let\GuideOptionIndexCategoryExpanded\GuideOptionIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuidePackage} +% \begin{macro}{\GuidePackageIndexCategory} +% \begin{macro}{\GuidePackageIndexCategoryExpanded} +% The term ``package''. +% \begin{macrocode} +\newcommand*{\GuidePackage}{package} +\newcommand*{\GuidePackageIndexCategory}{packages} +\let\GuidePackageIndexCategoryExpanded\GuidePackageIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuidePagestyle} +% \begin{macro}{\GuidePagestyleIndexCategory} +% \begin{macro}{\GuidePagestyleIndexCategoryExpanded} +% The term ``page style''. +% \begin{macrocode} +\newcommand*{\GuidePagestyle}{page style} +\newcommand*{\GuidePagestyleIndexCategory}{page styles} +\let\GuidePagestyleIndexCategoryExpanded\GuidePagestyleIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuidePLength} +% \begin{macro}{\GuidePLengthIndexCategory} +% \begin{macro}{\GuidePLengthIndexCategoryExpanded} +% \begin{macro}{\GuidePseudoPrefix} +% The prefix ``pseudo'' at the term ``pseudo length'' and the term itself. +% \begin{macrocode} +\newcommand*{\GuidePseudoPrefix}{pseudo-} +\newcommand*{\GuidePLength}{\GuidePseudoPrefix\GuideLength} +\newcommand*{\GuidePLengthIndexCategory}{\GuidePseudoPrefix\GuideLengthIndexCategory} +\let\GuidePLengthIndexCategoryExpanded\GuidePLengthIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideVariable} +% \begin{macro}{\GuideVariableIndexCategory} +% \begin{macro}{\GuideVariableIndexCategoryExpanded} +% The termo ``variable''. +% \begin{macrocode} +\newcommand*{\GuideVariable}{variable} +\newcommand*{\GuideVariableIndexCategory}{variables} +\let\GuideVariableIndexCategoryExpanded\GuideVariableIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideAnd} +% The ``and'' at a list of two. +% \begin{macrocode} +\newcommand*{\GuideAnd}{ and } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GuideListAnd} +% The ``and'' at a list of more than two. +% \begin{macrocode} +\newcommand*{\GuideListAnd}{, and } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GuideLoadNonFree} +% Note, that the non free manual contains more information. +% \begin{macrocode} +\newcommand*{\GuideLoadNonFree}{% + Currently, additional information on this topic can be found at the same + point in the German \KOMAScript{} book \cite{book:komascript} only. +} +% \end{macrocode} +% \end{macro} +% +% +% \section{Index} +% +% \begin{macro}{\GuidegenIndex} +% \begin{macro}{\GuidecmdIndex} +% \begin{macro}{\GuidecmdIndexShort} +% \begin{macro}{\GuidelenIndex} +% \begin{macro}{\GuidelenIndexShort} +% \begin{macro}{\GuideelmIndex} +% \begin{macro}{\GuideelmIndexShort} +% \begin{macro}{\GuidefilIndex} +% \begin{macro}{\GuidefilIndexShort} +% \begin{macro}{\GuideoptIndex} +% \begin{macro}{\GuideoptIndexShort} +% The titles and short titles of each single index. +\newcommand*{\GuidegenIndex}{General Index}% +\newcommand*{\GuidecmdIndex}{Index of Commands, Environments, and Variables}% +\newcommand*{\GuidecmdIndexShort}{Index of Commands, etc.}% +\newcommand*{\GuidelenIndex}{Index of Lengths and Counters}% +\newcommand*{\GuidelenIndexShort}{Index of Lengths, etc.}% +\newcommand*{\GuideelmIndex}{Index of Elements Capable of + Adjusting Fonts}% +\newcommand*{\GuideelmIndexShort}{Index of Elements}% +\newcommand*{\GuidefilIndex}{Index of Files, Classes, and Packages}% +\newcommand*{\GuidefilIndexShort}{Index of Files, etc.}% +\newcommand*{\GuideoptIndex}{Index of Class and Package Options}% +\newcommand*{\GuideoptIndexShort}{Index of Options}% +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideIndexPreamble} +% The preamble text of the whole index. +\newcommand*{\GuideIndexPreamble}{% + There are two kinds of page numbers in this index. The numbers in bold + show the pages where the topic is defined or explained. The numbers in + ordinary type show the pages of where the topic is mentioned.% +} +% \end{macro} +% +% +% \begin{macro}{\GuideIndexSees} +% These are all see index entries. +\newcommand*{\GuideIndexSees}{% +} +% \end{macro} +% +% \begin{macro}{\GuideIndexSeeAlsos} +% These are all see also index entries. +\newcommand*{\GuideIndexSeeAlsos}{% +} +% \end{macro} +% +% \section{Bibliography} +% +% \begin{macro}{\GuideBibPreamble} +% \begin{macrocode} +\newcommand*{\GuideBibPreamble}{% + In the following, you will find many references. All of them are referenced + in the main text. In many cases the reference points to documents or + directories which can be accessed via the Internet. In these cases, the + reference includes a URL instead of a publisher. If the reference points to + a {\LaTeX} package then the URL is written in the form + ``\url{CTAN://}\emph{destination}''. The prefix ``\url{CTAN://}'' means the + \TeX{} archive on a CTAN server or mirror. For example, you can replace the + prefix with \url{http://mirror.ctan.org/}. For {\LaTeX} packages, it is also + important to mention that we have tried to give a version number appropriate + to the text that cites the reference. But for some packages is is very + difficult to find a consistent version number and release date. + Additionally, the given version is not always the current version. If you + want install new packages, be sure that the package is the most up-to-date + version and check first if the package is already available on your system.% +} +% \end{macrocode} +% \end{macro} +% +% +% \section{Change Log} +% +% \begin{macro}{\GuideChangeLogPreamble} +% The preamble of the change log index. +% \begin{macrocode} +\newcommand*{\GuideChangeLogPreamble}{% + In this list of changes, you will find all significant changes to the user + interface of the {\KOMAScript} bundle at the last few versions. The list was + sorted by the names of the classes and packages and their version. The + numbers after the version are the pages where the changes are described. In + the margins of these pages, you will find corresponding version marks.% +} +% \end{macrocode} +% \end{macro} +% +% +% \section{Language Extensions} +% +% Some terms should be part of the captions of the language. +% \begin{macro}{\GuideLanguageExtensions} +% This macro has to be defined, because the class will add it to the language +% at |\begin{document}| and it will also call it. +% \begin{macrocode} +\newcommand*{\GuideLanguageExtensions}{% +% \end{macrocode} +% \begin{macro}{\pageautorefname} +% The term ``page'' that will be put before the reference of a page set by +% |\autopageref|. +% \begin{macrocode} + \def\pageautorefname{page}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\partautorefname} +% \begin{macro}{\figureautorefname} +% \begin{macro}{\tableautorefname} +% \begin{macro}{\subsectionautorefname} +% \begin{macro}{\subsubsectionautorefname} +% \begin{macro}{\paragraphautorefname} +% \begin{macro}{\subparagraphautorefname} +% I'll call them all ``section''. +% \begin{macrocode} + \def\partautorefname{part}% + \def\figureautorefname{figure}% + \def\tableautorefname{table}% + \def\appendixautorefname{appendix}% + \let\subsectionautorefname=\sectionautorefname + \let\subsubsectionautorefname=\sectionautorefname + \let\paragraphautorefname=\sectionrefname + \let\subparagraphautorefname=\sectionrefname +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\changelogname} +% The name of the change log index. +% \begin{macrocode} + \def\changelogname{Change Log}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\descriptionname} +% \begin{macro}{\contentsname} +% \begin{macrocode] + \def\descriptionname{description}% + \def\contentname{contents}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\lengthname} +% \begin{macrocode} + \def\lengthname{length}% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +} +% \end{macrocode} +% \end{macro} +% +% +% \section{Hyphenation} +% +% This is not realy a good place to put them~-- but better late than never: +% \begin{macrocode} +\hyphenation{% +} +% \end{macrocode} +% +% +% +\endinput +%%% Local Variables: +%%% mode: doctex +%%% coding: us-ascii +%%% TeX-master: "guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/guide.tex b/macros/latex/contrib/koma-script/source-doc/english/guide.tex new file mode 120000 index 0000000000..4e897d1e39 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/guide.tex @@ -0,0 +1 @@ +../guide.tex
\ No newline at end of file diff --git a/macros/latex/contrib/koma-script/source-doc/english/htmlsetup b/macros/latex/contrib/koma-script/source-doc/english/htmlsetup new file mode 100644 index 0000000000..8c30c6ed56 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/htmlsetup @@ -0,0 +1,65 @@ +# ====================================================================== +# htmlsetup +# Copyright (c) Markus Kohm, 2002-2013 +# +# This file is part of the LaTeX2e KOMA-Script bundle. +# +# This work may be distributed and/or modified under the conditions of +# the LaTeX Project Public License, version 1.3c of the license. +# The latest version of this license is in +# http://www.latex-project.org/lppl.txt +# and version 1.3c or later is part of all distributions of LaTeX +# version 2005/12/01 or later and of this work. +# +# This work has the LPPL maintenance status "author-maintained". +# +# The Current Maintainer and author of this work is Markus Kohm. +# +# This work consists of all files listed in manifest.txt. +# ---------------------------------------------------------------------- +# htmlsetup +# Copyright (c) Markus Kohm, 2002-2013 +# +# Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +# Version 1.3c, verteilt und/oder veraendert werden. +# Die neuste Version dieser Lizenz ist +# http://www.latex-project.org/lppl.txt +# und Version 1.3c ist Teil aller Verteilungen von LaTeX +# Version 2005/12/01 oder spaeter und dieses Werks. +# +# Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +# (allein durch den Autor verwaltet). +# +# Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +# +# Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +# ====================================================================== + +$baselink="scrguien.pdf"; +$htmlhead="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\"> +<html> +<head><title>Index</title> +<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"> +</head> +<body> +<h1>Index of the KOMA-Script Guide</h1> +<p>This is an index of the elements defined at KOMA-Script. This index is related to the <a href=\"scrguien.pdf\">KOMA-Script guide</a>. To improve the survey this index has serveral functional sections:</p> +"; +$htmlend="<p> +<a href=\"http://validator.w3.org/check?uri=referer\"><img +src=\"http://www.w3.org/Icons/valid-html40\" +alt=\"Valid HTML 4.0 Strict\" height=\"31\" width=\"88\"></a> +</p> +</body></html>"; +%titles=( "option" => "Options", + "macro" => "Commands", + "environment" => "Environments", + "length" => "Lengths", + "plength" => "Pseudolengths", + "variable" => "Variables", + "pagestyle" => "Page Styles", + "counter" => "Counter", + "floatstyle" => "Styles for the float Package", + "fontelement" => "Elements (Font May Be Changed)" ); + +# end of file diff --git a/macros/latex/contrib/koma-script/source-doc/english/introduction.tex b/macros/latex/contrib/koma-script/source-doc/english/introduction.tex new file mode 100644 index 0000000000..9331720287 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/introduction.tex @@ -0,0 +1,352 @@ +% ====================================================================== +% introduction.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% introduction.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Introduction of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Einleitung der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{introduction.tex} + [$Date: 2019-01-15 08:39:58 +0100 (Tue, 15 Jan 2019) $ + KOMA-Script guide introduction] +\translator{Kevin Pfeiffer\and Gernot Hassenpflug\and + Krickette Murabayashi\and Markus Kohm\and Karl Hagen} + +% Date of the translated German file: 2018-02-05 + +\chapter{Introduction} +\labelbase{introduction} + +This chapter contains, among other things, important information about the +structure of the manual and the history of {\KOMAScript}, which begins +years before the first version. You will also find information on how to +install {\KOMAScript} and what to do if you encounter errors. + +\section{Preface}\seclabel{preface} + +{\KOMAScript} is very complex. This is due to the fact that it consists of not +just a single class or a single package but a bundle of many classes and +packages. Although the classes are designed as counterparts to the standard +classes, that does not mean they provide only the commands, environments, and +settings of the standard classes, or that they imitate their appearance. The +capabilities of {\KOMAScript} sometimes far surpass those of the standard +classes. Some of them should be considered extensions to the basic +capabilities of the \LaTeX{} kernel. + +The foregoing means that the documentation of {\KOMAScript} has to be +extensive. In addition, {\KOMAScript} is not normally taught. That means there +are no teachers who know their students and can therefore choose the teaching +materials and adapt them accordingly. It would be easy to write documentation +for a specific audience. The difficulty facing the author, however, is that +the manual must serve all potential audiences. I have tried to create a guide +that is equally suitable for the computer scientist and the fishmonger's +secretary. I have tried, although this is actually an impossible task. The +result is numerous compromises, and I would ask you to take this issue into +account if you have any complaints or suggestions to help improve the current +situation. + +Despite the length of this manual, I would ask you to consult the +documentation first in case you have problems. You should start by referring +to the multi-part index at the end of this document. In addition to this +manual, documentation includes all the text documents that are part of the +bundle. See \File{manifest.tex} for a complete list. + +\section{Structure of the Guide}\seclabel{structure} + +This manual is divided into several parts: There is a section for average +users, one for advanced users and experts, and an appendix with further +information and examples for those who want to understand {\KOMAScript} +thoroughly. + +\autoref{part:forAuthors} is intended for all {\KOMAScript} users. This means +that some information in this section is directed at newcomers to \LaTeX. In +particular, this part contains many examples that are intended to clarify the +explanations. Do not hesitate to try these examples yourself and discover how +{\KOMAScript} works by modifying them. That said, the {\KOMAScript} user guide +is not intended to be a {\LaTeX} primer. Those new to {\LaTeX} should look at +\emph{The Not So Short Introduction to {\LaTeXe}} \cite{lshort} or +\emph{{\LaTeXe} for Authors} \cite{latex:usrguide} or a {\LaTeX} reference +book. You will also find useful information in the many {\LaTeX} FAQs, +including the \emph{{\TeX} Frequently Asked Questions on the Web} +\cite{UK:FAQ}. Although the length of the \emph{{\TeX} Frequently Asked + Questions on the Web} is considerable, you should get at least a rough +overview of it and consult it in case you have problems, as well as this +\iffree{guide}{book}. + +\autoref{part:forExperts} is intended for advanced {\KOMAScript} users, those +who are already familiar with \LaTeX{} or who have been working with +{\KOMAScript} for a while and want to understand more about how {\KOMAScript} +works, how it interacts with other packages, and how to perform more +specialized tasks with it. For this purpose, we return to some aspects of the +class descriptions from \autoref{part:forAuthors} and explain them in more +detail. In addition we document some commands that are particularly intended +for advanced users and experts. This is supplemented by the documentation of +packages that are normally hidden from the user, insofar as they do their work +beneath the surface of the classes and user packages. These packages are +specifically designed to be used by authors of classes and packages. + +The appendix\iffree{, which can only be found in the German book version,}{} +contains information beyond that which is covered in \autoref{part:forAuthors} +and \autoref{part:forExperts}. Advanced users will find background information +on issues of typography to give them a basis for their own decisions. In +addition, the appendix provides examples for aspiring package authors. These +examples are not intended simply to be copied. Rather, they provide +information about planning and implementing projects, as well as some basic +\LaTeX{} commands for package authors. + +The guide's layout should help you read only those parts that are actually of +interest. Each class and package typically has its own chapter. +Cross-references to another chapter are thus usually also references to +another part of the overall package. However, since the three main classes +(\Class{scrbook}, \Class{scrrprt}, and \Class{scrartcl}) largely agree, they +are introduced together in \autoref{cha:maincls}. Differences between the +classes, e.\,g., for something that only affects the class +\Class{scrartcl}\OnlyAt{\Class{scrartcl}}, are clearly highlighted in the +margin, as shown here with \Class{scrartcl}. + +\begin{Explain} + The primary documentation for {\KOMAScript} is in German and has been + translated for your convenience; like most of the {\LaTeX} world, its + commands, environments, options, etc., are in English. In a few cases, the + name of a command may sound a little strange, but even so, we hope and + believe that with the help of this guide, {\KOMAScript} will be usable + and useful to you. +\end{Explain} + +At this point you should know enough to understand the guide. +It might, however, still be worth reading the rest of this chapter. + +\section{History of {\KOMAScript}}\seclabel{history} + +%\begin{Explain} +In the early 1990s, Frank Neukam needed a method to publish an instructor's +lecture notes. At that time {\LaTeX} was {\LaTeX}2.09 and there was no +distinction between classes and packages\,---\,there were only \emph{styles}. +Frank felt that the standard document styles were not good enough for his +work; he wanted additional commands and environments. At the same time he was +interested in typography and, after reading Tschichold's \emph{Ausgew\"ahlte + Aufs\"atze \"uber Fragen der Gestalt des Buches und der Typographie} +(Selected Articles on the Problems of Book Design and Typography) +\cite{JTsch87}, he decided to write his own document style\,---\,and not just +a one-time solution to his lecture notes, but an entire style family, one +specifically designed for European and German typography. Thus {\Script} was +born. + +Markus Kohm, the developer of {\KOMAScript}, came across {\Script} in December +1992 and added an option to use the A5 paper format. At that time neither the +standard style nor {\Script} provided support for A5 paper. Therefore it did +not take long until Markus made the first changes to {\Script}. This and other +changes were then incorporated into {\ScriptII}, released by Frank in December +1993. + +In mid-1994, {\LaTeXe} became available and brought with it many changes. +Users of {\ScriptII} were faced with either limiting their usage to +{\LaTeXe}'s compatibility mode or giving up {\Script} altogether. This +situation led Markus to put together a new {\LaTeXe} package, released on +7~July 1994 as {\KOMAScript}. A few months later, Frank declared {\KOMAScript} +to be the official successor to {\Script}. {\KOMAScript} originally provided +no \emph{letter} class, but this deficiency was soon remedied by Axel +Kielhorn, and the result became part of {\KOMAScript} in December 1994. Axel +also wrote the first true German-language user guide, which was followed by an +English-language guide by Werner Lemberg. + +Since then much time has passed. {\LaTeX} has changed in only minor ways, but +the {\LaTeX} landscape has changed a great deal; many new packages and classes +are now available and {\KOMAScript} itself has grown far beyond what it was in +1994. The initial goal was to provide good {\LaTeX} classes for +German-language authors, but today its primary purpose is to provide +more-flexible alternatives to the standard classes. {\KOMAScript}'s success +has led to e-mail from users all over the world, and this has led to many new +macros\,---\,all needing documentation; hence this ``small guide.'' +%\end{Explain} + + +\section{Special Thanks} +\seclabel{thanks} + +Acknowledgements in the introduction? No, the proper acknowledgements can be +found in the addendum. My comments here are not intended for the authors of +this guide\,---\,and those thanks should rightly come from you, the reader, +anyhow. I, the author of {\KOMAScript}, would like to extend my personal +thanks to Frank Neukam. Without his {\Script} family, {\KOMAScript} would not +have come about. I am indebted to the many persons who have contributed to +{\KOMAScript}, but with their indulgence, I would like to specifically mention +Jens-Uwe Morawski and Torsten Kr\"uger. The English translation of the guide +is, among many other things, due to Jens's untiring commitment. Torsten was +the best beta-tester I ever had. His work has particularly enhanced the +usability of \Class{scrlttr2} and \Class{scrpage2}. Many thanks to all who +encouraged me to go on, to make things better and less error-prone, or to +implement additional features. + +Special thanks go as well to the founders and members of DANTE, +Deutschsprachige Anwendervereinigung {\TeX}~e.V\kern-.18em, (the +German-Language {\TeX} User Group). Without the DANTE server, {\KOMAScript} +could not have been released and distributed. Thanks as well to everybody on +the {\TeX} newsgroups and mailing lists who answer questions and have helped +me provide support for {\KOMAScript}. + +My thanks also go to all those who have always encouraged me to go further and +to implement this or that feature better, with fewer flaws, or simply as an +extension. I would also like to thank the very generous donor who has given me +the most significant amount of money I have ever been paid for the work done +so far on \KOMAScript{}. + +\section{Legal Notes} +\seclabel{legal} + +{\KOMAScript} is released under the {\LaTeX} Project Public License. You will +find it in the file \File{lppl.txt}. An unofficial German-language translation +is also available in \File{lppl-de.txt} and is valid for all German-speaking +countries. + +\iffree{This document and the {\KOMAScript} bundle are provided ``as is'' and + without warranty of any kind.}% +{Please note: the printed version of this guide is not free under the + conditions of the {\LaTeX} Project Public Licence. If you need a free + version of this guide, use the version that is provided as part of the + {\KOMAScript} bundle.} + + +\section{Installation} +\seclabel{installation} + +The three most important \TeX{} distributions, Mac\TeX, MiK\TeX, and +\TeX{}~Live, make {\KOMAScript} available through their package management +software. You should install and update {\KOMAScript} using these tools, if +possible. Manual installation without using the package managers is described +in the file \File{INSTALL.txt}, which is part of every {\KOMAScript} +distribution. You should also read the documentation that comes with the +{\TeX} distribution you are using. + + +\section{Bug Reports and Other Requests} +\seclabel{errors} + +If you think you have found an error in the documentation or a bug in one of +the {\KOMAScript} classes, packages, or another part of {\KOMAScript}, please +do the following: First check on CTAN to see if a newer version of +{\KOMAScript} has been released. If a newer version is available, install this +new version and check if the problem persists. + +If the bug still occurs and your installation is fully up to date, please +provide a short {\LaTeX} file that demonstrates the problem. Such a file is +known as a minimal working example (MWE). You should include only minimal text +and use only the packages and definitions essential to demonstrate the +problem. Avoid using any unusual packages as much as possible. + +By preparing such an example it often becomes clear whether the problem is +truly a {\KOMAScript} bug or caused by something else. To check if another +package or class is actually causing the problem, you can also test your +example with the corresponding standard class instead of a {\KOMAScript} +class. If your problem still occurs, you should address your error report to +the author of the appropriate package than to the author of {\KOMAScript}. +Finally, you should carefully review the instructions for the appropriate +package, classes, and {\KOMAScript} component. A solution to your problem may +already exist, in which case an error report is unnecessary. + +If you think you have found a previously unreported error, or if for some +other reason you need to contact the author of {\KOMAScript}, don't forget the +following: + +\begin{itemize} +\item Does the problem also occur if a standard class is used instead of a + {\KOMAScript} class? In this case, the error is most likely not with + {\KOMAScript}, and it makes more sense to ask your question in a public + forum, a mailing list, or Usenet. +\item Which {\KOMAScript} version do you use? For related information, see the + \File{log} file of the \LaTeX{} run of any document that uses a + {\KOMAScript} class. +\item Which operating system and which \TeX{} distribution do you use? This + information might seem rather superfluous for a system-independent package + like {\KOMAScript} or {\LaTeX}, but time and again they have certainly been + shown to play a role. +\item What exactly is the problem or the error? Describe the problem. It's + better to be too detailed than too short. Often it makes sense to explain + the background. +\item What does a minimal working example look like? You can easily create one + by commenting out content and packages from the document step by step. The + result is a document that only contains the packages and parts necessary to + reproduce the problem. In addition, all loaded images should be replaced by + \Macro{rule} statements of the appropriate size. Before sending your + MWE,remove the commented-out parts, insert the command \Macro{listfiles} in + the preamble, and perform another {\LaTeX} run. At the end of the \File{log} + file, you will see an overview of the packages used. Add the MWE and the log + file to the end of your description of the problem. +\end{itemize} + +Do not send packages, PDF, PS, or DVI files. If the entire issue or bug +description, including the minimal example and the \File{log} file is larger +than a few tens of kilobytes, you're likely doing something wrong. + +If you've followed all these steps, please send your {\KOMAScript} (only) bug +report to \href{mailto:komascript@gmx.info}{komascript@gmx.info}. + +If you want to ask your question in a Usenet group, mailing list, or Internet +forum, you should follow the procedures mentioned above and include a minimal +working example as part of your question, but usually you don't need to +provide the \File{log}-file. Instead, just add the list of packages and +package versions from the \File{log}-file and, if your MWE compiles with +errors, you should quote those messages from the \File{log} file. + +Please note that default settings which are not typographically optimal do not +represent errors. For reasons of compatibility, defaults are preserved +whenever possible in new versions of {\KOMAScript}. Furthermore, typographical +best practices are partly a matter of language and culture, and so the default +settings of {\KOMAScript} are necessarily a compromise. + +\section{Additional Information} +\seclabel{moreinfos} + +Once you become familiar with {\KOMAScript}, you may want examples that show +how to accomplish more difficult tasks. Such examples go beyond the basic +instructional scope of this manual and so are not included. However, you will +find more examples on the website of the {\KOMAScript} Documentation Project +\cite{homepage}. These examples are designed for advanced {\LaTeX} users and +are not particularly suitable for beginners. The main language of the site +is German, but English is also welcome. + +\endinput +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "../guide.tex" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/japanlco.tex b/macros/latex/contrib/koma-script/source-doc/english/japanlco.tex new file mode 100644 index 0000000000..6503afae06 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/japanlco.tex @@ -0,0 +1,601 @@ +% ====================================================================== +% japanlco.tex +% Copyright (c) Gernot Hassenpflug and Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% japanlco.tex +% Copyright (c) Gernot Hassenpflug und Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about Japanise paper size, envelopes and letters +% Maintained by Gernot Hassenplug (with help from Markus Kohm) +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber japanische Papierformate, Umschläge und Briefe +% Verwaltet von Gernot Hassenplug (mit Unterstuetzung von Markus Kohm) +% +% ====================================================================== +% +% Special Note: Originally in English by Gernot Hassenpflug as part of +% KOMA-Script bundle. +% + +\KOMAProvidesFile{japanlco.tex} + [$Date: 2018-03-21 10:37:34 +0100 (Wed, 21 Mar 2018) $ + KOMA-Script guide (appendix: japanlco)] + +\appendix + +\chapter[{Japanese Letter Support for \Class{scrlttr2}}] +{Japanese Letter Support for \Class{scrlttr2}\footnote{This chapter was + originally written by Gernot Hassenpflug.}} +\labelbase{japanlco} +\Index{letter>Japanese} + +Since version~2.97e, \Class{scrlttr2} has provided support not only for +European ISO~envelope sizes and window envelopes but also for Japanese +envelopes, in the form of \File{lco} files which set the layout of the paper. +This chapter documents this support and provides a few examples of using the +provided \File{lco} files to print letters intended for Japanese envelopes. + +\section{Japanese standard paper and envelope sizes} +\seclabel{PaperEnvelope} + +The Japan Industrial Standard (JIS) defines paper sizes and envelope sizes for +national use, which both overlap with the ISO and US sizes and include some +metricated traditional Japanese sizes. Envelope window size and position have +not been defined internationally as yet; hence, there exists a plethora of +envelopes with differing window sizes and positions. The following subsections +give some background on Japanese paper sizes and envelopes. + +\subsection{Japanese paper sizes} +\seclabel{Paper} + +The JIS defines two main series of paper sizes: +\begin{enumerate} +\item the JIS A-series, which is identical to the ISO A-series but + with slightly different tolerances; and +\item the JIS B-series, which is not identical to the ISO/DIN + B-series. Instead, the JIS B-series paper has an area 1.5 times that + of the corresponding A-series paper, so that the length ratio is + approximately 1.22 times the length of the corresponding A-series + paper. The aspect ratio of the paper is the same as for A-series + paper. +\end{enumerate} + +Both JIS A-series and B-series paper is widely available in Japan and most +photocopiers and printers are loaded with at least A4 and B4 paper. The +ISO/JIS~A-series and the different ISO and JIS~B-series sizes are listed in +\autoref{tab:japanlco.jpapersizes1}. + +%% ISO/JIS standard comparison +\begin{table} +\begin{minipage}{\textwidth}\renewcommand*{\footnoterule}{}% +\centering +\caption[{ISO and JIS standard paper sizes}] +{ISO and JIS standard paper sizes}%; trim sizes are given with width +% preceding height, both in millimeters} +\begin{tabular}{lr@{$\times$}llr@{$\times$}llr@{$\times$}l}\toprule +ISO/JIS\,A & \multicolumn2l{W$\times$H in mm} & ISO\,B & +\multicolumn2l{W$\times$H in mm} & JIS\,B & \multicolumn2l{W$\times$H + in mm} \\ \midrule +A0 & 841 & 1189 & B0 & 1000 & 1414 & B0 & 1030 & 1456 \\ +A1 & 594 & 841 & B1 & 707 & 1000 & B1 & 728 & 1030 \\ +A2 & 420 & 594 & B2 & 500 & 707 & B2 & 515 & 728 \\ +A3 & 297 & 420 & B3 & 353 & 500 & B3 & 364 & 515 \\ +A4 & 210 & 297 & B4 & 250 & 353 & B4 & 257 & 364 \\ +A5 & 148 & 210 & B5 & 176 & 250 & B5 & 182 & 257 \\ +A6 & 105 & 148\footnotemark[1] & B6 & 125 & 176 & B6 & 128 & 182 \\ +A7 & 74 & 105 & B7 & 88 & 125 & B7 & 91 & 128 \\ +A8 & 52 & 74 & B8 & 62 & 88 & B8 & 64 & 91 \\ +A9 & 37 & 52 & B9 & 44 & 62 & B9 & 45 & 64 \\ +A10 & 26 & 37 & B10 & 31 & 44 & B10 & 32 & 45 \\ +A11 & 18 & 26 & & \multicolumn2l{} & B11 & 22 & 32 \\ +A12 & 13 & 18 & & \multicolumn2l{} & B12 & 16 & 22 \\ +\bottomrule +\end{tabular} +\label{tab:japanlco.jpapersizes1} +\footnotetext[1]{Although Japan's official postcard size + appears to be A6, it is actually 100$\times$148\Unit{mm}, 5 millimetres + narrower than A6.} +\end{minipage} +\end{table} + +There are also a number of traditional paper sizes, which are now used +mostly only by printers. The most common of these old series are the +Shiroku-ban and the Kiku paper sizes. The difference of these types compared +to the JIS~B-series are shown in \autoref{tab:japanlco.jpapersizes2}. +Finally, there are some common stationery sizes, listed in +\autoref{tab:japanlco.jpapersizes3}. You may come across these when buying +stationery. + +%% JIS B-series variants +\begin{table} +\centering +\caption[{Japanese B-series variants}] +{Japanese B-series variants}%; trim sizes are given with width +% preceding height, both in millimeters} +\begin{tabular}{lr@{$\times$}lr@{$\times$}lr@{$\times$}l}\toprule +Format & \multicolumn{2}{l}{JIS B-series} & \multicolumn{2}{l}{Shiroku-ban} & +\multicolumn{2}{l}{Kiku} \\ +Size & \multicolumn{2}{l}{W$\times$H in mm} & \multicolumn{2}{l}{W$\times$H in mm} & \multicolumn{2}{l}{W$\times$H in mm} \\ \midrule +4 & 257 & 364 & 264 & 379 & 227 & 306 \\ +5 & 182 & 257 & 189 & 262 & 151 & 227 \\ +6 & 128 & 182 & 189 & 262 & \multicolumn2l{} \\ +7 & 91 & 128 & 127 & 188 & \multicolumn2l{} \\ +\bottomrule +\end{tabular} +\label{tab:japanlco.jpapersizes2} +\end{table} + +%% Japanese contemporary sizes +\begin{table} +\centering +\caption[{Main Japanese contemporary stationery}] +{Main Japanese contemporary stationery}%; trim sizes are given with width +% preceding height, both in millimeters} +\begin{tabular}{lr@{$\times$}ll}\toprule +Name & \multicolumn{2}{l}{W$\times$H in mm} & Usage and Comments \\ \midrule +Kokusai-ban & 216 & 280 & ``international size'' \\ + & \multicolumn2l{} & i.\,e., US letter size \\ +Semi B5 or & 177 & 250 & ``standard size'' \\ +Hyoujun-gata & \multicolumn2l{} & (formerly called ``Hyoujun-gata''),\\ + & \multicolumn2l{} & semi B5 is almost identical to ISO B5 \\ +Oo-gata & 177 & 230 & ``large size'' \\ +Chuu-gata & 162 & 210 & ``medium size'' \\ +Ko-gata & 148 & 210 & ``small size'' \\ +Ippitsu sen & 82 & 185 & ``note paper'' \\ +\bottomrule +\end{tabular} +\label{tab:japanlco.jpapersizes3} +\end{table} + +The ISO~C-series is not a paper size as such but a standard developed for +envelopes and intended for the corresponding A-series paper. It is discussed +in the next subsection. + +%\clearpage +\subsection{Japanese envelope sizes} +\seclabel{envelope} + +ISO (International Organization for Standardization) envelope sizes are the +official international metric envelope sizes; however, Japan uses also JIS and +metricated traditional envelope sizes. Sizes identified as non-standard do not +conform to Universal Postal Union requirements for correspondence envelopes. + +\subsubsection{ISO envelope sizes} +The ISO C-series envelope sizes, and possibly B-series envelope sizes, are +available in Japan. C-series envelopes can hold the corresponding A-series +paper, while B-series envelopes can hold either the corresponding A-series +paper or the corresponding C-series envelope. The ISO envelope sizes commonly +for Japan are listed in \autoref{tab:japanlco.jenvsizes1}, with the +corresponding paper they are intended for, and the folding required. + +%%%%%% JIS Japanese Envelopes + +%% ISO envelope sizes +%{\onelinecaptionsfalse +%\begin{longtable}{lr@{$\times$}ll} +\begin{table} +\begin{minipage}{\textwidth}\renewcommand*{\footnoterule}{} +\caption[{Japanese ISO envelope sizes}] +{Japanese ISO envelope sizes}%; trim sizes are given with width +% preceding height, both in millimeters% +\label{tab:japanlco.jenvsizes1}% +%}\\ +\begin{tabular}{lr@{$\times$}ll} +\toprule +Name & \multicolumn2l{W$\times$H in mm} & Usage and Comments \\ +%\endfirsthead +%\caption[]{Japanese envelope sizes (\emph{continued})}\\ +%\toprule +%Name & \multicolumn2l{W$\times$H in mm} & Usage and Comments \\ +%\midrule +%\endhead +%\midrule +%\multicolumn{4}{r@{}}{\dots}\\ +%\endfoot +%\bottomrule +%\endlastfoot +\midrule +C0 & 917 & 1297 & for flat A0 sheet; \\* + & \multicolumn2l{} & non-standard \\ +C1 & 648 & 917 & for flat A1 sheet; \\* + & \multicolumn2l{} & non-standard \\ +C2 & 458 & 648 & for flat A2 sheet, A1 sheet folded in half; \\* + & \multicolumn2l{} & non-standard \\ +C3 & 324 & 458 & for flat A3 sheet, A2 sheet folded in half; \\* + & \multicolumn2l{} & non-standard \\ +B4 & 250 & 353 & C4 envelope \\ +C4 & 229 & 324 & for flat A4 sheet, A3 sheet folded in half; \\* + & \multicolumn2l{} & very common; non-standard \\ +B5 & 176 & 250 & C5 envelope \\ +C5 & 162 & 229 & for flat A5 sheet, A4 sheet folded in half; \\* + & \multicolumn2l{} & very common; non-standard \\ +B6 & 125 & 176 & C6 envelope; A4 folded in quarters; \\* + & \multicolumn2l{} & very common \\ +C6 & 114 & 162 & for A5 sheet folded in half, \\* + & \multicolumn2l{} & A4 sheet folded in quarters; \\* + & \multicolumn2l{} & very common \\ +C6/C5 & 114 & 229 & A4 sheet folded in thirds; \\* + & \multicolumn2l{} & very common \\ +C7/6 & 81 & 162 & for A5 sheet folded in thirds; uncommon; \\* + & \multicolumn2l{} & non-standard \\ +C7 & 81 & 114 & for A5 sheet folded in quarters; uncommon; \\* + & \multicolumn2l{} & non-standard \\ +C8 & 57 & 81 & \\ +C9 & 40 & 57 & \\ +C10 & 28 & 40 & \\ +DL\footnotemark[1] & 110 & 220 & for A4 sheet folded in thirds, \\* + & \multicolumn2l{} & A5 sheet folded in half lengthwise; \\* + & \multicolumn2l{} & very common \\ +%\end{longtable}}\vspace{-\baselineskip} +\bottomrule +\end{tabular} +%\noindent\begin{minipage}{\textwidth} +%\renewcommand*{\footnoterule}{} +\footnotetext[1]{Although DL is not part of the + ISO C-series, it is a very widely used standard size. DL, probably + at one time the abbreviation of DIN Lang (Deutsche Industrie Norm, + long), is now identified as ``Dimension Lengthwise'' by ISO 269.} +\end{minipage} +\end{table} + +\subsubsection{JIS and traditional envelope sizes} +The JIS classifies envelopes into three categories based on the +general shape of the envelope and where the flap is located: + +\begin{description} +\item[You:] these envelopes are of the `commercial' type, rectangular, + and correspond largely to Western envelope sizes, and also have the + flap on the long dimension (`Open Side') in `commercial' or `square' + style. `You-kei' means Western-style. +\item[Chou:] these are also `commercial' type envelopes, with the same + shape as the corresponding `You' type, but with the flap on the + short dimension (`Open End') in `wallet' style. `Chou-kei' means + long-style. +\item[Kaku:] these envelopes are more square in appearance and are + made for special use, and correspond to `announcement' + envelopes. The flap is on the long side, in the `square' style. They + generally do not fall under the ordinary envelope postage + rates. `Kaku-kei' means square-style. +\end{description} + +The main JIS and traditional envelope sizes, the corresponding paper, and +its required folding are listed in \autoref{tab:japanlco.jenvsizes2}. + +%% JIS and other envelope sizes +%\begin{table} +%\begin{minipage}{\textwidth}\renewcommand*{\footnoterule}{}% +%\centering +{\onelinecaptionsfalse +\begin{longtable}{llr@{$\times$}ll} +\caption[{Japanese envelope sizes 3}] +{Japanese JIS and other envelope sizes\label{tab:japanlco.jenvsizes2}}% +%; trim sizes are given with width preceding height, both in millimeters}% +\\ +%\begin{tabular}{llr@{$\times$}ll} +\toprule +JIS & Name & \multicolumn2l{W$\times$ in mm} & Usage and Comments \\ +\endfirsthead +\caption[]{Japanese JIS and other envelope sizes (\emph{continued})}\\ +\toprule +JIS & Name & \multicolumn2l{W$\times$ in mm} & Usage and Comments \\ +\midrule +\endhead +\midrule +\multicolumn{5}{r@{}}{\dots}\\ +\endfoot +\bottomrule +\endlastfoot +\midrule + & Chou 1 & 142 & 332 & for A4 folded in half lengthwise;\\* + & & \multicolumn2l{} & non-standard \\ +Yes & Chou 2 & 119 & 277 & for B5 folded in half lengthwise;\\* + & & \multicolumn2l{} & non-standard \\ +Yes & Chou 3 & 120 & 235 & for A4 folded in thirds;\\* + & & \multicolumn2l{} & very common \\ + & Chou 31 & 105 & 235 & for A4 folded in thirds \\ + & Chou 30 & 92 & 235 & for A4 folded in fourths\footnotemark[3] \\ + & Chou 40 & 90 & 225 & for A4 folded in fourths\footnotemark[3] \\ +Yes & Chou 4 & 90 & 205 & for JIS B5 folded in fourths\footnotemark[3];\\* + & & \multicolumn2l{} & very common \\ + & Kaku A3 & 320 & 440 & for A3 flat, A2 folded in half\\* + & & \multicolumn2l{} &; non-standard \\ + & Kaku 0 & 287 & 382 & for B4 flat, B3 folded in half;\\* + & & \multicolumn2l{} & non-standard \\ + & Kaku 1 & 270 & 382 & for B4 flat, B3 folded in half;\\* + & & \multicolumn2l{} & non-standard \\ +Yes & Kaku 2 & 240 & 332 & for A4 flat, A3 folded in half;\\* + & & \multicolumn2l{} & non-standard \\ + & Kaku & 229 & 324 & for A4 flat, A3 folded in half;\\* + & Kokusai A4 & \multicolumn2l{} & same size as ISO C4;\\* + & & \multicolumn2l{} & non-standard \\ +Yes & Kaku 3 & 216 & 277 & for B5 flat, B4 folded in half;\\* + & & \multicolumn2l{} & non-standard \\ +Yes & Kaku 4 & 197 & 267 & for B5 flat, B4 folded in half;\\* + & & \multicolumn2l{} & non-standard \\ +Yes & Kaku 5 & 190 & 240 & for A5 flat, A4 folded in half\\* + & & \multicolumn2l{} &; non-standard \\ +Yes & Kaku 6 & 162 & 229 & for A5 flat, A4 folded in half;\\* + & & \multicolumn2l{} & same size as ISO C5;\\* + & & \multicolumn2l{} & non-standard \\ +Yes & Kaku 7 & 142 & 205 & for B6 flat, B5 folded in half;\\* + & & \multicolumn2l{} & non-standard \\ +Yes & Kaku 8 & 119 & 197 & pay envelope (for salaries, wages)\\* + & & \multicolumn2l{} &; common for direct mail \\ +Yes & You 0\footnotemark[1] & 235 & 120 & for A4 folded in thirds;\\* + & or Furusu 10 & \multicolumn2l{} & same size as Chou 3 but with \\* + & & \multicolumn2l{} & `Open Side' style flap \\ + & You 0\footnotemark[1] & 197 & 136 & for kyabine\footnotemark[1] (cabinet) size photos \\* + & & \multicolumn2l{} & (165\Unit{mm}$\times$120\Unit{mm});\\* + & & \multicolumn2l{} & non-standard \\ + & You 1\footnotemark[2] & 176 & 120 & for B5 folded in quarters \\ + & You 1\footnotemark[2] & 173 & 118 & for B5 folded in quarters \\ +Yes & You 2 & 162 & 114 & for A5 folded in half,\\* + & & \multicolumn2l{} & A4 folded in quarters;\\* + & & \multicolumn2l{} & same size as ISO C6 \\ +Yes & You 3 & 148 & 98 & for B6 folded in half \\ +Yes & You 4 & 235 & 105 & for A4 folded in thirds \\ +Yes & You 5 & 217 & 95 & for A4 folded in fourths\footnotemark[3] \\ +Yes & You 6 & 190 & 98 & for B5 folded in thirds \\ +Yes & You 7 & 165 & 92 & for A4 folded in quarters,\\* + & & \multicolumn2l{} & B4 folded in quarters \\ +%\bottomrule +%\end{tabular}% +\end{longtable}}\vskip-\baselineskip +\noindent\begin{minipage}{\textwidth}\renewcommand*{\footnoterule}{}% + \footnotetext[1]{Because two different sizes are called You~0, the + JIS You~0 is normally called Furusu~10; Furusu (`fools') derives + from `foolscap'; Kyabine is a metricated traditional Japanese + size.}% + \footnotetext[2]{Two slightly different sizes are sold as You~1; the + smaller size (173\Unit{mm}$\times$118\Unit{mm}) is the + paper-industry standard size.}% + \footnotetext[3]{Twice in the same direction.}% +\end{minipage} +%\end{table} + + +\subsubsection{Window variants} +There are a large number of window subtypes existing within the +framework explained in the previous subsection. The most common window +sizes and locations are listed in \autoref{tab:japanlco.jwinsizes1}. + +%% my table of windows +\begin{table} +\begin{minipage}{\textwidth}\renewcommand*{\footnoterule}{} +\centering +\caption[{Supported Japanese envelope types, window sizes, and + locations}] {Supported Japanese envelope types, window sizes, and + locations.} +\begin{tabular}{lllll} +\toprule +Envelope type & Window name\footnotemark[1] & - size\footnotemark[2] & - location\footnotemark[3] & \File{lco} file\footnotemark[4] \\ +\midrule +Chou 3 & A & 90$\times$45 & l 23, t 13 & \Option{NipponEL} \\ +Chou 3 & F & 90$\times$55 & l 23, t 13 & \Option{NipponEH} \\ +Chou 3 & Hisago & 90$\times$45 & l 23, t 12 & \Option{NipponEL} \\ +Chou 3 & Mutoh 1 & 90$\times$45 & l 20, t 11 & \Option{NipponEL} \\ +Chou 3 & Mutoh 101 & 90$\times$55 & l 20, t 11 & \Option{NipponEH} \\ +Chou 3 & Mutoh 2 & 80$\times$45 & l 20, t 11 & \Option{NipponEL} \\ +Chou 3 & Mutoh 3 & 90$\times$45 & l 25, t 11 & \Option{NipponLL} \\ +Chou 3 & Mutoh 301 & 90$\times$55 & l 25, t 11 & \Option{NipponLH} \\ +Chou 3 & Mutoh 6 & 100$\times$45 & l 20, t 11 & \Option{NipponEL} \\ +Chou 3 & v.2\footnotemark[5] & 90$\times$45 & l 24, t 12 & \Option{NipponLL} \\ +Chou 40 & A & 90$\times$45 & l 23, t 13 & \Option{NipponEL} \\ +Chou 4 & A & 90$\times$45 & l 23, t 13 & \Option{NipponEL} \\ +Chou 4 & B & 80$\times$45 & l 98, t 28 & \Option{NipponRL} \\ +Chou 4 & C & 80$\times$45 & l 21, t 13 & \Option{NipponEL} \\ +Chou 4 & K & 80$\times$45 & l 22, t 13 & \Option{NipponEL} \\ +Chou 4 & Mutoh 1 & 80$\times$45 & l 40, b 11 & --- \\ +Chou 4 & Mutoh 2 & 80$\times$45 & l 20, t 11 & \Option{NipponEL} \\ +Chou 4 & Mutoh 3 & 90$\times$45 & l 20, t 11 & \Option{NipponEL} \\ +Chou 4 & Mutoh 6 & 100$\times$45 & l 20, t 11 & \Option{NipponEL} \\ +Chou 4 & v.2\footnotemark[5] & 80$\times$45 & l 20, t 12 & \Option{NipponEL} \\ +Chou 4 & v.3\footnotemark[5] & 90$\times$45 & l 20, t 12 & \Option{NipponEL} \\ +Kaku A4 & v.1\footnotemark[6] & 95$\times$45 & l 20, t 24 & \Option{KakuLL} \\ +You 0 & Cruise 6 & 90$\times$45 & l 20, t 12 & \Option{NipponEL} \\ +You 0 & Cruise 601 & 90$\times$55 & l 20, t 12 & \Option{NipponEH} \\ +You 0 & Cruise 7 & 90$\times$45 & l 20, b 12 & \Option{NipponEL} \\ +You 0 & Cruise 8 & 90$\times$45 & l 24, t 12 & \Option{NipponLL} \\ +You 0 & v.2\footnotemark[5] & 90$\times$45 & l 24, t 12 & \Option{NipponEL} \\ +You 0 & v.3\footnotemark[5] & 90$\times$45 & l 23, t 13 & \Option{NipponEL} \\ +You 4 & A & 90$\times$45 & l 23, t 13 & \Option{NipponEL} \\ +\bottomrule +\end{tabular}% +\footnotetext[1]{Names (acting as subtype information) are taken from + the manufacturer catalogue.}% +\footnotetext[2]{Given as width by height in millimetres.}% +\footnotetext[3]{Given as offset from left (l) or right (r), followed by + offset from bottom (b) or top (t).}% +\footnotetext[4]{The \File{lco} file, which provides support (see + \autoref{tab:japanlco.lcolist}).}% +\footnotetext[5]{In the absence of any other information, a numerical + variation number for the subtype name is provided.}% +\footnotetext[6]{Dimensions apply when envelope is held in portrait mode.}% +\label{tab:japanlco.jwinsizes1}% +\end{minipage} +\end{table} + +\section{Provided \File{lco} files} +In \Class{scrlttr2}, support is provided for Japanese envelope and +window sizes through a number of \File{lco} files which customize the +fold marks required for different envelope sizes and subvariants with +different window positions and sizes. + +The \File{lco} files provided together with the envelope types that they +support are listed at \autoref{tab:japanlco.lcolist}. See +\autoref{tab:japanlco.jenvsizes1} for the full list of Japanese envelopes and +the paper they take, and \autoref{tab:japanlco.jwinsizes1} for the common +window sizes and locations. The rightmost column indicates which \File{lco} +file provides the support. + +The tolerances for location is about 2\Unit{mm}, so it is possible to +accommodate all the envelope and window variants of +\autoref{tab:japanlco.jwinsizes1} with just a small number of \File{lco} +files. The difference between Chou/You~3 and Chou/You~4 is determined +by paper size. + +\begin{table} +\begin{minipage}{\textwidth}\renewcommand*{\footnoterule}{} +\centering +\caption{\File{lco} files provided by \Class{scrlttr2} for Japanese window + envelopes} +\begin{tabular}{llll} +\toprule +\File{lco} file & Supported & Window size\footnotemark[1] & Window +location\footnotemark[1] \\ +\midrule +\Option{NipponEL} & Chou/You 3 and 4 & 90$\times$45 & l 22, t 12 \\ +\Option{NipponEH} & Chou/You 3 and 4 & 90$\times$55 & l 22, t 12 \\ +\Option{NipponLL} & Chou/You 3 and 4 & 90$\times$45 & l 25, t 12 \\ +\Option{NipponLH} & Chou/You 3 and 4 & 90$\times$55 & l 25, t 12 \\ +\Option{NipponRL} & Chou/You 3 and 4 & 90$\times$45 & l 98, t 28 \\ +\Option{KakuLL} & Kaku A4 & 90$\times$45 & l 25, t 24 \\ +\bottomrule +\end{tabular}% +\label{tab:japanlco.lcolist}% +\footnotetext[1]{Window size is given in width by height, location as + offset from left (l) or right (r), followed by offset from bottom (b) or top + (t). All Values in millimeters.}% +\end{minipage} +\end{table} + +\section{Examples of Japanese Letter Usage} +Suppose you want to write a letter on A4 size paper and will post it in +a Japanese envelope. If the envelope has no window, then it is enough +to determine whether the envelope dimensions match a European +one\,---\,the standard \File{DIN.lco} style may suffice for many such +cases. + +If you wish to use a windowed envelope, please note that owing to the +large variety, not all existing subvariants are currently +supported. If you notice that the window dimensions and positions +of your particular windowed envelope differ significantly (more than +approximately 2\Unit{mm}) from those of any of the supported subvariants, +please contact the author of {\KOMAScript} to obtain support as soon as +possible, and in the meantime, create a customized \File{lco} file for your +own use, using one of the existing ones as a template and reading the +{\KOMAScript} documentation attentively. + +If your window envelope subvariant is supported, this is how you would +go about using it: simply select the required \File{lco} file and +activate the horizontal and vertical fold marks as required. Another, +independent, mark is the hole-punch mark, which divides a sheet in two +horizontally for easy punching and filing. + +\subsection{Example 1:} +Your favourite envelope happens to be a You~3 with window subvariant +Mutoh~3, left over from when the company had its previous name, and +you do not wish them to go to waste. Thus, you write your letter with +the following starting code placed before the letter environment: + +\begin{lstlisting} +\LoadLetterOption{NipponLL}\setkomavar{myref}{NipponLL} +\begin{letter}{Martina Muster\\Address} +... +\end{letter} +\end{lstlisting} + +\subsection{Example 2:} +You originally designed your letter for a You~3 envelope, but suddenly +you get handed a used electrical company envelope with cute manga +characters on it which you simply cannot pass up. Surprisingly, you +find it conforms fairly closely to the Chou~4 size and C window +subvariant, such that you realize you can alter the following in your +document preamble: + +\begin{lstlisting} +\LoadLetterOption{NipponEL}\setkomavar{myref}{NipponEL} +\begin{letter}{Martina Muster\\Address} +... +\end{letter} +\end{lstlisting} + +Now, \Class{scrlttr2} automatically reformats the letter for you to +fit the required envelope. + +% \LoadLetterOption{NipponEL}\setkomavar{myref}{NipponEL} +% \begin{letter}{Martina Muster\\at and\\there\\and one\\more} +% \opening{Dear Martina,} +% \lipsum[1-2] +% \closing{Regards} +% \ps{PS: Forgotten to say.} +% \encl{Something} +% \cc{Somebody\\Someone} +% \end{letter} + +% \LoadLetterOption{NipponEH}\setkomavar{myref}{NipponEH} +% \begin{letter}{Martina Muster\\at and\\there\\and one\\more} +% \opening{Dear Martina,} +% \lipsum[1-2] +% \closing{Regards} +% \end{letter} + +% \LoadLetterOption{NipponLL}\setkomavar{myref}{NipponLL} +% \begin{letter}{Martina Muster\\at and\\there\\and one\\more} +% \opening{Dear Martina,} +% \lipsum[1-2] +% \closing{Regards} +% \end{letter} + +% \LoadLetterOption{NipponLH}\setkomavar{myref}{NipponLH} +% \begin{letter}{Martina Muster\\at and\\there\\and one\\more} +% \opening{Dear Martina,} +% \lipsum[1-2] +% \closing{Regards} +% \end{letter} + +%% comparison of US common paper sizes, wider and shorter +% Millimetres Inches Points +% Height Width Height Width Height Width +% Letter 279.4 215.9 11.00 8.50 792 612 +% Legal 355.6 215.9 14.00 8.50 1008 612 +% Ledger 431.8 279.4 17.00 11.00 1224 792 +% Tabloid 279.4 431.8 11.00 17.00 792 1224 +% Executive 266.7 184.1 10.55 7.25 756 522 + +%% English foolscap is here for reference +% Millimetres Inches Points +% Height Width Height Width Height Width +%Foolscap 419 336 16.50 13.25 1188 954 +% + +%% nice reference on envelope types and windows in the US +%http://www.belightsoft.com/products/companion/paper/envelopes.php + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: t +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/linkalias.tex b/macros/latex/contrib/koma-script/source-doc/english/linkalias.tex new file mode 120000 index 0000000000..dd3b49476e --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/linkalias.tex @@ -0,0 +1 @@ +../linkalias.tex
\ No newline at end of file diff --git a/macros/latex/contrib/koma-script/source-doc/english/preface.tex b/macros/latex/contrib/koma-script/source-doc/english/preface.tex new file mode 100644 index 0000000000..873f303987 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/preface.tex @@ -0,0 +1,125 @@ +% ====================================================================== +% preface.tex +% Copyright (c) Markus Kohm, 2008-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% preface.tex +% Copyright (c) Markus Kohm, 2008-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== + +\KOMAProvidesFile{preface.tex} + [$Date: 2018-03-28 11:44:09 +0200 (Wed, 28 Mar 2018) $ + Preface to version 3.25] +\translator{Markus Kohm\and Karl Hagen} + +% Date of the translated German file: 2018-03-12 + +\addchap{Preface to \KOMAScript~3.25} + +The \KOMAScript~3.25 manual,\---\,especially the German version\,---\,once +again benefits from the fact that a new edition of the print version +\cite{book:komascript} and the eBook version \cite{ebook:komascript} will be +published at almost the same time as this version. This has led to many +improvements which also affect the free manual, in both the German and the +English version. + +One of these improvements is the linking to the explanations of commands, +environments, options, etc., within the manual. To avoid the temptation to +jump to the beginning of the explanation within the explanation itself, and +so to avoid reading recursively, as it were, these links only take effect +if they actually lead away from the current location. + +Another important improvement to the English guide has been accomplished by +Karl Hagen, who has newly translated the entire manual. Many, many thanks to +him! Additional editors or translators, however, would still be welcome! + +\iffree{Readers of this free, screen version, however, still have to live with + some restrictions. So some information\,---\,mainly intended for advanced + users or capable of turning an ordinary user into an advanced one\,---\,is + reserved for the printed book, which currently exists only in German. As a + result, some links in this manual lead to a page that simply mentions this + fact. In addition, the free version is scarcely suitable for making a + hard-copy. The focus, instead, is on using it on screen, in parallel with + the document you are working on. It still has no optimized wrapping but is + almost a first draft, in which both the paragraph and page breaks are in + some cases quite poor. Corresponding optimizations are reserved for the + German book editions.}{} + +It is not just about the manual that I now receive little criticism. For the +classes and packages as well, there are hardly any requests for new features. +For me, this means that my knowledge about user desires stagnates. So for a +few years, I mostly implemented things that I thought could be useful. +However, the feedback that I have received about these new possibilities was +largely limited to complaints that old \emph{hacks} based on undocumented +\KOMAScript{} features sometimes no longer work. Little was said about the +happiness that such dirty workarounds were no longer necessary. Therefore, I +have decided to limit extensions and improvements to \KOMAScript{} more and +more to those things that are explicitly requested by users. Could it be that +\KOMAScript{}, after only 25 years, has reached the level that it fulfils all +desires? + +Unfortunately, the declining number of error reports is not purely gratifying. +Over this period, I have often observed that those who discover a problem no +longer report it directly to me but work around it with the help of some +Internet forums. Often, there are more or less ingenious workarounds in these +forums. Although this is generally helpful, it unfortunately, as a rule, +causes the problem to remain unreported and therefore never really eliminated. +It goes without saying that such workarounds can sometimes become a problem +themselves, as mentioned in the previous paragraph. + +Thankfully, there are third parties who occasionally point out such issues. +This applies to individual contributions in a very few forums. Direct contact +with the person for whom the problem occurred is in this case usually not +possible, although it would sometimes be desirable. + +Therefore, let me please ask again explicitly that you report all suspected +bugs directly, either in German or in English. Linguistic perfection is less +important. The message should be reasonably understandable and the problem +comprehensible. A code example that is as short as possible is generally +independent of the language used. With direct contact, I can ask further +questions, if necessary. Please do not rely on anyone else to report the +problem at some point. Assume that it will only be fixed if you report it +yourself. More about error messages can be found in the first chapter of the +manual. + +\bigskip\noindent +Markus Kohm, Neckarhausen in the March rain, 2018. + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% ispell-local-dictionary: "english" +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: + diff --git a/macros/latex/contrib/koma-script/source-doc/english/scraddr.tex b/macros/latex/contrib/koma-script/source-doc/english/scraddr.tex new file mode 100644 index 0000000000..ac5ef90a5e --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scraddr.tex @@ -0,0 +1,261 @@ +% ====================================================================== +% scraddr.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scraddr.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scraddr of the KOMA-Script guide +% Maintained by Jens-Uwe Morawski (with help from Markus Kohm) +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber scraddr in der KOMA-Script-Anleitung +% Verwaltet von Jens-Uwe Morawski (mit Unterstuetzung von Markus Kohm) +% +% ====================================================================== + +\KOMAProvidesFile{scraddr.tex} + [$Date: 2018-03-27 11:46:14 +0200 (Tue, 27 Mar 2018) $ + KOMA-Script guide (chapter: scraddr)] +\translator{Jens-Uwe Morawski\and Gernot Hassenpflug\and Markus Kohm\and Karl + Hagen} + +% Date of the translated German file: 2018-02-05 + +\chapter{Accessing Address Files with \Package{scraddr}}% +\labelbase{scraddr}% +\BeginIndexGroup +\BeginIndex{Package}{scraddr} + +The \Package{scraddr} package is a small extension to \KOMAScript{}'s letter +class and letter package. Its goal is to make access to the data in address +files easier and more flexible. + +\section{Overview}\seclabel{overview} +Basically, the package provides a new loading mechanism for address files +consisting of \DescRef{\LabelBase.cmd.adrentry} and the newer +\DescRef{\LabelBase.cmd.addrentry} format entries, as described in +\autoref{cha:scrlttr2} starting on \DescPageRef{scrlttr2.cmd.adrentry}. + +\begin{Declaration} +\Macro{InputAddressFile}\Parameter{file name} +\end{Declaration}% +The \Macro{InputAddressFile} command is the main command of \Package{scraddr}. +It reads the content of the address file\Index{address>file} given as its +parameter. If the file is not found, an error message is issued. + +For each entry in this address file, the command generates a set of +macros to access the data. For large address files, this will require +a lot of \TeX{} memory. +% +\EndIndexGroup + +\begin{Declaration}% + \Macro{adrentry}\Parameter{Lastname}\Parameter{Firstname}% + \Parameter{Address}\Parameter{Phone}\Parameter{F1}\Parameter{F2}% + \Parameter{Comment}\Parameter{Key}% + % + \Macro{addrentry}\Parameter{Lastname}\Parameter{Firstname}% + \Parameter{Address}\Parameter{Phone}\Parameter{F1}\Parameter{F2}% + \Parameter{F3}\Parameter{F4}\Parameter{Key}% + % + \Macro{adrchar}\Parameter{initial}% + \Macro{addrchar}\Parameter{initial}% +\end{Declaration}% +The structure of the address entries in the address file was discussed in +detail in \autoref{sec:scrlttr2.addressFile}, starting on +\DescPageRef{scrlttr2.cmd.adrentry}. The subdivision of the address file with +the help of \Macro{adrchar} or \Macro{addrchar}, also discussed there, has no +meaning for \Package{scraddr} and is simply ignored by the package.% +\EndIndexGroup + +\begin{Declaration} + \Macro{Name}\Parameter{key}% + \Macro{FirstName}\Parameter{key}% + \Macro{LastName}\Parameter{key}% + \Macro{Address}\Parameter{key}% + \Macro{Telephone}\Parameter{key}% + \Macro{FreeI}\Parameter{key}% + \Macro{FreeII}\Parameter{key}% + \Macro{Comment}\Parameter{key}% + \Macro{FreeIII}\Parameter{key}% + \Macro{FreeIV}\Parameter{key} +\end{Declaration}% +These commands give access to data of your address file. The last parameter, +that is, parameter 8 for the \DescRef{\LabelBase.cmd.adrentry} entry and +parameter 9 for the \DescRef{\LabelBase.cmd.addrentry} entry, is the +identifier of an entry, thus the \PName{key} has to be unique and non-empty. +To guarantee safe functioning, you should use only ASCII letters in the +\PName{key}. + +Furthermore, if the file contains more than one entry with the same +\PName{key} name, the last occurrence will be used.% +% +\EndIndexGroup + + +\section{Usage}\seclabel{usage} +\BeginIndexGroup +\BeginIndex[indexother]{Cmd}{addrentry}% +\BeginIndex[indexother]{Cmd}{adrentry}% +To use the package, we need a valid address file. For example, the file +\File{lotr.adr} contains the following entries: +\begin{lstcode} + \addrentry{Baggins}{Frodo}% + {The Hill\\ Bag End/Hobbiton in the Shire}{}% + {Bilbo Baggins}{pipe-weed}% + {the Ring-bearer}{Bilbo's heir}{FRODO} + \adrentry{Gamgee}{Samwise}% + {3 Bagshot Row\\Hobbiton in the Shire}{}% + {Rosie Cotton}{taters}% + {the Ring-bearer's faithful servant}{SAM} + \adrentry{Bombadil}{Tom}% + {The Old Forest}{}% + {Goldberry}{trill queer songs}% + {The Master of Wood, Water and Hill}{TOM} +\end{lstcode} + +The fourth parameter, the telephone number, has been left blank, since there +are no phones in Middle Earth. And as you can see, blank fields are possible. +On the other hand, you cannot simply omit an argument altogether. + +\BeginIndexGroup +\BeginIndex[indexother]{Cmd}{InputAddressFile} +With the \Macro{InputAddressFile} command described above, we read the address +file into our letter document: +\begin{lstcode} + \InputAddressFile{lotr} +\end{lstcode} +\EndIndexGroup + +\BeginIndexGroup +\BeginIndex[indexother]{Cmd}{Name}% +\BeginIndex[indexother]{Cmd}{Address}% +\BeginIndex[indexother]{Cmd}{FirstName}% +\BeginIndex[indexother]{Cmd}{LastName}% +\BeginIndex[indexother]{Cmd}{FreeI}% +\BeginIndex[indexother]{Cmd}{FreeII}% +\BeginIndex[indexother]{Cmd}{FreeIII}% +\BeginIndex[indexother]{Cmd}{FreeIV}% +\BeginIndex[indexother]{Cmd}{Comment}% +With the help of the commands introduced in this chapter we can now write a +letter to old \textsc{Tom Bombadil}, in which we ask him if he can remember +two companions from olden times. +\begin{lstcode} + \begin{letter}{\Name{TOM}\\\Address{TOM}} + \opening{Dear \FirstName{TOM} \LastName{TOM},} + + Or \FreeIII{TOM}, as your beloved \FreeI{TOM} calls you. Do + you still remember Mr \LastName{FRODO}, or more precisely + \Name{FRODO}, since there was also Mr \FreeI{FRODO}. He was + \Comment{FRODO} in the Third Age and \FreeIV{FRODO}. \Name{SAM}, + \Comment{SAM}, accompanied him. + + Their passions were very worldly. \FirstName{FRODO} enjoyed + smoking \FreeII{FRODO}. His companion appreciated a good meal + with \FreeII{SAM}. + + Do you remember? Certainly Mithrandir has told you much + about their deeds and adventures. + \closing{``O spring-time and summer-time + and spring again after!\\ + O wind on the waterfall, + and the leaves' laughter!''} + \end{letter} +\end{lstcode} +You can also produce the combination of \Macro{FirstName}\Parameter{key} and +\Macro{LastName}\Parameter{key} used in the \DescRef{scrlttr2.cmd.opening} of +this letter with \Macro{Name}\PParameter{key}. + +You can use the fifth and sixth parameters of the +\DescRef{\LabelBase.cmd.adrentry} or \DescRef{\LabelBase.cmd.adrentry} for any +purpose you wish. You can access them with the \Macro{FreeI} and +\Macro{FreeII} commands. In this example, the fifth parameter contains the +name of the most important person in the life of the person in the entry. The +sixth contains the person's favourite thing. The seventh parameter is a +comment or in general also a free parameter. You can access it with the +\Macro{Comment} or \Macro{FreeIII} commands. \Macro{FreeIV} is only valid for +\DescRef{\LabelBase.cmd.addrentry} entries. For +\DescRef{\LabelBase.cmd.adrentry} entries, it results in an error. You can +find more details in the next section. +% +\EndIndexGroup +\EndIndexGroup + + +\section{Package Warning Options} + +As mentioned above, you cannot use the \Macro{FreeIV} command with +\DescRef{\LabelBase.cmd.adrentry} entries. However, you can configure how +\Package{scraddr} reacts in such a situation by package options. +Note\textnote{Attention!} that this package does not support the extended +options interface with \DescRef{maincls.cmd.KOMAoptions} and +\DescRef{maincls.cmd.KOMAoption}. You should therefore specify the options +either as global options in \DescRef{maincls.cmd.documentclass} or as local +options in \DescRef{maincls.cmd.usepackage} + + +\begin{Declaration} + \Option{adrFreeIVempty}% + \Option{adrFreeIVshow}% + \Option{adrFreeIVwarn}% + \Option{adrFreeIVstop}% +\end{Declaration}% +These four options let you choose from four different reactions, ranging +from \emph{ignore} to \emph{abort}, if \Macro{FreeIV} is used +within an \DescRef{\LabelBase.cmd.adrentry} entry. + +\begin{labeling}[~--]{\Option{adrFreeIVempty}} +\item[\Option{adrFreeIVempty}] + the command \Macro{FreeIV} will be ignored +\item[\Option{adrFreeIVshow}] + the warning ``(entry FreeIV undefined at \PName{key})'' will be + written in the text +\item[\Option{adrFreeIVwarn}] + a warning is written in the logfile +\item[\Option{adrFreeIVstop}] + the \LaTeX{} run will abort with an error message +\end{labeling} +The default setting is \Option{adrFreeIVshow}.% +\EndIndexGroup +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrbase.tex b/macros/latex/contrib/koma-script/source-doc/english/scrbase.tex new file mode 100644 index 0000000000..80ed5b2b03 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrbase.tex @@ -0,0 +1,1659 @@ +% ====================================================================== +% scrbase.tex +% Copyright (c) Markus Kohm, 2002-2019 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrbase.tex +% Copyright (c) Markus Kohm, 2002-2019 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Package scrbase for Package and Class Authors +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Paket scrbase fuer Paket- und Klassenautoren +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{scrbase.tex} + [$Date: 2019-01-15 08:29:44 +0100 (Tue, 15 Jan 2019) $ + KOMA-Script package scrbase] +\translator{Markus Kohm\and Melvin Hendrix\and Karl Hagen} + +% Date of the translated German file: 2018-08-27 + +\chapter{Basic Functions in the \Package{scrbase} Package} +\labelbase{scrbase} +\BeginIndexGroup +\BeginIndex{Package}{scrbase}% + +The \Package{scrbase} package provides basic features intended for use by +authors of packages and classes. Its use is not limited merely to wrapper +classes which in turn load a \KOMAScript{} class. Authors of classes that +otherwise have nothing to do with \KOMAScript{} can also benefit from the +functionality of \Package{scrbase}. + +\section{Loading the Package} +\seclabel{loadit} + +Whereas users load packages with \Macro{usepackage}, authors of packages or +classes should use \Macro{RequirePackage}\IndexCmd{RequirePackage}. Authors of +wrapper packages can also use \Macro{RequirePackageWithOptions}. The +\Macro{RequirePackage} command has the same optional argument for package +options as \Macro{usepackage}. In contrast, \Macro{RequirePackageWithOptions} +does not have an optional argument but passes to this package all the options +that were previously given when loading the wrapper package or class. See +\cite{latex:clsguide} for more information about these commands. + +The \Package{scrbase} package needs the functionality of the +\Package{keyval}\IndexPackage{keyval} package internally. This can also be +provided by the \Package{xkeyval} package. If needed, \Package{scrbase} itself +loads \Package{keyval}. + +The \Package{keyval} package lets you define keys and assign values to them. +The options provided by \Package{scrbase} also use \Package{keyval} syntax: +\PName{key}\texttt{=}\PName{value}. + + +\section{Keys as Attributes of Families and their Members} +\seclabel{keyvalue} + +As already mentioned in \autoref{sec:scrbase.loadit}, \Package{scrbase} uses +the \Package{keyval} package to set keys and their values. However, +\Package{scrbase} extends this functionality. Whereas with \Package{keyval} a +key belongs to only one family, \Package{scrbase} also recognizes family +members. A key can therefore belong to both a family and one or more family +members. Additionally, you can assign a value to the key of a family member, +to the key of a family, or to the keys of all family members. + +\begin{Declaration} + \Macro{DefineFamily}\Parameter{family}% + \Macro{DefineFamilyMember}\OParameter{member}\Parameter{family}% +\end{Declaration} +\Package{scrbase} needs to know the members of a family for various reasons. +Therefore, you must first define a new family using \Macro{DefineFamily}, +which produces an empty member list. If the family has already been defined, +nothing happens. Therefore an existing member list will not be overwritten. + +Next, you can add a new member to the family using \Macro{DefineFamilyMember}. +If the family does not exist, this will result in an error message. If the +member already exists, nothing happens. If the optional \PName{member} is +omitted, the default value +``\texttt{.}\Macro{@currname}\texttt{.}\Macro{@currext}'' is used. While +the class or package is being loaded, \Macro{@currname} and \Macro{@currext} +together represent the file name of the class or package. + +Theoretically, it is possible, to define a member without a name using an +empty optional \PName{member} argument. But this is the same as the family +itself. You should use only letters and digits for the \PName{family} name, +and the first character of \PName{member} should be something else, preferably +a point. Otherwise, it could happen that the members of one family will clash +with the members of other families. + +\Package{scrbase} assigns the family ``\PValue{KOMA}'' to itself and adds the +member ``\PValue{.scrbase.sty}''. The values ``\PValue{KOMA}'' and +``\PValue{KOMAarg}'' are reserved for \KOMAScript{}. If you are creating a +bundle of packages, you should use the name of the bundle as \PName{family} +and the name of each package as \PName{member} of that \PName{family}. +% +\begin{Example} + Suppose you are writing a bundle called ``master butcher''. Within that + bundle, you have the packages \File{salami.sty}, \File{mettwurst.sty}, + and \File{kielbasa.sty}. Therefore, you decide to use family name + ``\PValue{butcher}'' and you add the lines +\begin{lstcode} + \DefineFamily{butcher} + \DefineFamilyMember{butcher} +\end{lstcode} + to each of the package files. When loading the three packages, this will + add the members ``\PValue{.salami.sty}'', ``\PValue{.mettwurst.sty}'', + and ``\PValue{.kielbasa.sty}'' to the family ``\PValue{butcher}''. After + loading all three packages, all three members will be defined. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DefineFamilyKey}\OParameter{member}\Parameter{family}% + \Parameter{key}% + \OParameter{default}\Parameter{action}% + \Macro{FamilyKeyState}% + \Macro{FamilyKeyStateUnknown}% + \Macro{FamilyKeyStateProcessed}% + \Macro{FamilyKeyStateUnknownValue}% + \Macro{FamilyKeyStateNeedValue} +\end{Declaration} +The \Macro{DefineFamilyKey} command defines a \PName{key}. If you specify a +\PName{member}, the \PName{key} becomes an attribute of that member in the +given \PName{family}. If you do not specify a \PName{member}, the member +``\texttt{.}\Macro{@currname}\texttt{.}\Macro{@currext}'' is assumed. If you +later assign a value to the \PName{key}, the \PName{action} will be +executed and the value made an argument of \PName{action}. Within +\PName{action}, ``\lstinline{#1}'' stands for that value. If you omit the value, +the \PName{default} is used instead. If you do not specify a \PName{default}, +the \PName{key} then always requires you to pass an explicit value. + +%\begin{Explain} + \phantomsection\label{explain:scrbase.macro.DefineFamilyKey}% + Ultimately, +\begin{lstcode}[escapeinside=`'] + \DefineFamilyKey[`\PName{member}']{`\PName{family}'}{`\PName{key}'} + [`\PName{default}']{`\PName{action}'} +\end{lstcode} + results in a call to +\begin{lstcode}[moretexcs={define@key},escapeinside=`'] + \define@key{`\PName{family\,member}'}{`\PName{key}'} + [`\PName{default}']{`\PName{extended action}'} +\end{lstcode} + where \Macro{define@key} is provided by the + \Package{keyval}\IndexPackage{keyval} package (see \cite{package:keyval}). + However, there are some additional precautions taken with the call to + \Macro{define@key}, and the \PName{action} will be extended to include these + precautions. +%\end{Explain} + +Success\ChangedAt{v3.12}{\Package{scrbase}} or failure in executing the +\PName{action} should be reported back to \Package{scrbase} through +\Macro{FamilyKeyState} so that the package itself can take further action as +needed. This could be, for example, an error message or merely warning of an +unknown option. You should not report errors directly! + +The default state of \PName{action} before execution is +\Macro{FamilyKeyStateUnknown}. This indicates that it is not known whether or +not the key could be processed successfully. If this state remains unchanged +after the \PName{action} has been executed, \Package{scrbase} writes a +message to the \File{log} file and assumes the that state is +\Macro{FamilyKeyStateProcessed}. + +The \Macro{FamilyKeyStateProcessed} state indicates that the key and the value +assigned to it have been successfully processed and everything is OK. You can +switch to this state by calling \Macro{FamilyKeyStateProcessed} itself. + +The \Macro{FamilyKeyStateUnknownValue} state indicates that the key has been +processed but that the value passed to it was either unknown or not allowed. +For example, \hyperref[cha:typearea]{\Package{typearea}} reports this +condition if you try to set the \DescRef{typearea.option.twoside} option to +\PValue{unknown}. You can set this state by simply calling +\Macro{FamilyKeyStateUnknownValue}. + +The \Macro{FamilyKeyStateNeedValue} state indicates that the key could not be +processed because it expects a value, but it was called without such a value. +This state is set automatically if you use a key that does not have a +\PName{default} value without assigning a value. Theoretically, you could +set this state explicitly with \Macro{FamilyKeyStateNeedValue}, but you should +not need to set it yourself. + +In addition, you can define additional error conditions by redefining +\Macro{FamilyKeyState} with a short text message. Generally, however, the four +predefined states should be sufficient. + +\begin{Example} + Suppose each of the three packages from the previous example should have a + key named \PValue{coldcuts}. When used, a switch should be set in each of + the packages. For the \Package{salami} package, for example, this could look + like this: +\begin{lstcode} + \newif\if@salami@coldcuts + \DefineFamilyKey{butcher}% + {coldcuts}[true]{% + \expandafter\let\expandafter\if@salami@coldcuts + \csname if#1\endcsname + \FamilyKeyStateProcessed + } +\end{lstcode} + When called, the value will therefore be either \PValue{true} or + \PValue{false}. This example does not test for illegal values. Instead, + it is always reported that the key was processed completely and correctly. + If the key is used later, one of the permitted values, or no value, must be + used. In the second case, the default \PName{true} value will be used. + + The definitions for the other packages are similar. Only ``\texttt{salami}'' + has to be replaced by the respective names. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{RelaxFamilyKey}\OParameter{member}\Parameter{family}% + \Parameter{key} +\end{Declaration} +If\ChangedAt{v3.15}{\Package{scrbase}} a \PName{key} has been previously +defined as a \PName{member} of a \PName{family}, that definition will be +cancelled. Afterwards the \PName{key} will no longer be defined for this +\PName{member} of the \PName{family}. You can use \Macro{RelaxFamilyKey} for a +\PName{key} that is not defined for this \PName{member} of the \PName{family}. + +If you do not specify a \PName{member}, then the member +``\texttt{.}\Macro{@currname}\texttt{.}\Macro{@currext}'' is assumed, just as +with \DescRef{\LabelBase.cmd.DefineFamilyKey}. However, \Macro{RelaxFamilyKey} +is only rarely used while loading a package rather than at runtime. Therefore +the \PName{member} should usually be specified explicitly as well.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyProcessOptions}\OParameter{member}\Parameter{family} +\end{Declaration} +In essence, extending keys from families to both families and family members +means that either keys or key-value pairs can be used as normal class or +package options. The \Macro{FamilyProcessOptions} command is an extension of +\Macro{ProcessOption*} from the \LaTeX{} kernel (see \cite{latex:clsguide}, +which processes not only options declared with \Macro{DeclareOption}, but also +all keys of the given member. If you omit the optional argument +\PName{member}, the member +``\texttt{.}\Macro{@currname}\texttt{.}\Macro{@currext}'' is used. + +One feature worth noting is that keys which are attached not to a family +member but to a family have an empty family member. Such keys are set before +the keys of the members. +\begin{Example} + If, in the packages from the previous example, you add the line +\begin{lstcode} + \FamilyProcessOptions{butcher} +\end{lstcode} + after you define the key, you can specify the \Option{coldcuts} option when + loading the package. If you specify the option globally in + \Macro{documentclass}, the option will be passed automatically to all three + packages if they are loaded later. +\end{Example} +Note\textnote{Attention!} that packages always process global options +before local options. While unknown global options result in an entry in the +\File{log} file and the option being otherwise ignored, unknown local +options result in an error message. + +You can think of \Macro{FamilyProcessOptions} as an extension of either +\Macro{ProcessOption*} or the \PName{key=value} mechanism +of \Package{keyval}. Ultimately, with the help of +\Macro{FamilyProcessOptions}, \PName{key=value} pairs become options.% + +As with\textnote{Attention!} \Macro{ProcessOptions}, +\Macro{FamilyProcessOptions} must not be used while executing options code. +In particular, you cannot load packages while processing options.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{BeforeFamilyProcessOptions}\OParameter{member}\Parameter{family}% + \Parameter{code}% +\end{Declaration} +Authors\ChangedAt{v3.18}{\Package{scrbase}} of wrapper classes in particular +sometimes need a hook to execute \PName{code} before +\DescRef{\LabelBase.cmd.FamilyProcessOptions}. The \Package{scrbase} package +provides such a hook, and you can add \PName{code} to it with +\Macro{BeforeFamilyProcessOptions}. The \PName{member} and \PName{family} +parameters are same as those of \DescRef{\LabelBase.cmd.FamilyProcessOptions}. +However, you can also add \PName{code} to the hook for families or members +that have not yet been defined. + +Note that the hook of a family member is automatically deleted after it is +executed. But if you use an empty \PName{member}, this hook\Index{hook} will +be executed for every member of the \PName{family} and will not be deleted. + +\begin{Example} + You are writing a \Package{smokedsausage} package that loads + \Package{mettwurst}. But you do not want to be able to set the + \Option{coldcut} option with this package. So you use + \Macro{BeforeFamilyProcessOptions} to deactivate that option before you load + the package: +\begin{lstcode} + \RequirePackage{scrbase} + \BeforeFamilyProcessOptions[.mettwurst.sty]{butcher}{% + \RelaxFamilyKey[.mettwurst.sty]{butcher}{coldcut}% + } + \RequirePackageWithOptions{mettwurst} +\end{lstcode} + If a user tries to load your package with the \Option{coldcut} option, the + \Package{mettwurst} package will throw an undefined option error. If + \Option{coldcut} is used as a global option, the \Package{mettwurst} + package will ignore it. But default settings inside \Package{mettwurst}, + for example using \DescRef{\LabelBase.cmd.FamilyExecuteOptions} before + \DescRef{\LabelBase.cmd.FamilyProcessOptions} are not affected. Of course, + you can also insert your own default for \Package{smokedsausage} via + \Macro{BeforeFamilyProcessOptions} in \Package{mettwurst}. +\end{Example} +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyExecuteOptions}\OParameter{member}\Parameter{family}% + \Parameter{options list} +\end{Declaration} +This command is an extension of \Macro{ExecuteOptions} from the \LaTeX{} +kernel (see \cite{latex:clsguide}). The command processes not only options +defined with \Macro{DeclareOption} but also all keys of the given +\PName{family}. If you omit the optional argument \Macro{member}, +``\texttt{.}\Macro{@currname}\texttt{.}\Macro{@currext}'' is used. + +One feature worth noting is that keys which are attached not to a family +member but to a family have an empty family member. Such keys are set before +the keys of the members. +\begin{Example} + Suppose the \Option{coldcuts} option should be set by default in the + previous examples. In this case only line +\begin{lstcode} + \FamilyExecuteOptions{butcher}{coldcuts} +\end{lstcode} + has to be added. +\end{Example} + +If\ChangedAt{v3.20}{\Package{scrbase}} you call \Macro{FamilyExecuteOptions} +with an unknown option inside the \PName{options list}, you will get an error. +An exception to this rule occurs when the \PName{member} has an option called +\Option{@else@}. In this case, the \Option{@else@} option will be used instead +of the unknown option. \KOMAScript{} itself uses this feature, for example +inside the definition of sectioning commands, to evaluate the style option +before all other attributes. + +You can also use this command inside the code executed when processing the +option.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyOptions}\Parameter{family}\Parameter{options list}% +\end{Declaration} +Unlike normal options defined with \Macro{DeclareOption}, the \PName{key}s can +also be set after loading a class or package. To do this, you call +\Macro{FamilyOptions}. The \PName{options list} has the form +\begin{flushleft}\vskip\dp\strutbox\begin{tabular}{l} + \PName{key}\texttt{=}\PName{value}\texttt{,}% + \PName{key}\texttt{=}\PName{value}\dots +\end{tabular}\vskip\dp\strutbox\end{flushleft} +after which the value assignment can be omitted for \PName{key}s that have a +defined default. + +The statement sets the keys of all members of the specified family. If a +\PName{key} also exists as an attribute of the family itself, then the family +key is set first, followed by the member keys in the order in which they were +defined. If a given \PName{key} does not exist, either for the family or for +any member of the family, then \Macro{FamilyOptions} will throw an error. An +error also occurs if a \PName{key} exists for some members but each of those +members returns an error through \DescRef{\LabelBase.cmd.FamilyKeyState}. +\begin{Example} + You extend your butcher project with a \Package{sausagesalad} package. If + this package has been loaded, all sausage packages should generate cold + cuts: +\begin{lstcode} + \ProvidesPackage{sausagesalad}% + [2008/05/06 nonsense package] + \DefineFamily{butcher} + \DefineFamilyMember{butcher} + \FamilyProcessOptions{butcher}\relax + \FamilyOptions{butcher}{coldcuts} +\end{lstcode} + If no sausage package has yet been loaded, the undefined option + \Option{coldcuts} leads to an error message. You can avoid this by defining + a corresponding key for the package before the last line of the code above: +\begin{lstcode} + \DefineFamilyKey{butcher}% + {coldcuts}[true]{}% +\end{lstcode} + However, sausage packages loaded after \Package{sausagesalad} still do not + produce cold cuts. You can correct this by replacing the previous command + with: +\begin{lstcode} + \AtBeginDocument{% + \DefineFamiyKey[.sausagesalad.sty]% + {butcher}% + {coldcuts}[true]{}% + } + \DefineFamilyKey{butcher}% + {coldcuts}[true]{% + \AtBeginDocument{\FamilyOptions{butcher}% + {coldcuts=#1}}% + }% +\end{lstcode} + Thus, the option is defined during \Macro{begin}\PParameter{document} so + that it no longer functions for the \Package{sausagesalad} package. Because + \Macro{@currname} and \Macro{@currext} no longer contain the file name of + the package, you must use the optional argument of + \DescRef{\LabelBase.cmd.DefineFamilyKey}. + + But until this redefinition is performed, it uses a definition that executes + the option again for the family and all its members during + \Macro{begin}\PParameter{document}, thus setting it for other sausage + packages. The delay in executing \Macro{FamilyOptions} is crucial here. For + one thing, it includes only the packages loaded afterwards. For another, it + ensures that its own \Option{coldcuts} option has already been redefined. + This avoids endless recursion. +\end{Example} +% +\EndIndexGroup +\vskip-\ht\strutbox% Umbruchkorrektur wegen Beispiel am Ende + + +\begin{Declaration} + \Macro{FamilyOption}\Parameter{family}% + \Parameter{option}\Parameter{value list}% +\end{Declaration} +In addition to options that have mutually exclusive values, there may be +options that can take multiple values at the same time. To use +\DescRef{\LabelBase.cmd.FamilyOptions} for that type of option, it would be +necessary to invoke the same option several times with different value +assignments. Instead, you can easily assign a whole list of values to a single +\PName{option} using \Macro{FamilyOption}. The \PName{value list} is a comma +separated list of values, also known as \emph{csv}: +%\begin{flushleft}\begin{tabular}{l} + \PName{value}\texttt{,}\PName{value}\dots +%\end{tabular}\end{flushleft} +Note in this context that you can use a comma in a value by putting the value +inside braces. This command's other functionality is the same previously +described for \DescRef{\LabelBase.cmd.FamilyOptions}. +\begin{Example} + The \Package{sausagesalad} package should have one more option to add + additional ingredients. Each of the ingredients sets a switch, as was done + previously for the cold cuts. +\begin{lstcode} + \newif\if@saladwith@onions + \newif\if@saladwith@gherkins + \newif\if@saladwith@chillies + \DefineFamilyKey{butcher}{ingredient}{% + \csname @saladwith@#1true\endcsname + } +\end{lstcode} + Here the three ingredients ``onions'', ``gherkins'', and ``chillies'' have + been defined. There is no error message for unknown ingredients. + + For a salad with onions and gherkins, you can use +\begin{lstcode} + \FamilyOptions{butcher}{% + ingredient=onions,ingredient=gherkins} +\end{lstcode} + or simply +\begin{lstcode} + \FamilyOption{butcher} + {ingredient}{onions,gherkins} +\end{lstcode} +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AtEndOfFamilyOptions}\Parameter{action}% + \Macro{AtEndOfFamilyOptions*}\Parameter{action}% +\end{Declaration} +Sometimes\ChangedAt{v3.12}{\Package{scrbase}} it is useful to delay the +execution of an \PName{action} that is part of a value assignment to a key +until all assignments inside one +\DescRef{\LabelBase.cmd.FamilyProcessOptions}\IndexCmd{FamilyProcessOptions}, +\DescRef{\LabelBase.cmd.FamilyExecuteOptions}\IndexCmd{FamilyExecuteOptions}, +\DescRef{\LabelBase.cmd.FamilyOptions}\IndexCmd{FamilyOptions}, or +\DescRef{\LabelBase.cmd.FamilyOption}\IndexCmd{FamilyOptions} is finished. +You can do this using \Macro{AtEndOfFamilyOptions} or its starred +variant\ChangedAt{v3.23}{\Package{scrbase}} inside an option definition. +However, reporting failure states of \PName{action} is not possible with this +command, nor should it be used outside an option definition. + +The two variants differ in case there are nested option definitions, when +executing an option requires further option calls. In this case all actions +specified by \Macro{AtEndOfFamilyOptions} will be executed when the innermost +option call returns. In contrast, the actions of \Macro{AtEndOfFamilyOptions*} +are not executed until the outermost option call returns. +However,\textnote{Attention!} the order of the actions of both commands is +emphatically undefined! It is not guaranteed that the action requested first +will be executed first, nor the converse.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyBoolKey}\OParameter{member}\Parameter{family}% + \Parameter{key}\Parameter{switch name}% + \Macro{FamilySetBool}\Parameter{family}% + \Parameter{key}\Parameter{switch name}\Parameter{value} +\end{Declaration} +Boolean switches have been used several times in the previous examples. In the +example with \Option{coldcuts} option, the user had to assign either +\PValue{true} or \PValue{false} as a value. There was no error message if the +user provided the wrong value. Because boolean switches are a common use case, +you can easily define them with \Package{scrbase} using \Macro{FamilyBoolKey}. +The \PName{member}, \PName{family}, and \PName{key} arguments are the same as +those used by \DescRef{\LabelBase.cmd.DefineFamilyKey} (see +\DescPageRef{scrbase.cmd.DefineFamilyKey}). The \PName{switch name} is the +name of the switch without the prefix \Macro{if}. If a switch with this name +does not exist already, \Macro{FamilyBoolKey} will define it and initialize it +to \PName{false}. Internally, \Macro{FamilyBooKey} uses \Macro{FamilySetBool} +as the \PName{action} of \DescRef{\LabelBase.cmd.DefineFamilyKey}. The +\PName{default} for such an option is always \PValue{true}. + +\Macro{FamilySetBool}, on the other hand, accepts \PValue{on} and +\PValue{yes}, in addition to \PName{true}, to turn the switch on, and +\PName{off} and \PName{no}, in addition to \PName{false}, to turn it off. +Unknown values will result in a call to +\DescRef{\LabelBase.cmd.FamilyUnknownKeyValue} with the arguments +\PName{family}, \PName{key}, and \PName{value}, which sets +\DescRef{\LabelBase.cmd.FamilyKeyState} accordingly. As a result, an error +message about an unknown value assignment is printed if necessary (see also +\DescPageRef{scrbase.cmd.FamilyUnknownKeyValue} and +\DescPageRef{scrbase.cmd.FamilyKeyState}). +\begin{Example} + The key \Option{coldcuts} should be defined more robustly in the sausage + packages. Additionally, all sausage packages should use the same key, so + that either all sausage packages will produce cold cuts or none will. +\begin{lstcode} + \FamilyBoolKey{butcher}{coldcuts}% + {@coldcuts} +\end{lstcode} + A test of whether to produce cold cuts would look like this: +\begin{lstcode} + \if@coldcuts + ... + \else + ... + \fi +\end{lstcode} + This would be the same in all three sausage packages, thereby + defining the attribute ``coldcuts'' as a family option: +\begin{lstcode}[moretexcs={define@key}] + \@ifundefined{if@coldcuts}{% + \expandafter\newif\csname if@coldcuts\endcsname + }{}% + \DefineFamilyKey[]{butcher}{coldcuts}[true]{% + \FamilySetBool{butcher}{coldcuts}% + {@coldcuts}% + {#1}% + } +\end{lstcode} + or shorter: +\begin{lstcode} + \FamilyBoolKey[]{butcher}{coldcuts}% + {@coldcuts} +\end{lstcode} + taking advantage of the treatment of empty family members as opposed to + omitting the optional argument explained on + \autopageref{explain:scrbase.macro.DefineFamilyKey}, which applies not only + to \DescRef{\LabelBase.cmd.DefineFamilyKey} but also for + \Macro{FamilyBoolKey}. + + Since \DescRef{\LabelBase.cmd.FamilyKeyState} is already set by + \Macro{FamilySetBool}, you can check its status with the help of + \DescRef{\LabelBase.cmd.DefineFamilyKey}. For example, in the first case you + could add an equivalence test to \Macro{FamilySetBool} to perform additional + actions depending on whether \Macro{FamilySetBool} succeeded or not: + \begin{lstcode} + \ifx\FamilyKeyState\FamilyKeyStateProcessed + ... + \else + ... + \fi + \end{lstcode} + Note\textnote{Attention!} that it is essential to perform the test with + \Macro{ifx} at this point. Fully expanding tests like \Macro{ifstr} should + be avoided here. Depending on the current status and the comparison status, + they can lead to different error messages as well as incorrect results. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyNumericalKey}\OParameter{member}\Parameter{family}% + \Parameter{key}% + \OParameter{default}\Parameter{command}% + \Parameter{value list}% + \Macro{FamilySetNumerical}\Parameter{family}\Parameter{key}% + \Parameter{command}\Parameter{value list}% + \Parameter{value} +\end{Declaration} +While switches can accept only two values, there are also keys that recognize +several values. For example an alignment can be not just left or not-left, but +left, centred, or right. Internally, such differentiation is often made using +\Macro{ifcase}. This \TeX{} command expects a numerical value. Therefore in +\Package{scrbase} the command to define a macro by a \PName{key} has been +named \Macro{FamilyNumericalKey}. The \PName{value list} has the form: +%\begin{flushleft}\vskip\dp\strutbox\begin{tabular}{l} + \Parameter{value}\Parameter{definition}\texttt{,}\linebreak[1]% + \Parameter{value}\Parameter{definition}\texttt{,}~\dots +%\end{tabular}\vskip\dp\strutbox\end{flushleft} +The \PName{value list} defines not just the values permitted for the +\PName{key}. For each \PName{value}, the \PName{definition} of the macro +\Macro{\PName{command}} also is given. Usually, the \PName{definition} is just +a numerical value. Although other content is possible, there is currently a +restriction that the \PName{definition} must be fully expandable, and it will +be expanded during the assignment. +\begin{Example} + The sausage for the sausage salad can be cut differently. For example, the + cold cuts could simply remain uncut or be cut into thick or thin slices. + This information should be stored in the command \Macro{cuthow}. +\begin{lstcode} + \FamilyNumericalKey{butcher}% + {saladcut}{cuthow}{% + {none}{none},{no}{none},{not}{none}% + {thick}{thick},% + {thin}{thin}% + } +\end{lstcode} + Not cutting anything can be selected by +\begin{lstcode} + \FamilyOptions{butcher}{saladcut=none} +\end{lstcode} + or +\begin{lstcode} + \FamilyOptions{butcher}{saladcut=no} +\end{lstcode} + or +\begin{lstcode} + \FamilyOptions{butcher}{saladcut=not} +\end{lstcode} + In all three cases \Macro{cuthow} would be defined with the content + \PValue{none}. It can be useful to provide several values for the same + result, as shown in this example. + + Now it's very likely that the manner of cutting will not be printed but + should be evaluated later. In this case, a textual definition would be + rather impractical. If the key is defined like this: +\begin{lstcode} + \FamilyNumericalKey{butcher}% + {saladcut}{cuthow}{% + {none}{0},{no}{0},{not}{0}% + {thick}{1},% + {thin}{2}% + } +\end{lstcode} + then you can use a condition like the following: +\begin{lstcode} + \ifcase\cuthow + % uncut + \or + % thickly cut + \else + % thinly cut + \fi +\end{lstcode} +\end{Example} +Internally, \Macro{FamilyNumericalKey} uses \Macro{FamilySetNumerical} as the +\PName{action} of \DescRef{\LabelBase.cmd.DefineFamilyKey}. If an unknown +value is assigned to such a key, \Macro{FamilySetNumerical} will call +\DescRef{\LabelBase.cmd.FamilyUnknownKeyValue} with the \PName{family}, +\PName{key} and \PName{value} arguments. This leads to an error signalled with +the \DescRef{\LabelBase.cmd.FamilyKeyStateUnknownValue} status in +\DescRef{\LabelBase.cmd.FamilyKeyState}. Similarly, when calling +\Macro{FamilySetNumerical} the success is signalled via +\DescRef{\LabelBase.cmd.FamilyKeyStateProcessed} in +\DescRef{\LabelBase.cmd.FamilyKeyState}.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyCounterKey}\OParameter{member}\Parameter{family}% + \Parameter{key}% + \OParameter{default}\Parameter{\LaTeX{} counter}% + \Macro{FamilySetCounter}\Parameter{family}% + \Parameter{key}\Parameter{\LaTeX{} counter}\Parameter{value} +\end{Declaration} +While\ChangedAt{v3.12}{\Package{scrbase}} +\DescRef{\LabelBase.cmd.FamilyNumericalKey} defines a macro in which a numeric +value corresponds to a symbolic value, there are, of course, circumstances +when a \PName{key} directly represents a \PName{\LaTeX{} counter} to which a +numeric value should be assigned immediately. For this case, you can use +\Macro{FamilyCounterKey}, which calls \Macro{FamilySetCounter} internally. +There are some basic tests of the \PName{value} argument to determine if the +\PName{value} argument appears to be suitable for assignment to a counter. The +assignment will only be made if these tests succeed. However, not all errors +can be detected here, so an incorrect assignment can also lead to an error +message from \TeX{} itself. Errors that are detected, however, are signalled +by \DescRef{\LabelBase.cmd.FamilyKeyStateUnknownValue}. + +If\ChangedAt{v3.15}{\Package{scrbase}} the value is omitted, the +\PName{default} is used instead. If there is no \PName{default}, the +\PName{key} can be used only with an explicit value.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyCounterMacroKey}\OParameter{member}\Parameter{family}% + \Parameter{key}% + \OParameter{default}\Parameter{macro}% + \Macro{FamilySetCounterMacro}\Parameter{family}% + \Parameter{key}\Parameter{macro}\Parameter{value}% +\end{Declaration} +These\ChangedAt{v3.12}{\Package{scrbase}} two commands differ from the +previously described \DescRef{\LabelBase.cmd.FamilyCounterKey} and +\DescRef{\LabelBase.cmd.FamilySetCounter} only by the fact that they do not +assign a \PName{value} to a \LaTeX{} counter, but define a \Macro{macro} with +the \PName{value}. This \PName{value} is locally assigned to a counter and +then its expanded value is used. Therefore, its value at the time the option +is called applies.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyLengthKey}\OParameter{member}\Parameter{family} + \Parameter{key} + \OParameter{default}\Parameter{length} + \Macro{FamilySetLength}\Parameter{family} + \Parameter{key}\Parameter{length}\Parameter{value} + \Macro{FamilyLengthMacroKey}\OParameter{member}\Parameter{family} + \Parameter{key} + \OParameter{default}\Parameter{macro} + \Macro{FamilySetLengthMacro}\Parameter{family} + \Parameter{key}\Parameter{macro} + \Parameter{value}% + \Macro{FamilyUseLengthMacroKey}\OParameter{member}\Parameter{family} + \Parameter{key} + \OParameter{default}\Parameter{macro} + \Macro{FamilySetUseLengthMacro}\Parameter{family} + \Parameter{key}\Parameter{macro} + \Parameter{value}% +\end{Declaration} +With\ChangedAt{v3.12}{\Package{scrbase}} \Macro{FamilyLengthKey}, you can +define a \PName{key} that represents a \PName{length}. It does not matter +whether the \PName{length} is a \LaTeX{} length, a \TeX{} skip, or a \TeX{} +dimension. Internally the \PName{length} will be set to the \PName{value} +using \Macro{FamilySetLength}. There are some basic tests to decide whether +this \PName{value} is valid to assign to \PName{length}. The assignment will +only take place if these tests succeed. However, not all errors can be +detected, so an inaccurate \PName{value} can still result in a \TeX{} error. +Errors that are detected, however, are signalled by +\DescRef{\LabelBase.cmd.FamilyKeyStateUnknownValue}. + +If\ChangedAt{v3.15}{\Package{scrbase}} the value is omitted, the +\PName{default} is used instead. If there is no \PName{default}, the +\PName{key} can be used only with an explicit value. + +When you use \Macro{FamilyLengthMacroKey} and \Macro{FamilySetLengthMacroKey}, +or \Macro{FamilySetLengthMacro} and \Macro{FamilySetUseLengthMacro}, the +\PName{value} is stored not in a \PName{length} but in a +\PName{macro}. \Macro{FamilyLengthMacroKey} and +\Macro{FamilySetLengthMacroKey} define the \PName{macro} to be the +\PName{value} as evaluated at the point of definition, similar to +\Macro{setlength}. In contrast, +\Macro{FamilyUseLengthMacroKey}\ChangedAt{v3.20}{\Package{scrbase}} and +\Macro{FamilySetUseLengthMacroKey} store the \PName{value} directly, and +so the \PName{value} is reevaluated each time the \PName{macro} is used.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyStringKey}\OParameter{member}\Parameter{family}% + \Parameter{key}% + \OParameter{default}\Parameter{command} + \Macro{FamilyCSKey}\OParameter{member}\Parameter{family}% + \Parameter{key}% + \OParameter{default}\Parameter{command name} +\end{Declaration} +This defines\ChangedAt{v3.08}{\Package{scrbase}} a \PName{key} that accepts +any value. The value will be stored in the specified \Macro{command}. If there +is no optional argument for the \PName{default}, \Macro{FamilyStringKey} is +the same as: +\begin{lstcode}[escapeinside=`'] + \DefineFamilyKey[`\PName{member}']{`\PName{family}'}{`\PName{key}'} + {\def`\PName{command}'{#1}} +\end{lstcode} +If you use the optional argument \PName{default}, \Macro{FamilyStringKey} +corresponds to: +\begin{lstcode}[escapeinside=`'] + \DefineFamilyKey[`\PName{member}']{`\PName{family}'}{`\PName{key}'} + [`\PName{default}'] + {\def`\PName{command}'{#1}\FamilyKeyStateProcessed} +\end{lstcode} + +\begin{Example} + By default 250\Unit{g} of sausage salad should be produced. However, the + amount should be configurable by an option. To do so, the quantity to be + created is stored in the macro \Macro{saladweight}. The option to change + the weight should also be called \PValue{saladweight}: +\begin{lstcode} + \newcommand*{\saladweight}{250g} + \FamilyStringKey{butcher}% + {saladweight}[250g]{\saladweight} +\end{lstcode} + To switch back to the default weight after changing it, you can simply + call the option without the weight: +\begin{lstcode} + \FamilyOptions{butcher}{saladweight} +\end{lstcode} + This is possible because the default quantity was also set as the default + value in the definition. +\end{Example} +In this case, there are no unknown values because all values are simply used +for a macro definition. Note, however, that paragraph breaks are not allowed +when assigning a value to the key. + +In contrast\ChangedAt{v3.25}{\Package{scrbase}} to \Macro{FamilyStringKey}, +the \Macro{FamilyCSKey} command expects for the final argument not a macro but +only the name of a command, for example \PParameter{saladweight} instead of +\PParameter{\Macro{saladweight}}.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyUnknownKeyValue}\Parameter{family}\Parameter{key}% + \Parameter{value}\Parameter{value list}% +\end{Declaration} +The command \Macro{FamilyUnknownKeyValue} throws an error message due to an +unknown or illegal values by means of \DescRef{\LabelBase.cmd.FamilyKeyState}. +The \PName{value list} is a comma separated list of permissible values in the +form +%\begin{flushleft}\vskip\dp\strutbox\begin{tabular}{l} + `\PName{value}'\texttt{,} `\PName{value}' \dots +%\end{tabular}\vskip\dp\strutbox\end{flushleft} +However\ChangedAt{v3.12}{\Package{scrbase}}, the \PName{value list} is +currently not evaluated by \Package{scrbase}. +\begin{Example} + The user should now also be able to select whether the cold cuts should be + cut thick or thin. Thick should be the default setting, which should be used + even if the user does not specify how to cut the coldcuts. +\begin{lstcode} + \@ifundefined{if@thincut}{% + \expandafter + \newif\csname if@thincut\endcsname}{}% + \@ifundefined{if@coldcuts}{% + \expandafter + \newif\csname if@coldcuts\endcsname}{} + \DefineFamilyKey{butcher}% + {coldcuts}[true]{% + \FamilySetBool{butcher}{coldcuts}% + {@coldcuts}% + {#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \@thincutfalse + \else + \ifstr{#1}{thin}{% + \@coltcutstrue + \@finecuttrue + \FamilyKeyStateProcessed + }{% + \FamilyUnknownKeyValue{butcher}% + {coldcuts}% + {#1}{% + `true', `on', `yes', + `false`, `off`, `no', + `thin'% + }% + }% + \fi + }% +\end{lstcode} + First we try to set the boolean coldcuts switch using + \DescRef{\LabelBase.cmd.FamilySetBool}. If this succeeds, i.\,e. if + \DescRef{\LabelBase.cmd.FamilyKeyState} corresponds to + \DescRef{\LabelBase.cmd.FamilyKeyStateProcessed}, thincut will be + deactivated. Otherwise, we check if the value is equal to \PValue{thin} + rather than one of the valid values for a boolean switch. In this case, both + coldcuts and thincut are activated and the state will be switched to + \DescRef{\LabelBase.cmd.FamilyKeyStateProcessed}. If the previous test + fails, the error state signalled by \DescRef{\LabelBase.cmd.FamilySetBool} + is reset to \DescRef{\LabelBase.cmd.FamilyKeyStateUnknownValue}. The list of + the permissible values will be added to it. However, since this list is no + longer used, it would have been easy to skip the call to + \Macro{FamilyUnknownKeyValue} in the example and thus assume the error + status of \DescRef{\LabelBase.cmd.FamilySetBool}. + + The \Macro{ifstr} command used in the test is explained on + \DescPageRef{scrbase.cmd.ifstr} in \autoref{sec:scrbase.if}. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyElseValues} +\end{Declaration} +In\ChangedAt{v3.12}{\Package{scrbase}} previous\textnote{Obsolete!} versions +of \Package{scrbase}, you could use the \Macro{FamilyElseValues} command to +define additional values for processing by +\DescRef{\LabelBase.cmd.FamilyUnknownKeyValue} in the form +%\begin{flushleft}\vskip\dp\strutbox\begin{tabular}{l} + \texttt{,} `\PName{value}'\texttt{,} `\PName{value}' \dots, + %\end{tabular}\vskip\dp\strutbox\end{flushleft} +which were then output in an error message. Since version~3.12, +\DescRef{\LabelBase.cmd.FamilyUnknownKeyValue} no longer issues error messages +itself but signals them using \DescRef{\LabelBase.cmd.FamilyKeyState}. +Therefore, \Macro{FamilyElseValues} is now deprecated. Nevertheless, +\Package{scrbase} detects its use and issues a message requesting that you +update the code accordingly.% +\EndIndexGroup + + +\section{Conditional Execution} +\seclabel{if} + +The \Package{scrbase} package provides several commands for conditional +execution. It does not rely on the \TeX{} syntax of conditionals such as +\begin{lstcode} + \iftrue + ... + \else + ... + \fi +\end{lstcode} +but uses the \LaTeX{} syntax with arguments similar to those used by \LaTeX{} +commands like \Macro{IfFileExists}, \Macro{@ifundefined}, +\Macro{@ifpackageloaded}, and many others. Some package authors, however, +prefer to use the syntax of \TeX{} conditionals even for users working at the +\LaTeX{} interface level. Since the \Package{scrbase} conditionals are fairly +low-level instructions, it is possible that such packages could provide +commands with the same names but a different syntax, leading to problems even +if the underlying semantics were actually the same. Therefore, +\Package{scrbase} plays it safe. + +\begin{Declaration} + \OptionVName{internalonly}{value} +\end{Declaration} +The \Package{scrbase} package provides some commands for conditional +execution. It primarily uses names like +\Macro{scr@\PName{name}}\textnote{package authors}, which are internal +commands. \KOMAScript{} also uses these commands internally. Authors of +packages and classes can also use these commands but should not redefine them. +Because some of these commands may also be useful for users, they are provided +as \Macro{\PName{name}}\textnote{users} normally. Since other packages may +provide conflicting commands with the same name but different syntax or +functionality, \Package{scrbase} can suppress the definition of +\Macro{\PName{name}}. Using the \Option{internalonly} option without a +\PName{value} will define only the internal commands and suppress definition +of all the user commands for conditional execution. Alternatively, the user +can list all the commands that should not be defined as the \PName{value}, +replacing ``\Macro{}'' with ``\texttt{/}''. + +Authors of packages and classes normally should not use this option. Users can +specify it with or without the \PName{value} either as a global option with +\DescRef{maincls.cmd.documentclass} or using +\Macro{PassOptionsToPackage}\IndexCmd{PassOptionsToPackage}. +\begin{Example} + The user does not want \Package{scrbase} to define the + \DescRef{\LabelBase.cmd.ifVTeX} and + \DescRef{\LabelBase.cmd.ifundefinedorrelax} commands. So to load the class, + the user writes: +\begin{lstcode} + \documentclass% + [internalonly=/ifVTeX/ifundefinedorrelax]% + {foo} +\end{lstcode} + The class name \Class{foo} is used here as a placeholder for any class. The + commands \DescRef{\LabelBase.cmd.ifVTeX} and + \DescRef{\LabelBase.cmd.ifundefinedorrelax} are explained later in this + section. +\end{Example} + +Authors of packages and classes should use the same internal names as +\KOMAScript{} itself. For completeness, the user commands are also given in +the following explanations.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scr@ifundefinedorrelax}% + \Parameter{name}\Parameter{then code}\Parameter{else code}% + \Macro{ifundefinedorrelax}% + \Parameter{name}\Parameter{then code}\Parameter{else code} +\end{Declaration} +This command works like \Macro{@ifundefined} from the \LaTeX{} kernel (see +\cite{latex:source2e}). So the \PName{then code} will be executed if +\PName{name} is the name of a command that is currently either not defined or +\Macro{relax}. Otherwise, the \PName{else code} will be executed. Unlike +\Macro{@ifundefined}, no hash memory is allocated nor is \Macro{\PName{Name}} +set to \Macro{relax} if \Macro{\PName{name}} was previously undefined.% +\EndIndexGroup + +\begin{Declaration} + \Macro{ifnotundefined}\Parameter{name}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If the command with the given name has already been defined, the \PName{then +code} will be executed. Otherwise, the \PName{else code} will be executed. +Since \eTeX{} already has a primitive \Macro{ifdefined}, this somewhat +unwieldy name, unfortunately, had to be chosen. There is no corresponding +internal command.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scr@ifluatex} + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If\ChangedAt{v3.21}{\Package{scrbase}} you use lua\TeX{}, the \PName{then +code} will be executed. Otherwise, the \PName{else code} will be executed. +\iftrue% Umbruchkorrekturtext +This test is rarely useful. % +\fi% +As a rule, it is better to test directly for the command you want. +There\textnote{Attention!} is no user equivalent for this instruction. Use the +\Package{ifluatex}\important{\Package{ifluatex}} package instead (see +\cite{package:ifluatex}).% +\EndIndexGroup + + +\iffalse% It makes no sense to document this instruction yet +\begin{Declaration} + \Macro{scr@ifpdforluatex} + \Parameter{then code}\Parameter{else code} +\end{Declaration} +Until lua\TeX~0.85, it was mostly irrelevant whether you used pdf\TeX{} or +lua\TeX{}. This command, which executes the \PName{then code} in both cases, +derives from that fact. If neither pdf\TeX{} nor lua\TeX{} is used, the +\PName{else code} will be executed. Since version~0.85, lua\TeX{} has given up +compatibility with many of its commands. Therefore this distinction is no +longer useful in practice and is no longer used by \KOMAScript{} itself. There +is no user equivalent of this statement.% +\EndIndexGroup +\fi + +\begin{Declaration} + \Macro{scr@ifpdftex}% + \Parameter{then code}\Parameter{else code}% + \Macro{ifpdftex}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If you use pdf\TeX{}, the \PName{then code} will be executed. Otherwise, the +\PName{else code} will be executed. It does not matter whether a PDF-file is +actually generated or not. This test is rarely useful. As a rule, you should +test directly for the command you want instead.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scr@ifVTeX}% + \Parameter{then code}\Parameter{else code}% + \Macro{ifVTeX}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If you use V\TeX{}, the \PName{then code} will be executed. Otherwise, the +\PName{else code} will be executed. This test is seldom useful. As a rule, +you should test directly for the command you want instead.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scr@ifpdfoutput}% + \Parameter{then code}\Parameter{else code}% + \Macro{ifpdfoutput}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If a PDF file is generated, the \PName{then code} will be executed. Otherwise, +the \PName{else code} will be executed. It does not matter whether PDF file is +created using lua\TeX{}, pdf\TeX{}, or V\TeX{}, or \XeTeX{}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scr@ifpsoutput}% + \Parameter{then code}\Parameter{else code}% + \Macro{ifpsoutput}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If a PostScript file is generated, the \PName{then code} will be executed. +Otherwise, the \PName{else code} will be executed. V\TeX{} can generate +PostScript directly, which is recognized here. However, if V\TeX{} is not used +but the switch \Macro{if@dvips} has been defined, the decision depends on that +switch. \KOMAScript{} provides \Macro{if@dvips} in +\hyperref[cha:typearea]{\Package{typearea}}\IndexPackage{typearea}% +\IndexCmd{if@dvips}. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scr@ifdvioutput}% + \Parameter{then code}\Parameter{else code}% + \Macro{ifdvioutput}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If a DVI-file is generated, the \PName{then code} will be executed. Otherwise, +the \PName{else code} will be executed. A DVI file is always assumed to be +generated if no direct output of a PDF file or a PostScript file can be +detected.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{if@atdocument}\ \PName{then code}\ % + \textMacro{else}\ \PName{else code}\ \textMacro{fi} +\end{Declaration} +This conditional command intentionally exists only as an internal command. In +the document preamble, \Macro{if@atdocument} corresponds to \Macro{iffalse}. +After \Macro{begin}\PParameter{document}, it corresponds to \Macro{iftrue}. +Authors of classes and packages may find this command useful if a command +should behave differently depending on whether it is used in the preamble or +inside document body. Note\textnote{Attention!} that this command is a +condition using \TeX{} syntax and not \LaTeX{} syntax! +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifstr}\Parameter{string 1}\Parameter{string 2}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +Both \PName{string} arguments are expanded and then compared. If the +expansions are the same, the \PName{then code} will be executed. Otherwise the +\PName{else code} will be executed. There is no corresponding internal +command. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifstrstart}\Parameter{string 1}\Parameter{string 2}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +Both\ChangedAt{v3.12}{\Package{scrbase}} \PName{string} arguments are expanded +and then compared. If \PName{string 1}, apart from white space, begins with +\PName{string 2}, the \PName{then code} will be executed. Otherwise, the +\PName{else code} will be executed. There is no corresponding internal +command.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisdimen}\Parameter{expression}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If\ChangedAt{v3.12}{\Package{scrbase}} \PName{expression} expands to a +\Macro{dimen}, i.\,e. a \TeX{} length register, the \PName{then code} will be +executed. Otherwise the \PName{else code} will be executed. The command is not +completely expandable, and there is no corresponding internal command.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisdimension}\Parameter{expression}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If\ChangedAt{v3.12}{\Package{scrbase}} \PName{expression} expands to something +syntactically equivalent to a length, the \PName{then code} will be executed. +Otherwise the \PName{else code} will be executed. Note\textnote{Attention!} +that unknown units will cause an error message. The command is not completely +expandable, and there is no corresponding internal command.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifdimen}\Parameter{string}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +The \PName{then code} will be executed if the first-order expansion of +\PName{string} consists of digits and a valid length unit. Otherwise, the +\PName{else code} will be used. There is no corresponding internal command.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisdimexpr}\Parameter{expression}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If\ChangedAt{v3.12}{\Package{scrbase}} \PName{expression} expands to an \eTeX{} +\Macro{dimexpr}\IndexCmd{dimexpr}, the \PName{then code} will be executed. +Otherwise, the \PName{else code} will be executed. Note\textnote{Attention!} +that illegal expressions will result in error messages. The command is not +completely expandable, and there is no corresponding internal command.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisskip}\Parameter{expression}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If\ChangedAt{v3.12}{\Package{scrbase}} \PName{expression} expands to a +\Macro{skip}, i.\,e. a \TeX{} distance, the \PName{then code} will be +executed. Otherwise, the \PName{else code} will be executed. The command is not +completely expandable, and there is no corresponding internal command.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisglue}\Parameter{expression}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If\ChangedAt{v3.12}{\Package{scrbase}} \PName{expression} expands to something +syntactically equivalent of the value of a skip, the \PName{then code} will be +executed. Otherwise, the \PName{else code} will be executed. +Note\textnote{Attention!} that invalid units will result in an error message. +The command is not completely expandable, and there is no corresponding +internal command.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisglueexpr}\Parameter{expression}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If\ChangedAt{v3.12}{\Package{scrbase}} \PName{expression} expands to a +\Macro{glueexpr}, i.\,e. an \eTeX{} distance expression, the \PName{then +code} will be executed. Otherwise, the \PName{else code} will be executed. +Note,\textnote{Attention!} that illegal expressions will result in error +messages. The command is not completely expandable, and there is no +corresponding internal command.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifiscounter}\Parameter{counter}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If\ChangedAt{v3.12}{\Package{scrbase}} \PName{counter} is defined as a +\LaTeX{} counter, the \PName{then code} will be executed. Otherwise, the +\PName{else code} will be executed. The command is not completely expandable, +and there is no corresponding internal command.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifiscount}\Parameter{count}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If\ChangedAt{v3.12}{\Package{scrbase}} \PName{count} expands to a +\Macro{count}, i.\,e. a \TeX{} counter, the \PName{then code} will be +executed. Otherwise, the \PName{else code} will be executed. The command is +not completely expandable, and there is no corresponding internal command. For +tests of \LaTeX{} counters, see \DescRef{\LabelBase.cmd.ifiscounter}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisinteger}\Parameter{expression}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If\ChangedAt{v3.12}{\Package{scrbase}} \PName{expression} expands to something +syntactically equivalent to of the value of a counter, i.\,e. a negative or +positive integer, the \PName{then code} will be executed. Otherwise, the +\PName{else code} will be executed. The command is not completely expandable, +and there is no corresponding internal command.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifnumber}\Parameter{string}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +The \PName{then code} will be executed if the first-order expansion of +\PName{string} consists only of digits. Otherwise, the \PName{else code} will +be used. There is no corresponding internal command. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisnumexpr}\Parameter{expression}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +If\ChangedAt{v3.12}{\Package{scrbase}} \PName{expression} expands to a +\Macro{numexpr}, i.\,e. an \eTeX{} number expression, the \PName{then code} +will be executed. Otherwise, the \PName{else code} will be executed. +Note\textnote{Attention!} that illegal expressions will result in error +messages. The command is not completely expandable, and there is no +corresponding internal command.% +\EndIndexGroup + + +\section{Defining Language-Dependent Terms} +\seclabel{languageSupport} +\BeginIndexGroup +\BeginIndex{}{language>definition} +\index{language>dependent terms|see{language definition}} +\index{terms>language-dependent|see{language definition}} + +Beginners often find it difficult to change language-dependent terms +\Macro{listfigurename}\IndexCmd{listfigurename}, by default usually ``List of +Figures.'' For example, if these are simply redefined with +\Macro{renewcommand} in the document preamble, they will not survive a later +change of language. If you use \Package{babel}\IndexCmd{babel}, the +redefinition in the preamble is overwritten with +\Macro{begin}\PParameter{document}. + +To define or change language-dependent terms, you normally have to redefine +commands like \Macro{captionsenglish} so that the new or redefined terms are +defined in addition to the previous terms. This is made more difficult by the +fact that some packages like \Package{german}\IndexPackage{german} or +\Package{ngerman}\IndexPackage{ngerman} redefine those settings when they are +loaded. These definitions, unfortunately, occur in a way that undoes all the +previous changes. For this reason, it makes sense to delay changes until +\Macro{begin}\PParameter{document} by using \Macro{AtBeginDocument}, that is, +after all packages have been loaded. A user can also use +\Macro{AtBeginDocument} or redefine the language-dependent terms not in the +preamble but after \Macro{begin}\PParameter{document}. + +Adding further to the difficulty, some packages define additional +language-dependent terms in \Macro{captions\PName{language}}, while others use +\Macro{extras\PName{language}}. So the user must understand the commands very +well in order to use the correct one in the right way. + +The \Package{scrbase} package therefore provides additional commands to define +or modify language-dependent terms, relieving the user of many of these +problems. These commands also let you simultaneously define or change the +language-dependent terms of several dialects or forms of a language. + +\begin{Declaration} + \Macro{defcaptionname}% + \Parameter{language list}\Parameter{term}\Parameter{definition}% + \Macro{providecaptionname}% + \Parameter{language list}\Parameter{term}\Parameter{definition}% + \Macro{newcaptionname}% + \Parameter{language list}\Parameter{term}\Parameter{definition}% + \Macro{renewcaptionname}% + \Parameter{language list}\Parameter{term}\Parameter{definition}% + \Macro{defcaptionname*}% + \Parameter{language list}\Parameter{term}\Parameter{definition}% + \Macro{providecaptionname*}% + \Parameter{language list}\Parameter{term}\Parameter{definition}% + \Macro{newcaptionname*}% + \Parameter{language list}\Parameter{term}\Parameter{definition}% + \Macro{renewcaptionname*}% + \Parameter{language list}\Parameter{term}\Parameter{definition} +\end{Declaration} +With these four commands and their starred variants, you can assign a +\PName{definition} for a particular language to a \PName{term}. Several +languages can be concatenated with comma in the \PName{language list}. + +The \PName{term} is always a macro. The commands differ depending on whether a +given language or a \PName{term} within a given language is already defined at +the time the command is called. + +If a language is not defined, \Macro{providecaptionname} does nothing other +than write a message to the log file. This happens only once for each +language. If a language is defined but does not yet contain a corresponding +\PName{term}, it will be defined using \PName{definition}. However, the +\PName{term} will not be redefined if the language already has such a +definition; instead, an appropriate message is written to the log file. + +On the other hand, if a language has not yet been defined, +\Macro{newcaptionname} defines a new language command will be created. For the +language \PValue{USenglish}, for example, this would be the language command +\Macro{captionsUSenglish}. This definition will also be noted in the log file. +If \PName{term} is not yet defined in this language, it will be defined using +\PName{definition}. If the \PName{term} already exists in a language, an error +message is issued. + +The \Macro{renewcaptionname} command behaves still differently. If a language +is undefined, an error message is issued. If the \PName{term} is not defined +in this language, an error message is also issued. If the \PName{term} is +defined in the language, it will be redefined to \PName{definition}. + +The\ChangedAt{v3.12}{\Package{scrbase}} \Macro{defcaptionname} command always +defines the \PName{term}, thus overwriting any previous definition. As with +\Macro{providecaptionname}, the language specified need not be previously +defined. + +\KOMAScript{} itself uses \Macro{providecaptionname} to define the commands in +\autoref{sec:scrlttr2-experts.languages}. +\DescPageRef{scrlttr2-experts.cmd.yourrefname}. + +\begin{Example} + If you prefer ``fig.'' instead of ``figure'' in \PValue{USenglish}, you can + achieve this using: +\begin{lstcode} + \renewcaptionname{USenglish}{\figurename}{fig.} +\end{lstcode} + If you want the same change not only in \PValue{USenglish} but also in + \PValue{UKenglish}, you do not need an additional: +\begin{lstcode} + \renewcaptionname{UKenglish}{\figurename}{fig.} +\end{lstcode} + but can simply extend the \PName{language list}: +\begin{lstcode} + \renewcaptionname{USenglish,UKenglish}{\figurename}{fig.} +\end{lstcode} + You can extend the \PName{language list} in the same manner with + \PValue{american}, \PValue{australian}, \PValue{british}, \PValue{canadian}, + and \PValue{newzealand}. +\end{Example} + +Since \KOMAScript~3.12\ChangedAt{v3.12}{\Package{scrbase}}, you no longer need +to delay the definition or redefinition until +\Macro{begin}\PParameter{document} using \Macro{AtBeginDocument} because +\Package{scrbase} does this itself if the commands are called in the +document's preamble. Additionally, \Package{scrbase} now checks if a term +should be redefined in \Macro{extras\PName{language}} instead of +\Macro{captions\PName{language}}. The new starred variants of the commands +always use \Macro{extras\PName{language}}. So redefining language-dependent +terms for packages like \Package{hyperref} that use +\Macro{extras\PName{language}} should work as expected. + +Language-dependent terms that are commonly defined by classes and language +packages are described in \autoref{tab:scrbase.commonNames}. + +\begin{desclist} + \renewcommand*{\abovecaptionskipcorrection}{-\normalbaselineskip}% + \desccaption[{% + Overview of common language-dependent terms% + }]{% + Overview of language-dependent terms of typical language packages% + \label{tab:scrbase.commonNames}% + }{% + Overview of common language dependent terms + (\emph{continued})% + }% + \entry{\Macro{abstractname}}{% + heading of the abstract% + \IndexCmd{abstractname}% + }% + \entry{\Macro{alsoname}}{% + ``see also'' in additional cross references of the index% + \IndexCmd{alsoname}% + }% + \entry{\Macro{appendixname}}{% + ``appendix'' in the heading of an appendix chapter% + \IndexCmd{appendixname}% + }% + \entry{\Macro{bibname}}{% + heading of the bibliography% + \IndexCmd{bibname}% + }% + \entry{\Macro{ccname}}{% + prefix heading for the distribution list of a letter% + \IndexCmd{ccname}% + }% + \entry{\Macro{chaptername}}{% + ``chapter'' in the heading of a chapter% + \IndexCmd{chaptername}% + }% + \entry{\Macro{contentsname}}{% + heading of the table of contents% + \IndexCmd{contentsname}% + }% + \entry{\Macro{enclname}}{% + prefix heading for the enclosures of a letter% + \IndexCmd{enclname}% + }% + \entry{\Macro{figurename}}{% + prefix heading of figure captions% + \IndexCmd{figurename}% + }% + \entry{\Macro{glossaryname}}{% + heading of the glossary% + \IndexCmd{glossaryname}% + }% + \entry{\Macro{headtoname}}{% + ``to'' in header of letter pages% + \IndexCmd{headtoname}% + }% + \entry{\Macro{indexname}}{% + heading of the index% + \IndexCmd{indexname}% + }% + \entry{\Macro{listfigurename}}{% + heading of the list of figures% + \IndexCmd{listfigurename}% + }% + \entry{\Macro{listtablename}}{% + heading of the list of tables% + \IndexCmd{listtablename}% + }% + \entry{\Macro{pagename}}{% + ``page'' in the pagination of letters% + \IndexCmd{pagename}% + }% + \entry{\Macro{partname}}{% + ``part'' in the heading of a part% + \IndexCmd{partname}% + }% + \entry{\Macro{prefacename}}{% + heading of the preface% + \IndexCmd{prefacename}% + }% + \entry{\Macro{proofname}}{% + prefix heading of mathematical proofs% + \IndexCmd{proofname}% + }% + \entry{\Macro{refname}}{% + heading of the list of references% + \IndexCmd{refname}% + }% + \entry{\Macro{seename}}{% + ``see'' in cross references of the index% + \IndexCmd{seename}% + }% + \entry{\Macro{tablename}}{% + prefix heading at table captions% + \IndexCmd{tablename}% + }% +\end{desclist} +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Identifying \KOMAScript} +\seclabel{identify} + +Although\,---\,or especially because\,---\,\Package{scrbase} is generally +designed as a package for authors of classes and packages, it is of course +used by the \KOMAScript{} classes and most \KOMAScript{} packages. It +therefore contains two commands that are present in all \KOMAScript{} classes +and all basic \KOMAScript{} packages. + +\begin{Declaration} + \Macro{KOMAScript} +\end{Declaration} +This command simply sets the word ``\KOMAScript'' in sans-serif font and with +a slight tracking for the capitals. By the way, all \KOMAScript{} classes and +packages define this command as required. The definition is robust using +\Macro{DeclareRobustCommand}. Since packages that do not belong to +\KOMAScript{} can also define this command, its existence should not be +interpreted as an indication that a \KOMAScript{} package is in use.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{KOMAScriptVersion} +\end{Declaration} +\KOMAScript{} defines the major version of \KOMAScript{} in this command. It +has the form ``\PName{date} \PName{version} \texttt{KOMA-Script}''. This major +version is same for all \KOMAScript{} classes and all \KOMAScript{} packages +used by the classes. For this reason, it can be queried after you +load \Package{scrbase}, too. For example, this guide was made using +\KOMAScript{} version ``\KOMAScriptVersion''. +% +\EndIndexGroup + + +\section{Extensions to the \LaTeX{} Kernel} +\seclabel{latexkernel} + +Sometimes the \LaTeX{} kernel itself provides commands but lacks other very +similar commands that would often be useful. A few such commands are provided +by \Package{scrbase} for authors of packages and classes. + +\begin{Declaration} + \Macro{ClassInfoNoLine}\Parameter{class name}\Parameter{information}% + \Macro{PackageInfoNoLine}\Parameter{package name}\Parameter{information}% +\end{Declaration}% +The \LaTeX{} kernel already provides authors of classes and packages commands +like \Macro{ClassInfo} and \Macro{PackageInfo} to write information, along +with the current line number, to the log file. In addition to +\Macro{PackageWarning} and \Macro{ClassWarning}, which throw warning messages +with line numbers, it also provides \Macro{PackageWarningNoLine} and +\Macro{ClassWarningNoLine} for warning messages without line numbers. However +the obvious commands \Macro{ClassInfoNoLine} and \Macro{PackageInfoNoLine}, +for writing information without line numbers into the log file, are missing. +The \Package{scrbase} package provides them. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{l@addto@macro}\Parameter{command}\Parameter{extension}% +\end{Declaration}% +The \LaTeX{} kernel provides an internal command \Macro{g@addto@macro} to +extend the definition of macro \Macro{command} globally with +\PName{extension}. This works in this form only for macros that have no +arguments. However, sometimes you may need a command like this that works +locally within the current group. The \Package{scrbase} package provides such +a command with \Macro{l@addto@macro}. An alternative is to use the +\Package{etoolbox}\IndexPackage{etoolbox} or +\Package{xpatch}\IndexPackage{xpatch} package, which offers a whole range of +such commands for different purposes (see \cite{package:etoolbox} or +\cite{package:xpatch}).% +\EndIndexGroup + + +\section{Extensions to the Mathematical Features of \eTeX} +\seclabel{etex} + +\eTeX{}, which is used by \LaTeX{} and loaded by \KOMAScript{}, has extended +capabilities for calculating simple arithmetic with \TeX{} counters and +integers using \Macro{numexpr}\IndexCmd{numexpr}. The four basic arithmetic +operations and parentheses are supported. Division is rounded +correctly. Sometimes additional operators would be useful. + +\begin{Declaration} + \Macro{XdivY}\Parameter{dividend}\Parameter{divisor}% + \Macro{XmodY}\Parameter{dividend}\Parameter{divisor}% +\end{Declaration}% +The command\ChangedAt{v3.05a}{\Package{scrbase}} +\Macro{XdivY} returns the value of the integer quotient, with command +\Macro{XmodY} giving the value of the remainder. This type of of division is +defined by the equation +\[ +\textit{dividend} = \textit{divisor} \cdot +\textit{integer quotient} + \textit{remainder} +\] +where \textit{dividend}, \textit{divisor}, and \textit{remainder} are +integers, \textit{remainder} is greater or equal to 0 and less than +\textit{divisor}, and \textit{divisor} is a natural number greater than 0. + +You can assign the value to a counter or use it directly within an expression +using \Macro{numexpr}. To output the value as an Arabic number, you must +prefix it with \Macro{the}.% +% +\EndIndexGroup +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% ispell-local-dictionary: "en_GB" +%%% coding: us-ascii +%%% TeX-master: "../guide.tex" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrbookreportarticle-experts.tex b/macros/latex/contrib/koma-script/source-doc/english/scrbookreportarticle-experts.tex new file mode 100644 index 0000000000..1629f29923 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrbookreportarticle-experts.tex @@ -0,0 +1,1786 @@ +% ====================================================================== +% scrbookreportarticle-experts.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrbookreportarticle-experts.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrbook, scrreprt, and scrartcl of the KOMA-Script guide +% expert part +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber scrbook, scrreprt und scrartcl im Experten-Teil der +% KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrbookreportarticle-experts.tex} + [$Date: 2019-01-15 08:29:44 +0100 (Tue, 15 Jan 2019) $ + KOMA-Script guide (chapter: scrbook, scrreprt, scrartcl for + experts)] + +\translator{Gernot Hassenpflug\and Markus Kohm\and Karl Hagen} + +% Date of the translated German file: 2018-10-14 + +\chapter[{Additional Information about the Main Classes and + \Package{scrextend}}]{Additional Information about the Main Classes + \Class{scrbook}, + \Class{scrreprt}, and \Class{scrartcl} as well as the Package + \Package{scrextend}} +\labelbase{maincls-experts} +\BeginIndexGroup +\BeginIndex{Class}{scrartcl}% +\BeginIndex{Class}{scrbook}% +\BeginIndex{Class}{scrreprt}% +\BeginIndex{Package}{scrextend}% +This chapter provides additional information about the \KOMAScript{} classes +\Class{scrbook}, \Class{scrreprt}, and \Class{scrartcl} and some commands that +are also available in \Package{scrextend}. \iffree{Some parts of the chapter + are found only in the German \KOMAScript{} book \cite{book:komascript}. This + should not be a problem because the}{The} average user, who only wants to +use the classes, will seldom need this information. Some of this information +is addressed to users with non-standard requirements or who want to write +their own classes based on a \KOMAScript{} class. Other parts describe +features that exist only for the sake of compatibility with the standard +classes or earlier versions of \KOMAScript{}. Portions that describe features +that exist only for reasons of compatibility with earlier versions of +\KOMAScript{} are printed in sans serif font. You should not use them any +longer. + +\LoadNonFree{scrbookreportarticle-experts}{0} + +\section{Extensions to User Commands} +\seclabel{addInfos} + +\LoadNonFree{scrbookreportarticle-experts}{1} + + +\section{\KOMAScript's Interaction with Other Packages} +\seclabel{coexistence} + +\LoadNonFree{scrbookreportarticle-experts}{2} + + +\section{Expert Commands} +\seclabel{experts} + +This sections describes commands that are of little or no interest to the +average user. These commands offer additional features for experts. Because +the information is addressed to experts, it is condensed. + +% \subsection{Identification} +% \seclabel{identification} + +\begin{Declaration} + \Macro{KOMAClassName}% + \Macro{ClassName} +\end{Declaration} +\Macro{KOMAClassName} stores the name of the \KOMAScript{} class currently in +use. So if you want to know if a \KOMAScript{} class is used, you can easily +test for this command. In contrast, \Macro{ClassName} indicates which standard +class has been replaced by this \KOMAScript{} class. + +Note\textnote{Attention!} in this context, however, that the existence of +\DescRef{scrbase.cmd.KOMAScript}\IndexCmd{KOMAScript} cannot guarantee that a +\KOMAScript{} class is in use. For one thing, all \KOMAScript{} packages +define this command. For another, other packages may find it useful to define +the \KOMAScript{} label using this name.% +% +\EndIndexGroup + +% \subsection{Entries to the Table of Contents} +% \seclabel{toc} + +\begin{Declaration} + \Macro{addtocentrydefault}\Parameter{level}\Parameter{number}% + \Parameter{heading} +\end{Declaration} +The\ChangedAt{v3.08}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} \KOMAScript{} classes do not use +\Macro{addcontentsline}\IndexCmd{addcontentsline}% +\important{\Macro{addcontentsline}} directly to make entries in the table of +contents. Instead, they call \Macro{addtocentrydefault} with similar +arguments. The command can be used for both numbered and unnumbered entries. +The \PName{level} is the sectioning level, that is \PValue{part}, +\PValue{chapter}, \PValue{section}, \PValue{subsection}, +\PValue{subsubsection}, \PValue{paragraph}, or \PValue{subparagraph}. The +formatted sectioning number is given the second argument, \PName{number}. This +argument can be empty. The text of the entry is given by the \PName{heading} +argument. You should protect fragile commands inside this argument with +\Macro{protect}\IndexCmd{protect}\important{\Macro{protect}}. + +One notable feature of the \PName{number} argument is that an empty argument +indicates that an unnumbered entry should be generated. By default, +\KOMAScript{} uses +\begin{quote} + \Macro{addcontentsline}\PParameter{toc}\Parameter{level}% + \Parameter{heading} +\end{quote} +for this. If the argument is not empty, however, an entry with number +will be created and \PName{number} is the formatted heading +number. \KOMAScript{} uses +\begin{quote}\raggedright + \Macro{addcontentsline}\PParameter{toc}\Parameter{level}% + \PParameter{\%\\ + \quad\Macro{protect}\DescRef{tocbasic.cmd.numberline}\Parameter{number}% + \PName{heading}\%\\ + } +\end{quote} +to create this entry. + +Package authors and authors of wrapper classes can redefine this command to +alter the entries. For example\textnote{Example}, you could use +\begin{lstcode} + \renewcommand{\addtocentrydefault}[3]{% + \ifstr{#3}{}{% + \ifstr{#2}{}{% + \addcontentsline{toc}{#1}{#3}% + }{% + \addcontentsline{toc}{#1}{\protect\numberline{#2}#3}% + }% + }% + }% +\end{lstcode} +to\IndexCmd{ifstr} omit entries with an empty \PName{heading}. In practice, +such a change is not necessary because the \KOMAScript{} classes already use +another method to suppress empty entries. See the description of the +sectioning commands in \autoref{sec:maincls.structure}, starting on +\DescPageRef{maincls.cmd.part} for this.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{addparttocentry}\Parameter{number}\Parameter{heading} + \Macro{addchaptertocentry}\Parameter{number}\Parameter{heading} + \Macro{addsectiontocentry}\Parameter{number}\Parameter{heading} + \Macro{addsubsectiontocentry}\Parameter{number}\Parameter{heading} + \Macro{addsubsubsectiontocentry}\Parameter{number}\Parameter{heading} + \Macro{addparagraphtocentry}\Parameter{number}\Parameter{heading} + \Macro{addsubparagraphtocentry}\Parameter{number}\Parameter{heading} +\end{Declaration}% +The\ChangedAt{v3.08}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} \KOMAScript{} classes call the previously described +command +\DescRef{\LabelBase.cmd.addtocentrydefault}\IndexCmd{addtocentrydefault}% +\important{\DescRef{\LabelBase.cmd.addtocentrydefault}} directly only if no +individual command for the \PName{level} has been defined or if that command +is \Macro{relax}\IndexCmd{relax}\important{\Macro{relax}}. By default, all +these commands simply pass their own \PName{level} and arguments directly to +\DescRef{\LabelBase.cmd.addtocentrydefault}.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{raggedchapterentry} +\end{Declaration} +In\ChangedAt{v3.21}{\Class{scrbook}\and \Class{scrreprt}} earlier versions of +\KOMAScript{}, it was possible to define the \Macro{raggedchapterentry} macro +as \Macro{raggedright} to print chapter entries in the table of contents +left-aligned instead of fully justified. Officially, this feature has not +existed in \KOMAScript{} since version~3.21. + +In fact, the \PValue{raggedentrytext} attribute for the \PValue{tocline} +TOC-entry style of the \Package{tocbasic}\IndexPackage{tocbasic} package is +implemented by setting the \Macro{ragged\PName{entry level}entry} macro to +either \Macro{relax} or \Macro{raggedright}. This attribute is evaluated by +checking whether the corresponding macro is defined as \Macro{raggedright}. If +so, the text is printed left-aligned. With any other definition, no ragged +margins are used. + +Since it was previously documented that \Macro{raggedchapterentry} should not +be defined as anything other than \Macro{raggedright}, this behaviour is +compatible with the documented behaviour of earlier versions. As noted in +earlier releases, other definitions of \Macro{raggedchapterentry}\,---\,and +now also of \Macro{raggedsectionentry} and similar macros for other entry +levels\,---\,may lead to unexpected results. + +You should select the desired justification for the all table-of-contents +entries using the \PValue{raggedentrytext} attribute of \PValue{tocline} +rather than attempting to set the attribute for specific entry levels.% +\EndIndexGroup + + +% \subsection{Font Settings} +% \seclabel{fonts} + + +\begin{Declaration} + \Macro{@fontsizefilebase}% + \Macro{changefontsizes}\Parameter{font size} +\end{Declaration} +The \File{scrsize} prefix for file names of font-size files described +in \autoref{sec:maincls-experts.addInfos}\iffree{}{ on +\DescPageRef{maincls-experts.option.fontsize}} is just the default for the +internal \Macro{@fontsizefilebase}\IndexCmd{@fontsizefilebase} macro. This +default is used only when the macro is not yet defined when loading a +\KOMAScript{} class or the \Package{scrextend} package. Authors of wrapper +classes can redefine this macro to use completely different font-size files. +Similarly\textnote{Hint!} authors of wrapper classes can change or deactivate +the fallback solution for unknown font sizes by redefining the +\Macro{changefontsizes}\important{\Macro{changefontsizes}} macro. This macro +has exactly one argument: the desired \PName{font size}. +However\textnote{Attention!}, the \Macro{changefontsizes} macro is not +designed as an end-user instruction.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{newkomafont}\OParameter{warning}\Parameter{element}% + \Parameter{default}% + \Macro{aliaskomafont}\Parameter{alias}\Parameter{element} +\end{Declaration} +Experts can use \Macro{newkomafont} to define a \PName{default} for the font +style of an \PName{element}. Subsequently, that default can be changed with +the \DescRef{maincls.cmd.setkomafont} and \DescRef{maincls.cmd.addtokomafont} +commands (see \autoref{sec:maincls.textmarkup}, +\DescPageRef{maincls.cmd.setkomafont}). Of course, merely defining the font +style does not actually put it to use. You must make sure you include the +\DescRef{maincls.cmd.usekomafont}% +\important{\DescRef{maincls.cmd.usekomafont}}\IndexCmd{usekomafont} command +(see \DescPageRef{maincls.cmd.usekomafont}) for this \PName{element} in your +code at the appropriate places. Calling \Macro{newkomafont} for an existing +element will result in error messages. + +The optional \PName{warning} argument defines a warning message. The +\KOMAScript{} classes output it with \Macro{ClassWarning}, and the +\Package{scrextend} package with \Macro{PackageWarning}, whenever the default +font style of that \PName{element} is changed. The package \Package{scrkbase} +is listed as the generator of the warning. + +The \Macro{aliaskomafont} command defines an \PName{alias} for a previously +defined \PName{element}. \KOMAScript{} informs the user in the \File{log} file +about the actual name of the element if it uses an \PName{alias}. +You\textnote{Hint!} can use an \PName{alias}, for example, if you think of a +better name for an element and the old name should remain usable for the sake +of compatibility. It can also increase user-friendliness by creating aliases +for all the terms that different users may intuitively choose. \KOMAScript{} +itself makes use of this possibility.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{addtokomafontrelaxlist}\Parameter{macro} + \Macro{addtokomafontonearglist}\Parameter{macro} + \Macro{addtokomafontgobblelist}\Parameter{macro} +\end{Declaration} +As already mentioned in \autoref{part:forAuthors} of this manual, font +settings of elements should consist only of commands to select the size, +family, encoding, series, shape, or colour. Colour changes are not +always transparent in \LaTeX{} and therefore can cause in unwanted side-effects +if you use \DescRef{maincls.cmd.usekomafont} at an inappropriate place. + +Users tend to put very different, sometimes critical, things into the font +setting of an element, such as \Macro{MakeUppercase} at the very end of the +setting. As much as possible, the internal use of the font settings has been +implemented so that many of these prohibited elements still do no harm, and it +usually works even if the last command in a font setting expects an argument, +for example using \Macro{textbf} instead of \Macro{bfseries}. But there is no +guarantee for that. + +Internally, \KOMAScript{} must sometimes limit font changes to real font +settings. This is accomplished, for example, by using +\DescRef{maincls.cmd.usefontofkomafont}% +\IndexCmd{usefontofkomafont}% +\IndexCmd{usesizeofkomafont}\IndexCmd{useencodingofkomafont}% +\IndexCmd{usefamilyofkomafont}\IndexCmd{useseriesofkomafont}% +\IndexCmd{useshapeofkomafont} instead of \DescRef{maincls.cmd.usekomafont} +(see \autoref{sec:maincls.textmarkup}, +\DescPageRef{maincls.cmd.usefontofkomafont}). + +Nevertheless, the \DescRef{maincls.cmd.usefontofkomafont} command and its +siblings have their limitations. Therefore you must not use a command that +always needs a fully expandable argument inside the font setting of an +element. But this is exactly what \Macro{MakeUppercase} needs. +Therefore\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and +\Class{scrartcl}} \KOMAScript{} maintains an internal list of macros that +should become \Macro{relax} inside \DescRef{maincls.cmd.usefontofkomafont} and +its siblings. Since \KOMAScript~3.24\ChangedAt{v3.24}{\Class{scrbook}\and +\Class{scrreprt}\and \Class{scrartcl}} only \Macro{normalcolor} is added to +this list by default. + +Note that the given \PName{macro} is actually just set to \Macro{relax}. So +any arguments within the font setting will be executed locally, if applicable. +Therefore you should never add commands like \Macro{setlength} to the list. +You are responsible for all errors resulting caused by using +\Macro{addtokomafontrelaxlist}. Also, do not take this command as license to +add all sorts of commands to the font settings! + +For\ChangedAt{v3.24}{\Class{scrbook}\and \Class{scrreprt}\and +\Class{scrartcl}} commands whose first argument should be executed without an +additional group, there is \Macro{addtokomatfontonearglist}. The specified +macro is set to \Macro{@firstofone}. By default \Macro{MakeUppercase} and +\Macro{MakeLowercase} are added to this list. + +If\ChangedAt{v3.19}{\Class{scrbook}\and \Class{scrreprt}\and +\Class{scrartcl}}, on the other hand, a \PName{macro} and its first argument +should be ignored locally inside \DescRef{maincls.cmd.usefontofkomafont} and +its siblings, you can use \Macro{addtokomafontgobblelist} instead of +\Macro{addtokomafontrelaxlist}. An example of this is the command +\Macro{color}, which must be ignored along with the colour name and therefore +is a member of this list by default. + +Note the defaults of these three lists may change in future version. If you +need a certain commands in one of the lists, you should should explicitly add +them yourself.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{IfExistskomafont}\Parameter{element}\Parameter{then code}% + \Parameter{else code} + \Macro{IfIsAliaskomafont}\Parameter{element}\Parameter{then code}% + \Parameter{else code} +\end{Declaration} +Which\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Class{scrlttr2}} elements are defined depends on the +version of \KOMAScript. So it sometimes makes sense to test in advance whether +a specific \PName{element} even exists. The \Macro{IfExistskomafont} command +executes the \PName{then code} if and only if an \PName{element} has been +defined using \DescRef{\LabelBase.cmd.newkomafont} or +\DescRef{\LabelBase.cmd.aliaskomafont} and therefore can also be changed using +\DescRef{maincls.cmd.setkomafont} or \DescRef{maincls.cmd.addtokomafont} and +can be used by one of the \Macro{use\dots komafont} commands. Otherwise it +executes the \PName{else code}.% + +In contrast, \Macro{IfIsAliaskomafont}\ChangedAt{v3.25}{\Class{scrbook}\and +\Class{scrreprt}\and \Class{scrartcl}\and \Class{scrlttr2}} executes +\PName{then code} only if \PName{element} has been defined with +\DescRef{\LabelBase.cmd.aliaskomafont} as an alias of another element. For +undefined elements as well as for elements defined with +\DescRef{\LabelBase.cmd.newkomafont}, however, it executes the +\PName{else code}.% +\EndIndexGroup + +% \subsubsection{Paragraph Indention or Gap} +% \seclabel{parskip} + +\begin{Declaration} + \Macro{setparsizes}\Parameter{indent}\Parameter{distance} + \Parameter{last-line end space} +\end{Declaration} +\KOMAScript{} provides the option to set the indent of the first line of a new +paragraph, the distance between paragraphs, and the white space required at the +end of the last line of each paragraph. You should use this command whenever +the \OptionValueRef{maincls}{parskip}{relative} option should recognize these +changes. \KOMAScript{}\textnote{example} itself uses this command, for +example, in the form +\begin{lstcode} + \setparsizes{0pt}{0pt}{0pt plus 1fil} +\end{lstcode} +to eliminate both the paragraph indentation and inter-paragraph spacing, as +well as to allow any amount of white space at the end of the last line of the +paragraph. Such values are useful if a paragraph consists of only a box that +should be printed without vertical spacing and filling the whole column +width. If, on the other hand, the box should only span the whole width but use +the current settings for indentation and distance between paragraphs, then +\begin{lstcode} + \setlength{\parfillskip}{0pt plus 1fil} +\end{lstcode} +is preferable. + +Starting with \KOMAScript~3.17\ChangedAt{v3.17}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}}, recalculating or +reactivating\IndexCmd{activateareas} the type area or the margins (see +\autoref{cha:typearea}) also readjusts the values of \Macro{setparsizes} if +they have not been changed in the meantime. This is one more reason not to +change these values without using \KOMAScript. Setting compatibility to a +\KOMAScript{} version prior to 3.17 (see +\autoref{sec:maincls.compatibilityOptions}, +\DescPageRef{maincls.option.version}, option \DescRef{maincls.option.version}% +\IndexOption{version}\important{\OptionValueRef{maincls}{version}{3.17}}) +disables this recalculation.% +% +\EndIndexGroup + +% \subsection{Counters} +% \seclabel{counter} + +\LoadNonFree{scrbookreportarticle-experts}{3} + +% \subsubsection{Sections} +% \seclabel{sections} + +\begin{Declaration} + \Macro{DeclareSectionCommand}\OParameter{attributes}\Parameter{name}% + \Macro{DeclareNewSectionCommand}\OParameter{attributes}\Parameter{name}% + \Macro{RedeclareSectionCommand}\OParameter{attributes}\Parameter{name}% + \Macro{ProvideSectionCommand}\OParameter{attributes}\Parameter{name} +\end{Declaration} +With\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} these commands you can either define a new sectioning +command, \Macro{\PName{name}}, or modify an existing sectioning command, +\Macro{\PName{name}}. To do so, you use the optional argument to set several +\PName{attributes}. The \PName{attributes} are a comma-separated list of +\PName{key}=\PName{value} assignments. In addition to the style-independent +attributes shown in \autoref{tab:maincls-experts.declaresection.keys}, +\autopageref{tab:maincls-experts.declaresection.keys}, there are also +attributes that depend on the style. Currently the following styles are +available: +\begin{description}\setkomafont{descriptionlabel}{} +\item[\PValue{chapter}:] \ChangedAt{v3.18}{\Class{scrbook}\and + \Class{scrreprt}}The style for chapter headings. This style is used by + default for \DescRef{maincls.cmd.chapter}\IndexCmd{chapter} and indirectly + for \DescRef{maincls.cmd.addchap}\IndexCmd{addchap}. You can define new + sectioning commands using this style, but then they do not automatically + have an \Macro{add\dots} variant. To configure existing or new sectioning + commands, you can also use the attributes of + \autoref{tab:maincls-experts.declarechapterstyle.keys}, + \autopageref{tab:maincls-experts.declarechapterstyle.keys}. + The\textnote{Attention!} \DescRef{maincls.cmd.addchap} command, + like the starred variants, is configured automatically with + \DescRef{maincls.cmd.chapter} and cannot be modified independently. Note + that \Class{scrartcl}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} does not + provide this style. +\item[\PValue{part}:] \ChangedAt{v3.18}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}}The style for part headings. This + style is used by default for \DescRef{maincls.cmd.part}\IndexCmd{part} and + indirectly for \DescRef{maincls.cmd.addpart}\IndexCmd{addpart}. You can + define new sectioning commands using this style, but then they do not + automatically have an \Macro{add\dots} variant. To configure existing or new + sectioning commands, you can also use the attributes of + \autoref{tab:maincls-experts.declarepartstyle.keys}, + \autopageref{tab:maincls-experts.declarepartstyle.keys}. + Note\textnote{Attention!} that the \DescRef{maincls.cmd.addpart} command, + like the starred variants, is configured automatically with + \DescRef{maincls.cmd.part} and cannot be modified independently. +\item[\PValue{section}:] The style for section headings. This style is currently + used for \DescRef{maincls.cmd.section}\IndexCmd{section}, + \DescRef{maincls.cmd.subsection}\IndexCmd{subsection}, + \DescRef{maincls.cmd.subsubsection}\IndexCmd{subsubsection}, + \DescRef{maincls.cmd.paragraph}\IndexCmd{paragraph}, and + \DescRef{maincls.cmd.subparagraph}\IndexCmd{subparagraph}. You can define + new sectioning commands using this style. To configure existing or new + sectioning commands, you can also use the attributes of + \autoref{tab:maincls-experts.declaresectionstyle.keys}, + \autopageref{tab:maincls-experts.declaresectionstyle.keys}. When redefining + a command, the \ChangedAt{v3.24}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} \PName{key}s + \PValue{style}, \PValue{afterskip}, \PValue{beforeskip}, and \PValue{level} + are mandatory. The keys + \PValue{afterindent}\ChangedAt{v3.26}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}},\PValue{font} and \PValue{indent} + are recommended. \PValue{tocindent} and + \PValue{tocnumwidth} may also be required depending on the command's + \PName{name}. This also applies if a command that was not previously a + sectioning command is redefined as a sectioning command using + \Macro{RedeclareSectionCommand}. Note\textnote{Attention!} that the + \Macro{addsec} command and its starred variants are configured automatically + with \DescRef{maincls.cmd.section} and cannot be changed independently. +\end{description} +Defining a sectioning command also creates an element with the same +\PName{name}, if it does not already exist. For \PValue{chapter} and +\PValue{part}, elements are also created for the prefix line. You can change +its font settings using \DescRef{maincls.cmd.setkomafont} or +\DescRef{maincls.cmd.addtokomafont} (see \autoref{sec:maincls.textmarkup}, +\DescPageRef{maincls.cmd.setkomafont}). + +\begin{table} + \caption[{Style-independent attributes for declaring sectioning + commands}]{Available \PName{key}s and \PName{value}s for + style-independent \PName{attributes} when declaring sectioning command}% + \label{tab:maincls-experts.declaresection.keys}% + \begin{tabularx}{\linewidth}{llX} + \toprule + \PName{key} & \PName{value} & Description \\ + \midrule% + \PValue{counterwithin} + & \PName{counter name} + & The value of the counter of the heading should depend on \PName{counter + name}. Whenever \Macro{stepcounter} or \Macro{refstepcounter} increases + the value of \PName{counter name}, the value of the counter of this + heading is reset to 0. In addition, \Macro{the\PName{counter name}} is + prefixed with a dot when this counter is output.\\ + \ChangedAt{v3.19}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + \PValue{counterwithout} + & \PName{counter name} + & Cancels a prior \PValue{counterwithin} setting. Therefore it makes sense + only if you redefine an existing sectioning command.\\ + \PValue{expandtopt} + & \PName{switch} + & If the switch is on, all subsequent values for lengths will be + completely expanded, evaluated, and stored as \texttt{pt} values when + they are defined. This means lengths no longer depend on the current + font size. If the switch is off, all subsequent values for lengths will + be tentatively expanded and evaluated but stored for full evaluation at + application time. You can use any values from + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. + The default is \PValue{false}.\\ + \PValue{level} + & \PName{integer} + & The numerical value of the sectioning level (see the + \DescRef{maincls.counter.secnumdepth} counter, + \autoref{sec:maincls.structure}, + \DescPageRef{maincls.counter.secnumdepth}); the value should be unique + and is mandatory for new levels.\\ + \PValue{style} + & \PName{name} + & Defines the style of the heading.\\ + \ChangedAt{v3.20}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + \PValue{tocstyle} + & \PName{name} + & Defines the style of the entries in the table of contents. You can use + every previously defined TOC-entry style (see + \autoref{sec:tocbasic.tocstyle}). An empty \PName{name} prevents a new + definition of the TOC-entry command \Macro{l@\dots}.\\ + \ChangedAt{v3.20}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + \PValue{toc\PName{option}} + & \PName{value} + & Additional options depending on the TOC-entry style selected with + \Option{tocstyle}. See \autoref{sec:tocbasic.tocstyle}, + \autopageref{sec:tocbasic.tocstyle} for additional information about + TOC-entry styles. You can find the attributes that can be used as + \PName{option}s for the predefined TOC-entry styles of the + \Package{tocbasic} package in + \autoref{tab:tocbasic.tocstyle.attributes}, + \autopageref{tab:tocbasic.tocstyle.attributes}.\\ + % \PValue{tocindent} + % & \PName{length} + % & Total indentation from the left margin of the entry in the table of + % contents corresponding to this heading, if and only if such an + % entry will be made (see \DescRef{maincls.counter.tocdepth}, + % \autoref{sec:maincls.toc}, \DescPageRef{maincls.counter.tocdepth}).\\ + % \PValue{toclevel} + % & \PName{integer} + % & A number denoting the depth of the entry in the table of contents + % corresponding to this heading, if this should differ from + % \PValue{level} (see \DescRef{maincls.counter.tocdepth}, + % \autoref{sec:maincls.toc}, \DescPageRef{maincls.counter.tocdepth}). \\ + % \PValue{tocnumwidth} + % & \PName{length} + % & Width of the box for the number of the entry in the table of + % contents.\\ + \bottomrule + \end{tabularx} +\end{table} + +\begin{table} + \caption[{Attributes of the \PValue{section} style when declaring a + sectioning command}]{Additional \PName{key}s and \PName{value}s for + attributes when declaring a sectioning command with the \PValue{section} + style}% + \label{tab:maincls-experts.declaresectionstyle.keys}% + \begin{tabularx}{\linewidth}{llX} + \toprule + \PName{key} & \PName{value} & Description \\ + \midrule + \PValue{afterindent}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{switch} + & The \PName{switch} determines whether the current paragraph indent is + applied to the first line following a freestanding heading (see + \PValue{runin}). With the default, \PValue{bysign}, the sign of + \PValue{beforeskip} determines the behaviour. If the value of + \PValue{beforeskip} is negative, the indentation of the first paragraph + following the heading is suppressed. You can use any value from + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} to + explicitly enable or disable this indentation.\\ + \PValue{afterskip} + & \PName{length} + & In the case of a run-in heading (see \PValue{runin}), the absolute value + of the \PName{length} is the horizontal space after the heading. That is, + a positive distance is always inserted. In the case of a freestanding + heading, the \PName{length} is the vertical skip below the heading. With + \OptionValue{runin}{bysign}, a positive value results in a freestanding + heading, while a negative value or zero results in a run-in heading.\\ + \PValue{beforeskip} + & \PName{length} + & Specifies the vertical space before the heading. With + \OptionValue{afterindent}{bysign}, if the value is negative, a positive + distance\,---\,the amount of \PName{length}\,---\,is still inserted, but + in this case the indentation of the paragraph following the heading is + suppressed.\\ + \PValue{font} + & \PName{font commands} + & The font settings that should be used for the heading in addition to + \DescRef{maincls.fontelement.disposition}. You can use all settings that + are allowed for \DescRef{maincls.cmd.setkomafont} and + \DescRef{maincls.cmd.addtokomafont} for the element of the heading.\\ + \PValue{indent} + & \PName{length} + & The indentation of heading from the left margin.\\ + \PValue{runin} + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{switch} + & Defines whether to use a run-in or a freestanding heading. With + the default, \PValue{bysign}, the sign of \PValue{afterskip} determines + the behaviour. In this case, a positive value of \PValue{afterskip} + results in a freestanding heading. You can use any values from + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} to + explicitly enable or disable a run-in heading.\\ + \bottomrule + \end{tabularx} +\end{table} + +\begin{table} + \caption[{Attributes of the \PValue{chapter} style when declaring a + sectioning command}]{Additional \PName{keys} and \PName{value}s for + attributes when declaring a sectioning command with the \PValue{chapter} + style}% + \label{tab:maincls-experts.declarechapterstyle.keys}% + \begin{tabularx}{\linewidth}{llX} + \toprule + \PName{key} & \PName{value} & Description \\ + \midrule + \PValue{afterindent}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{switch} + & The \PName{switch} determines whether to apply the indentation of the + first paragraph following a heading. With the default, \PValue{bysign}, + the sign of \PValue{beforeskip} defines the behaviour. If the value of + \PValue{beforeskip} is negative, the indentation of the paragraph + following the heading is suppressed. You can use any value from + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} to + explicitly enable or disable this indentation.\\ + \PValue{afterskip}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{length} + & The vertical skip below the heading.\\ + \PValue{beforeskip} + & \PName{length} + & The vertical skip before the heading. With + \OptionValue{afterindent}{bysign}, if the value is negative, a positive + distance\,---\,the amount of \PName{length}\,---\,is still inserted, but + in this case the indentation of the first paragraph following the heading + is suppressed.\\ + \PValue{font} & \PName{font commands} & The font setting to use for the + heading in addition to \DescRef{maincls.fontelement.disposition}. You + can use all settings, that are allowed for + \DescRef{maincls.cmd.setkomafont} and + \DescRef{maincls.cmd.addtokomafont} for this element.\\ + \PValue{innerskip} & \PName{length} & The vertical skip between the prefix + line and the heading's text, if a prefix line is used.\\ + \PValue{pagestyle} & \PName{page style name} & The name of the page style + to use automatically for pages with the heading. There is no check to + see if the \PName{page style name} is valid. Therefore, incorrect names + will result in error messages when the sectioning command is used.\\ + \PValue{prefixfont} & \PName{font commands} & The font setting to use + for the prefix line of the heading, in addition to the + \DescRef{maincls.fontelement.disposition} and sectioning command + elements. You can use all settings that are allowed for + \DescRef{maincls.cmd.setkomafont} and + \DescRef{maincls.cmd.addtokomafont} for the element of the prefix + line.\\ + \bottomrule + \end{tabularx} +\end{table} + +\begin{table} + \caption[{Attributes of the \PValue{part} style when declaring a sectioning + command}]{Additional \PName{keys} and \PName{value}s for attributes + when declaring a sectioning command with the \PValue{part} style}% + \label{tab:maincls-experts.declarepartstyle.keys}% + \begin{tabularx}{\linewidth}{llX} + \toprule + \PName{key} & \PName{value} & Description \\ + \midrule + \PValue{afterindent}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{switch} + & The \PName{switch} determines whether to apply the indentation of the + first paragraph following a heading. With the value \PValue{bysign}, + the sign of \PValue{beforeskip} determines the behaviour. If the value + of \PValue{beforeskip} is negative, the indentation of the first + paragraph following the heading is suppressed. You can use any value + from \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} to + explicitly enable or disable this indentation. For compatibility, + the default is \PValue{false} for \Class{scrartcl} and \PValue{true} for + \Class{scrbook} and \Class{scrreprt}.\\ + \PValue{afterskip} & \PName{length} & The value is the vertical skip below + the heading.\\ + \PValue{beforeskip} + & \PName{length} + & The vertical skip before the heading. With + \OptionValue{afterindent}{bysign}, if the value is negative, a positive + distance\,---\,the amount of \PName{length}\,---\,is still inserted, but + in this case the indentation of the first paragraph following the heading + is suppressed.\\ + \PValue{font} & \PName{font commands} & The font setting to use for the + heading in addition to \DescRef{maincls.fontelement.disposition}. You + can use all settings that are allowed for + \DescRef{maincls.cmd.setkomafont} and + \DescRef{maincls.cmd.addtokomafont} for the element of the heading.\\ + \PValue{innerskip} & \PName{length} & % \OnlyAt{\Class{scrbook}\and + % \Class{scrreprt}}% + The vertical skip between the prefix line and the heading text in + \Class{scrbook} and \Class{scrreprt}.\\ + \PValue{pagestyle} & \PName{page style name} & + % \OnlyAt{\Class{scrbook}\and + % \Class{scrreprt}}% + The name of the page style to use automatically on pages with the + heading. There is no check to see if \PName{page style name} is valid. + Therefore, incorrect names will result in error messages when the + sectioning command is used. This feature only exists in \Class{scrbook} + and\Class{scrreprt}.\\ + \PValue{prefixfont} & \PName{font commands} & The font setting to use for + the prefix line of the heading, in addition to the + \DescRef{maincls.fontelement.disposition} and sectioning command + elements. You can use all settings that are allowed for + \DescRef{maincls.cmd.setkomafont} and + \DescRef{maincls.cmd.addtokomafont} for the element of the prefix + line.\\ + \bottomrule + \end{tabularx} +\end{table} + +\Macro{DeclareNewSectionCommand} defines a new sectioning command. If the +same \PName{name} is already used by \TeX{} for something else, the command +will result in an error message and will not define anything. + +\Macro{ProvideSectionSommand} behaves similarly but does not issue an error +message. + +\Macro{RedeclareSectionCommand}, on the other hand, can only change an +existing command to a sectioning command with the specified +\PName{attributes}. It does not check whether \Macro{\PName{name}} is already +a sectioning command. It only needs to be a \PName{name} already a \TeX +command. + +\Macro{DeclareSectionCommand} does not check whether or not \PName{name} is +an existing \TeX{} command name. It just defines a sectioning +command \Macro{\PName{name}} with the specified \PName{attributes}. + +Each sectioning command also has a corresponding counter with the same +\PName{name} that is allocated with \Macro{newcounter} if necessary. The same +naming rule applies to the corresponding output of the counter +(\Macro{the\PName{name}}), the counter's format (\Macro{\PName{name}format}), +the command to generate a running head (\Macro{\PName{name}mark}), the format +of the counter in the running head (\Macro{\PName{name}markformat}), the font +element (\FontElement{\PName{name}}), and the section-depth number +(\Macro{\PName{name}numdepth}). The command for the running head, +\Macro{\PName{name}mark}, is defined by default not to generate a running +head. The default output of the counter \Macro{the\PName{name}} is an Arabic +number. If the counter is defined as depending on another counter with the +\PValue{counterwithin} \PName{key}, the output of this counter will be +prefixed by a dot. + +In\ChangedAt[2016/03]{v3.20}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} addition to the sectioning command itself, a command for +corresponding entries to the table of contents is also defined. This is done +using the \hyperref[cha:tocbasic]{\Package{tocbasic}}% +\important{\hyperref[cha:tocbasic]{\Package{tocbasic}}}\IndexPackage{tocbasic} +package. The \PName{tocstyle} attribute defines the style of those entries. If +you set an empty \PName{name}, e.\,g. using \OptionValue{tocstyle}{} or +\OptionValue{tocstyle}{\{\}}, the command for the TOC entry will not be +changed. This is important, for example, if you use another package to modify +the table of contents. If you do not set the \PValue{tocstyle} attribute, the +previous style will be used again during the redefinition. + +The\ChangedAt[2016/03]{v3.20}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} different TOC-entry styles also have different additional +attributes. You can set them directly if you prefix them with \PValue{toc}. +For example, you can set the level of the TOC entries, \PValue{level}, using +\PValue{toclevel}, the indention, \PValue{indent}, using \PValue{tocindent}, +or the number width, \PValue{numwidth}, using \PValue{tocnumwidth}. For more +TOC-entry style attributes see \autoref{sec:tocbasic.tocstyle}, +\autopageref{sec:tocbasic.tocstyle}. + +\begin{Example} + For some unknown reason, you want to redefine the + \DescRef{maincls.cmd.paragraph} headings so that they are no longer run-in + headings but are similar to \DescRef{maincls.cmd.subsubsection}. The + vertical skip above the heading should be 10\Unit{pt} and no additional + vertical skip below the heading. To do so, you can use: +\begin{lstcode} + \RedeclareSectionCommand[% + beforeskip=-10pt,% + afterskip=1sp% + ]{paragraph} +\end{lstcode} + The negative value of \PValue{beforeskip} creates a positive vertical skip + before the heading and simultaneously disables the paragraph indentation of + the following text. Even though the specification did not want any vertical + skip after the heading, a value of 1\Unit{sp} has been given here. This is + because \LaTeX{} doesn't recognize 0\Unit{pt} as positive value. So + 1\Unit{sp} is the smallest possible positive value. + + Generally, it is better to have some tolerance for adjusting the vertical + spacing, the so-called \emph{glue}: +\begin{lstcode} + \RedeclareSectionCommand[% + beforeskip=-10pt plus -2pt minus -1pt,% + afterskip=1sp plus -1sp minus 1sp% + ]{paragraph} +\end{lstcode} + Note that the glue also switches the algebraic sign before becoming a skip, + if the value is negative. That is the reason for the negative glue values in + the example. Additionally we used the occasion to minimize the vertical skip + after the heading using glue too. +\end{Example} + +In the example above, we only needed to define the keys \PValue{beforeskip} +and \PValue{afterskip} because since v3.15 \KOMAScript{} has defined +\DescRef{maincls.cmd.paragraph} internally using +\Macro{DeclareSectionCommand}, and therefore the other settings can be adopted +unchanged. The original definition of \DescRef{maincls.cmd.paragraph} in +\Class{scrartcl} reads: +\begin{lstcode} + \DeclareSectionCommand[% + level=4, + indent=0pt, + beforeskip=3.25ex plus 1ex minus .2ex, + afterskip=-1em, + font={}, + tocindent=7em, + tocnumwidth=4.1em, + counterwithin=subsubsection + ]{paragraph} +\end{lstcode} +\Class{scrreprt} and \Class{scrbook} use slightly different values. + +Some settings of \DescRef{maincls.cmd.chapter} depend on the +\DescRef{maincls.option.headings} option (see \autoref{sec:maincls.structure}, +\DescPageRef{maincls.option.headings}). +\hyperref[tab:maincls.chapter.skips]{Table~\ref*{tab:maincls.chapter.skips}} +shows the default values of these settings. An overview of all settings is +shown in \autoref{tab:maincls.section.defaults}. For more +information\ChangedAt[2016/03]{v3.20}{\Class{scrbook}\and \Class{scrreprt}\and +\Class{scrartcl}} about the default of the TOC-entry styles see +\autoref{sec:tocbasic.tocstyle}\important{\Package{tocbasic}}, +\autopageref{sec:tocbasic.tocstyle}. Note that \PValue{1ex} and +\Length{baselineskip} depend on the default font size of the heading or the +table of contents entry.% + +\begin{table} + \centering + \caption{Defaults for the chapter headings of \Class{scrbook} + and \Class{scrreprt} depending on the \DescRef{maincls.option.headings} + option} + \label{tab:maincls.chapter.skips} + \begin{tabular}{ll} + \multicolumn{2}{@{}l}{\bfseries + With \OptionValueRef{maincls}{headings}{big}:}\\ + \toprule + Attribute & Default Value \\ + \midrule + \PValue{afterskip} + & \PValue{1.725\Length{baselineskip} plus .115\Length{baselineskip} + minus .192\Length{baselineskip}} \\ + \PValue{beforeskip} + & \PValue{-3.3\Length{baselineskip}-\Length{parskip}} \\ + \PValue{font} & \Macro{huge} \\ + \bottomrule\\ + \multicolumn{2}{@{}l}{\bfseries + With \OptionValueRef{maincls}{headings}{normal}:}\\ + \toprule + Attribute & Default Value \\ + \midrule + \PValue{afterskip} + & \PValue{1.5\Length{baselineskip} plus .1\Length{baselineskip} + minus .167\Length{baselineskip}} \\ + \PValue{beforeskip} + & \PValue{-3\Length{baselineskip}-\Length{parskip}} \\ + \PValue{font} & \Macro{LARGE} \\ + \bottomrule\\ + \multicolumn{2}{@{}l}{\bfseries + With \OptionValueRef{maincls}{headings}{small}:}\\ + \toprule + Attribute & Default Value \\ + \midrule + \PValue{afterskip} + & \PValue{1.35\Length{baselineskip} plus .09\Length{baselineskip} + minus .15\Length{baselineskip}} \\ + \PValue{beforeskip} + & \PValue{-2.8\Length{baselineskip}-\Length{parskip}} \\ + \PValue{font} & \Macro{Large} \\ + \bottomrule + \end{tabular} +\end{table} + +%begin{table} +% \centering + \begin{longtable}{@{}p{\columnwidth}@{}} + \caption{Defaults for the headings of \Class{scrbook} and + \Class{scrreprt}}% + \label{tab:maincls.section.defaults}\\ + \endfirsthead + \caption[]{Default for the headings of \Class{scrbook} and + \Class{scrreprt} \emph{(continued)}}\\ + \addlinespace[-\normalbaselineskip] + \endhead + \raggedleft\dots\\ + \endfoot + \endlastfoot + \DescRef{maincls.cmd.part}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Attribute & Default Value \\ + \midrule + \PValue{afterskip} & \PValue{0pt plus 1fil} \\ + \PValue{beforeskip} & \PValue{0pt plus 1fil + \Length{baselineskip}} \\ + \PValue{font} & see element \DescRef{maincls.fontelement.part}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{innerskip} & \PValue{20pt} \\ + \PValue{level} & -1 \\ + \PValue{prefixfont} & see element + \DescRef{maincls.fontelement.partnumber}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{tocindent} & \PValue{0pt} \\ + \PValue{toclevel} & -1 \\ + \PValue{tocnumwidth} & \PValue{2em} \\ + \PValue{tocstyle} & \PValue{part} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.chapter}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Attribute & Default Value \\ + \midrule + \PValue{afterskip} & see \autoref{tab:maincls.chapter.skips} \\ + \PValue{beforeskip} & see \autoref{tab:maincls.chapter.skips} \\ + \PValue{font} & see element \DescRef{maincls.fontelement.chapter}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{innerskip} & \PValue{0.5\Length{baselineskip}} \\ + \PValue{level} & 0 \\ + \PValue{prefixfont} & see element + \DescRef{maincls.fontelement.chapterprefix}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{tocindent} & \PValue{0pt} \\ + \PValue{toclevel} & 0 \\ + \PValue{tocnumwidth} & \PValue{1.5em} \\ + \PValue{tocstyle} & \PValue{chapter} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.section}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Attribute & Default Value \\ + \midrule + \PValue{afterskip} & \PValue{2.3ex plus .2ex} \\ + \PValue{beforeskip} & \PValue{-3.5ex plus -1ex minus -.2ex} \\ + \PValue{font} & see element \DescRef{maincls.fontelement.section}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \PValue{0pt} \\ + \PValue{level} & 1 \\ + \PValue{tocindent} & \PValue{1.5em}\\ + \PValue{toclevel} & 1 \\ + \PValue{tocnumwidth} & \PValue{2.3em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.subsection}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Attribute & Default Value \\ + \midrule\nopagebreak + \PValue{afterskip} & \PValue{1.5ex plus .2ex} \\ + \PValue{beforeskip} & \PValue{-3.25ex plus -1ex minus -.2ex} \\ + \PValue{font} & see element + \DescRef{maincls.fontelement.subsection}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \PValue{0pt} \\ + \PValue{level} & 2 \\ + \PValue{tocindent} & \PValue{3.8em}\\ + \PValue{toclevel} & 2 \\ + \PValue{tocnumwidth} & \PValue{3.2em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.subsubsection}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Attribute & Default Value \\ + \midrule\nopagebreak + \PValue{afterskip} & \PValue{1.5ex plus .2ex} \\ + \PValue{beforeskip} & \PValue{-3.25ex plus -1ex minus -.2ex} \\ + \PValue{font} & see element + \DescRef{maincls.fontelement.subsubsection}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \PValue{0pt} \\ + \PValue{level} & 3 \\ + \PValue{tocindent} & \PValue{7.0em}\\ + \PValue{tocnumwidth} & \PValue{4.1em}\\ + \PValue{toclevel} & 3 \\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.paragraph}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Attribute & Default Value \\ + \midrule\nopagebreak + \PValue{afterskip} & \PValue{-1em} \\ + \PValue{beforeskip} & \PValue{3.25ex plus 1ex minus .2ex} \\ + \PValue{font} & see element \DescRef{maincls.fontelement.paragraph}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \PValue{0pt} \\ + \PValue{level} & 4 \\ + \PValue{tocindent} & \PValue{10em}\\ + \PValue{toclevel} & 4 \\ + \PValue{tocnumwidth} & \PValue{5em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.subparagraph}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Attribute & Default Value \\ + \midrule\nopagebreak + \PValue{afterskip} & \PValue{-1em} \\ + \PValue{beforeskip} & \PValue{3.25ex plus 1ex minus .2ex} \\ + \PValue{font} & see element + \DescRef{maincls.fontelement.subparagraph}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \Macro{scr@parindent} \\ + \PValue{level} & 5 \\ + \PValue{tocindent} & \PValue{12em}\\ + \PValue{toclevel} & 5 \\ + \PValue{tocnumwidth} & \PValue{6em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} + \end{longtable} +%end{table} +Incidentally, the internal macro \Macro{scr@parindent} used in the settings +for \DescRef{maincls.cmd.subparagraph} is the paragraph indent set by the +\DescRef{maincls.option.parskip} option or the +\DescRef{maincls-experts.cmd.setparsizes} command. +\EndIndexGroup + + +\begin{Declaration} + \Macro{DeclareSectionCommands}\OParameter{attributes} + \Parameter{list of names}% + \Macro{DeclareNewSectionCommands}\OParameter{attributes} + \Parameter{list of names}% + \Macro{RedeclareSectionCommands}\OParameter{attributes} + \Parameter{list of names}% + \Macro{ProvideSectionCommands}\OParameter{attributes} + \Parameter{list of names} +\end{Declaration} +These\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} commands can define or change a whole series of +sectioning commands at once. The names of the sectioning commands are given by +the comma-separated \PName{list of names}. + +These commands differ in two other ways from the previously described commands +that only define or change a single sectioning command. First, in case of +error\,---\,that is if a command already exists with +\Macro{DeclareNewSectionCommands} or is undefined with +\Macro{RedeclareSectionCommands}\,---\,the definition will be performed +regardless. An appropriate an error message will, of course, be reported +anyway. + +Second, there is another attribute, +\important{\PValue{increaselevel}}\OptionVName{increaselevel}{integer}. This +attribute changes the meaning of the attributes \PValue{level} and +\PValue{toclevel} (see \autoref{tab:maincls-experts.declaresection.keys}) so +that their values become starting values for the first sectioning command of +the \PName{list of names}. For all other sectioning command in the \PName{list +of names}, the values of \PValue{level} and \PValue{toclevel} are successively +increased by the value of \PValue{increaselevel}. If the +\PValue{increaselevel} attribute is used without assigning a value, 1 is +assumed. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{chapterheadstartvskip} + \Macro{chapterheadmidvskip} + \Macro{chapterheadendvskip} + \Macro{partheadstartvskip} + \Macro{partheadmidvskip} + \Macro{partheadendvskip} + \Macro{partheademptypage} +\end{Declaration} +These\important[i]{\DescRef{maincls.cmd.chapter}\\ + \DescRef{maincls.cmd.part}\\ + \DescRef{maincls.cmd.addchap}\\ + \DescRef{maincls.cmd.addpart}\\ + \DescRef{maincls.cmd.chapter*}\\ + \DescRef{maincls.cmd.part*}\\ + \DescRef{maincls.cmd.addchap*}\\ + \DescRef{maincls.cmd.addpart*}} commands are used inside the headings of the +previously described \PValue{chapter} and \PValue{part} styles and thus for +the definitions of \DescRef{maincls.cmd.chapter}\IndexCmd{chapter}, +\DescRef{maincls.cmd.part}\IndexCmd{part}, +\DescRef{maincls.cmd.addchap}\IndexCmd{addchap}, and +\DescRef{maincls.cmd.addpart}\IndexCmd{addpart}, as well as their starred +variants \DescRef{maincls.cmd.chapter*}\IndexCmd{chapter*}, +\DescRef{maincls.cmd.part*}\IndexCmd{part*}, +\DescRef{maincls.cmd.addchap*}\IndexCmd{addchap*}, and +\DescRef{maincls.cmd.addpart*}\IndexCmd{addpart*}. +The \Macro{chapterheadstartvskip} command is intended to insert a +vertical skip before the chapter heading. Similarly, +\Macro{chapterheadendvskip} is a command intended to insert a vertical +skip after the chapter heading. If\ChangedAt{v3.15}{\Class{scrbook}\and + \Class{scrreprt}} the chapter heading has a prefix number line (see option +\DescRef{maincls.option.chapterprefix} in \autoref{sec:maincls.structure}, +\DescPageRef{maincls.option.chapterprefix}), \Macro{chapterheadmidvskip} +is also used between the number line and the heading text. + +The \Macro{partheadstartvskip} and \Macro{partheadendvskip} commands insert +vertical skips above and below part headings. A page break is interpreted as +part of the vertical distance. Such a page break is part of the default +definitions of \Macro{partheadendvskip} in +\Class{scrbook}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} and +\Class{scrreprt}. The +\Macro{partheademptypage}\ChangedAt{v3.02}{\Class{scrbook}\and +\Class{scrreprt}} command produces an empty page after the part heading page +of \Class{scrbook} and \Class{scrreprt}. + +Starting with \KOMAScript~3.15\ChangedAt{v3.15}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}}, the defaults of these seven commands +are independent from the \DescRef{maincls.option.headings} option (see +\autoref{sec:maincls.structure}, +\DescPageRef{maincls.option.headings}). The default definitions for the +chapter headings starting with +\KOMAScript~3.17\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} correspond to:\IndexLength{@tempskipa} +\begin{lstcode} + \newcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}} + \newcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa} + \newcommand*{\chapterheadendvskip}{\vskip\@tempskipa} +\end{lstcode} +These defaults are reactivated every time you use +\OptionValueRef{maincls}{headings}{big}\IndexOption{headings}, +\OptionValueRef{maincls}{headings}{normal}, or +\OptionValueRef{maincls}{headings}{small}. As a side effect, these options may +affect not only chapter titles but all headings in the \PValue{chapter} style + +The \PValue{chapter} style automatically sets the internal length +\Length{@tempskipa} to the value that results from the +\DescRef{\LabelBase.cmd.DeclareSectionCommand}\IndexCmd{DeclareSectionCommand} +attribute \PValue{beforeskip} before calling \Macro{chapterheadstartvskip}. +Similarly, it sets this length to the value of the \PValue{afterskip} +attribute before calling \Macro{chapterheadendvskip}, and to +\PValue{innerskip} before calling \Macro{chapterheadmidvskip}. + +The default values of the distances of \DescRef{maincls.cmd.part} do not +depend on the \DescRef{maincls.option.headings} option. So the corresponding +commands will not be redefined by this option. +Their\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and +\Class{scrartcl}} default definitions in \Class{scrbook} and \Class{scrreprt} +correspond to: +\begin{lstcode} + \newcommand*{\partheadstartvskip}{% + \null\vskip-\baselineskip\vskip\@tempskipa + } + \newcommand*{\partheadmidvskip}{% + \par\nobreak + \vskip\@tempskipa + } + \newcommand*{\partheadendvskip}{% + \vskip\@tempskipa\newpage + } +\end{lstcode} +and of \Class{scrartcl}: +\begin{lstcode} + \newcommand*{\partheadstartvskip}{% + \addvspace{\@tempskipa}% + } + \newcommand*{\partheadmidvskip}{% + \par\nobreak + } + \newcommand*{\partheadendvskip}{% + \vskip\@tempskipa + } +\end{lstcode} +The \PValue{part} style once again sets the internal length +\Length{@tempskipa}\IndexLength{@tempskipa} according to the settings of +\DescRef{\LabelBase.cmd.DeclareSectionCommand}\IndexCmd{DeclareSectionCommand} +before using the commands. + +If you redefine one of the commands used for the vertical skip in the original +\Length{@tempskipa} but still want to be able to configure the lengths, for +example with \DescRef{\LabelBase.cmd.RedeclareSectionCommand}, you should also +use \Length{@tempskipa} in the new definition. +Since\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} you can more easily configure the distances above, within, +and below the headings using \DescRef{\LabelBase.cmd.RedeclareSectionCommand}, +you generally should not redefine the commands described here. Changing them +should be reserved for more complex changes that cannot be accomplished with +\DescRef{\LabelBase.cmd.RedeclareSectionCommand}. An\textnote{Example!} +example that redefines \Macro{chapterheadstartvskip} and +\Macro{chapterheadendvskip} to print extra rules above and below the chapter +heading can be found at \cite{homepage} (in German).% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{partlineswithprefixformat}% + \Parameter{level}\Parameter{number}\Parameter{text}% +\end{Declaration} +This\ChangedAt{v3.25}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} command is used by headings with the \PValue{part} style to +output the heading number and heading text. The \PName{number} and +\PName{text} arguments are already formatted, including the font +selections. Ultimately, this command controls the arrangement of the two parts +of the heading. For unnumbered headings, \PName{number} is a completely empty +argument, so it does not contain any formatting commands. + +The default definition is rather Spartan: +\begin{lstcode} + \newcommand{\partlineswithprefixformat}[3]{% + #2#3% + } +\end{lstcode} + +\begin{Example} + You want to have part headings in a light blue box with blue frame. The + box should occupy only about three quarters of full width of the text + area. So you try: +\begin{lstcode} + \documentclass{scrbook} + \usepackage{xcolor} + \renewcommand*{\partlineswithprefixformat}[3]{% + \fcolorbox{blue}{blue!25}{% + \parbox{.75\linewidth}{#2#3}% + }% + } + \begin{document} + \part{Framed Part} + \end{document} +\end{lstcode} + But surprisingly the heading is not longer centred\,---\,neither the box + itself nor the text inside the box. + + The reason for the missing centring of the box is that the end of the + paragraph is hidden in the third argument of the command. So it still + finishes the paragraph of the text inside the box but not the paragraph of + the \Macro{parbox} itself. To solve this you add a \Macro{par} at the end of + the definition. + + The reason for the missing centring inside the box is that the alignment of + \DescRef{maincls.cmd.raggedpart} is valid outside the box but not + automatically inside a \Macro{parbox}. To solve this you add + \Macro{raggedpart} inside the box. + + With +\begin{lstcode} + \documentclass{scrbook} + \usepackage{xcolor} + \renewcommand*{\partlineswithprefixformat}[3]{% + \fcolorbox{blue}{blue!25}{% + \parbox{.75\linewidth}{\raggedpart #2#3}% + }% + } + \par + \begin{document} + \part{Framed Part} + \end{document} +\end{lstcode} + you get the expected result. +\end{Example} + +As the example shows, users who redefine this command must watch out for +several side effects. In addition to preserving the text alignment, they also +must prevent page breaks within the headings, for example if they insert extra +paragraphs or space. The example above does not have this problem. Not only +does the box prevent a page breaks anyway, but \KOMAScript{} itself also +changes \Macro{interlinepenalty} as part of \PName{text} so to prevent page +breaks there. It also finishes \PName{text} with an internal paragraph break +using \Macro{@@par}. + +The default definition of \Macro{partlineswithprefixformat} does not use the +first argument, \PName{level}, nor is it needed in the example above. It is of +interest only if you want to define several commands with the \PValue{part} +style and need to distinguish the different levels. The predefined commands +\DescRef{maincls.cmd.part}, \DescRef{maincls.cmd.part*}, +\DescRef{maincls.cmd.addpart}, and \DescRef{maincls.cmd.addpart*} all share +the same \PName{level} \PName{part}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{chapterlineswithprefixformat}% + \Parameter{level}\Parameter{number}\Parameter{text}% + \Macro{chapterlinesformat}% + \Parameter{level}\Parameter{number}\Parameter{text} +\end{Declaration} +These\ChangedAt{v3.19}{\Class{scrbook}\and \Class{scrreprt}} commands are used +by headings with the \PValue{chapter} style to output the heading number and +heading text, depending on the +\DescRef{maincls.option.chapterprefix}\IndexOption{chapterprefix}% +\textnote{\DescRef{maincls.option.chapterprefix}} option (see +\autoref{sec:maincls.structure}, +\DescPageRef{maincls.option.chapterprefix}). If the option is \PValue{true}, +\Macro{chapterlineswithprefixformat} is used. Otherwise +\Macro{chapterlinesformat} determines the ouput. + +The \PName{number} and \PName{text} arguments are already formatted, including +the font selections. Ultimately, these commands thus control the arrangement +of the two parts of the heading. For unnumbered headings, the \PName{number} +argument is completely empty, so it does not contain any formatting commands. + +The\textnote{default} defaults for these commands are: +\begin{lstcode} + \newcommand{\chapterlinesformat}[3]{% + \@hangfrom{#2}{#3}% + } + \newcommand{\chapterlineswithprefixformat}[3]{% + #2#3% + } +\end{lstcode} + +\begin{Example} + You want to have chapter headings with yellow background. For the headings + without a prefix line, you use the following definition in the document + preamble: +\begin{lstcode} + \makeatletter + \renewcommand{\chapterlinesformat}[3]{% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth-2\fboxrule-2\fboxsep}{% + \@hangfrom{#2}#3% + }% + }% + } + \makeatother +\end{lstcode} + For chapter headings with prefix line, you use: +\begin{lstcode} + \renewcommand{\chapterlineswithprefixformat}[3]{% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth-2\fboxrule-2\fboxsep}{% + #2#3% + }% + }% + } +\end{lstcode} + Unfortunately, you discover that these redefinitions result in justified + text for the headings. The reason is the \Macro{parbox} command. To change + this, you can use the \DescRef{maincls.cmd.raggedchapter} command (see + \autoref{sec:maincls.structure}, \DescPageRef{maincls.cmd.raggedchapter}) + inside the argument of \Macro{parbox}. Otherwise \Macro{raggedchapter} would + be used only before \Macro{chapterlineswithprefixformat} and + \Macro{chapterlinesformat}: +\begin{lstcode} + \makeatletter + \renewcommand{\chapterlinesformat}[3]{% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth-2\fboxrule-2\fboxsep}{% + \raggedchapter + \@hangfrom{#2}#3% + }% + }% + } + \makeatother + \renewcommand{\chapterlineswithprefixformat}[3]{% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth-2\fboxrule-2\fboxsep}{% + \raggedchapter + #2#3% + }% + }% + } +\end{lstcode} + Remember to use \Macro{makeatletter} and \Macro{makeatother} only in the + document preamble. Do not use it inside your own wrapper class or package. + They are only needed here because of \Macro{@hangfrom} in the definition of + \Macro{chapterlinesformat}. +\end{Example} + +As the example shows, users who redefine this command must watch out for +several side effects. In addition to preserving the text alignment, they also +must prevent page breaks within the headings, for example if they insert extra +paragraphs or space. The example above does not have this problem. Not only +does the box prevent a page breaks anyway, but \KOMAScript{} itself also +changes \Macro{interlinepenalty} as part of \PName{text} so to prevent page +breaks there. It also finishes \PName{text} with an internal paragraph break +using \Macro{@@par}. + +Incidentally, the \DescRef{maincls.cmd.raggedchapter} command is not part of +\PName{text}, as otherwise using \Macro{MakeUppercase} inside redefined +versions of these two commands would be much more difficult. Note, however, +that typographic rules require individual adjustments of letter spacing in +capitalised text. However the \LaTeX{} \Macro{MakeUppercase} command does not +do this. + +The default definitions do not use the first argument, \PName{level}, nor is +it needed in the example above. It is of interest only if you want to define +several commands with the \PValue{chapter} style and need to distinguish the +different levels. The predefined commands \DescRef{maincls.cmd.chapter}, +\DescRef{maincls.cmd.chapter*}, \DescRef{maincls.cmd.addchap}, and +\DescRef{maincls.cmd.addchap*} all share the same \PName{level} +\PName{chapter}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{sectionlinesformat}% + \Parameter{level}\Parameter{indent}\Parameter{number}\Parameter{text}% + \Macro{sectioncatchphraseformat}% + \Parameter{level}\Parameter{indent}\Parameter{number}\Parameter{text}% +\end{Declaration} +These\ChangedAt{v3.19}{\Class{scrbook}\and \Class{scrreprt}\and +\Class{scrartcl}} commands are used by headings with the \PValue{section} +style depending on whether the reading is run-in or on its own line. +Free-standing headings use \Macro{sectionlinesformat} for their output, while +run-in headings use \Macro{sectioncatchphraseformat}. + +In both cases \PName{indent} is the value of the horizontal indention of the +heading relative to the text area. If the value is negative, the heading can +protrude into the left margin. + +The arguments \PName{number} and \PName{text} are already formatted, including +the font settings. Ultimately, these commands thus control the arrangement of +the two parts of the heading. For unnumbered headings, the \PName{number} +argument is completely empty, so it does not contain any formatting commands. + +The default definitions are: +\begin{lstcode} +\newcommand{\sectionlinesformat}[4]{% + \@hangfrom{\hskip #2#3}{#4}% +} +\newcommand{\sectioncatchphraseformat}[4]{% + \hskip #2#3#4% +} +\end{lstcode} + +If you redefine one of these commands, you are responsible for preventing page +breaks inside heading. \KOMAScript{} itself only changes +\Macro{interlinepenalty} to impede page breaks. + +\begin{Example} + As in the previous example with chapter headings, the free-standing headings + of the \PValue{section} \PName{level} should now be printed with a + background colour. Headings of lower levels should not be changed: +\begin{lstcode} + \makeatletter + \renewcommand{\sectionlinesformat}[4]{% + \@tempswafalse + \ifstr{#1}{section}{% + \hspace*{#2}% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth-2\fboxrule-2\fboxsep-#2}{% + \raggedsection + \@hangfrom{#3}{#4}% + }% + }% + }{% + \@hangfrom{\hskip #2#3}{#4}% + }% + } + \makeatother +\end{lstcode} + With this code, area of the indention is not coloured if the heading is + indented. If, however, the heading is placed in the left margin with + negative indention, this area of the margin is also highlighted. You can + move the \Macro{hspace*} command into the \Macro{colorbox} to change this + behaviour. + + Again, remember to use \Macro{makeatletter} and \Macro{makeatother} only in + the document preamble. You should omit them inside your own wrapper class or + package. They are only needed because of \Macro{@hangfrom} in the definition + of \Macro{sectionlinesformat}. +\end{Example} + +The first argument, \PName{level}, is not used by the default definition. The +example shows how to use it to distinguish different heading levels of the +same style \PValue{section}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{SecDef}\Parameter{star command}\Parameter{command}% + \Macro{scr@startsection}\Parameter{name}\Parameter{level}\Parameter{indent}% + \Parameter{beforeskip}\Parameter{afterskip}% + \Parameter{style commands}% + \OParameter{short version}\Parameter{heading}% + \labelsuffix[*]% + \Macro{scr@startsection}\Parameter{name}\Parameter{level}\Parameter{indent}% + \Parameter{beforeskip}\Parameter{afterskip}% + \Parameter{style commands}% + \PValue{*}\Parameter{heading}% + \labelsuffix% + \Macro{At@startsection}\Parameter{code}% + \Macro{Before@ssect}\Parameter{code}% + \Macro{Before@sect}\Parameter{code} +\end{Declaration} +As\ChangedAt[2014/09]{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and +\Class{scrartcl}} already explained in \autoref{sec:maincls.structure} in the +description of the sectioning commands beginning with +\DescPageRef{maincls.cmd.chapter}, \KOMAScript{} provides additional features +for the optional argument of those commands. To achieve this, it was necessary +to replace some \LaTeX{} kernel commands, especially +\Macro{secdef}\IndexCmd{secdef}\important{\Macro{secdef}} and +\Macro{@startsection}\IndexCmd{@startsection}% +\important{\Macro{@startsection}}. The meaning of the parameters of these +commands can be found in the \LaTeX{} kernel manual \cite{latex:source2e}. + +However, these commands are often completely redefined by other packages in a +way that clashes with the functionality of \KOMAScript. So \KOMAScript{} not +only changes the definition of these commands but also defines the additional, +alternative commands \Macro{SecDef} and \Macro{scr@startsection}. Package +authors can use these commands as they would use the corresponding \LaTeX{} +kernel commands and therefore gain access to the additional features of +\KOMAScript. However, these commands should not be redefined, as they may +changed at any time, and then this redefinition could compromise +\KOMAScript{}'s functionality. + +\KOMAScript{} itself uses \Macro{SecDef} and \Macro{scr@startsection} instead +of \Macro{secdef} and \Macro{@startsection}, for example to define sectioning +commands with \DescRef{\LabelBase.cmd.DeclareSectionCommand}. So later +redefinitions of \Macro{secdef} or \Macro{@startsection} will not influence +the sectioning commands of \KOMAScript. + +As an alternative to redefining such commands, \KOMAScript{} offers the +possibility to add additional \PName{code} at several points in +\KOMAScript{}'s own replacements. The \PName{code} of all calls to +\Macro{At@startsection}\important{\Macro{At@startsection}\\ + \Macro{Before@sect}\\ + \Macro{Before@sect}}, \Macro{Before@sect} and \Macro{Before@sect} is +collected separately for each command. There is no provision for removing +\PName{code} once it has been inserted. + +The \PName{code} of the \Macro{At@startsection}% + \important{\Macro{At@startsection}\\ + \Macro{scr@startsection}} macro is used in the \Macro{scr@startsection} +command immediately after evaluating \PName{beforeskip} and calculating the +resulting \Length{@tempskipa} but before adding the vertical skip itself. So +you can still change the value of \Length{@tempskipa}. + +The \PName{code} of \Macro{Before@sect} or \Macro{Before@ssect} is executed +within \Macro{scr@startsection} just before calling \Macro{@sect} or +\Macro{@ssect}, respectively. At this point, the vertical skip of +\Length{@tempskipa} has already been added using \Macro{addvspace}. + +These three commands, \Macro{At@startsection}, \Macro{Before@sect}, and +\Macro{Before@ssect}, are designed as an interface for package authors and +released for them to use.% +% +\EndIndexGroup + +% \subsection{Appendix} +% \seclabel{appendix} + + +\begin{Declaration} + \Macro{appendixmore} +\end{Declaration}% +The \KOMAScript{} classes have an unusual feature within the +\DescRef{maincls.cmd.appendix} command. If the \Macro{appendixmore} command +is defined, \DescRef{maincls.cmd.appendix} will also execute this +it. Internally, the \KOMAScript{} classes +\Class{scrbook}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} and +\Class{scrreprt} take advantage of this behaviour to implement the +\DescRef{maincls.option.appendixprefix} layout option (see +\autoref{sec:maincls.structure}, +\DescPageRef{maincls.option.appendixprefix}). You\textnote{Attention!} should +take note of this in case you decide to define or redefine the +\Macro{appendixmore} macro. If this option has been used, you will receive an +error message when using \verb|\newcommand{\appendixmore}{|\dots\verb|}|. This +behaviour is intended to prevent you from overriding the options without +realising it. + +\begin{Example} + You do not want the chapters in the main part of the classes \Class{scrbook} + or \Class{scrreprt} to be introduced by a prefix line (see the + \DescRef{maincls.option.chapterprefix} layout option in + \autoref{sec:maincls.structure}, + \DescPageRef{maincls.option.chapterprefix}). For consistency, you also do + not want such a line in the appendix either. Instead, you would like to see + the word ``Chapter'' in the language of your choice written in front of the + chapter letter and, simultaneously, in the page headings. Instead of using + the \DescRef{maincls.option.appendixprefix} layout option, you define the + following in the document preamble: +% +\begin{lstcode} + \newcommand*{\appendixmore}{% + \renewcommand*{\chapterformat}{% + \appendixname~\thechapter\autodot\enskip} + \renewcommand*{\chaptermarkformat}{% + \appendixname~\thechapter\autodot\enskip} + } +\end{lstcode} +% + In case you subsequently change your mind and decide to use the option + \DescRef{maincls.option.appendixprefix} at a later stage, you will get an + error message because of the already defined \Macro{appendixmore} command. + This behaviour prevents the definition made above from invisibly changing + the settings intended with the option. + + It is also possible to get a similar behaviour for the appendix of the class + \Class{scrartcl}. For example, you can write in the preamble of your + document: +\begin{lstcode}[moretexcs={ifthenelse,equal}] + \newcommand*{\appendixmore}{% + \renewcommand*{\sectionformat}{% + \appendixname~\thesection\autodot\enskip}% + \renewcommand*{\sectionmarkformat}{% + \appendixname~\thesection\autodot\enskip}} +\end{lstcode} + + The redefined commands are explained in more detail in + \autoref{sec:maincls.structure}, + \DescPageRef{maincls.cmd.chapterformat} and + \DescPageRef{maincls.cmd.chaptermarkformat}. +\end{Example} +% +\EndIndexGroup + + +% \subsection{Literaturverzeichnis} +% \seclabel{bibliography} + +\begin{Declaration} + \Macro{newbibstyle}\OParameter{parent style}\Parameter{name}%^^A + \Parameter{commands}% + \Macro{newblock}% + \Macro{@openbib@code}% + \Macro{bib@beginhook}% + \Macro{bib@endhook} +\end{Declaration} +The standard classes\textnote{standard classes} already provide the +\Macro{newblock} command to structure bibliography entries. The exact purpose +of this command depends on the class options. Using option +\Option{openbib}\important{\Option{openbib}} redefines the commands +\Macro{@openbib@code} and \Macro{newblock} itself at the end of the standard +class. The standard classes execute the \Macro{@openbib@code} command when +starting the bibliography list, or more precisely, when defining the +parameters for the list. You can assume that many packages which redefine the +bibliography will execute this command. + +The \KOMAScript{} classes\textnote{\KOMAScript} do something similar. However, +they do not redefine \Macro{@openbib@code} at the end of the class. Instead, +\Macro{newbibstyle} defines the \PValue{openstyle} bibliography style. The +\PName{commands} given in the implementation contain the appropriate +redefinition of \Macro{@openbib@code} and \Macro{newblock}. If you select this +bibliography style using the +\OptionValueRef{maincls}{bibliography}{openstyle}% +\IndexOption{bibliography~=\PValue{openstyle}}% +\important{\OptionValueRef{maincls}{bibliography}{openstyle}} option, the +\PName{commands} will be executed immediately. This will redefine +\Macro{@openbib@code} and \Macro{newblock}. + +In addition to \Macro{@openbib@code} and \Macro{newblock}, +\Macro{bib@beginhook} and \Macro{bib@endhook} can also be redefined by the +\PName{commands} of the style. The \Macro{bib@beginhook} command is executed +immediately after the heading and preamble of the bibliography but before the +beginning of the list of bibliographic entries. The \Macro{bib@endhook} +command will be executed immediately after this list, at the end of the +bibliography. If \DescRef{maincls.cmd.BreakBibliography} (see +\autoref{sec:maincls.bibliography}, +\DescPageRef{maincls.cmd.BreakBibliography}) is used to interrupt the +bibliography, these commands will also executed at the beginning and end of +each part of the bibliography, immediately before and after +\DescRef{maincls.cmd.BreakBibliography}. + +The \Macro{newblock}, \Macro{@openbib@code}, \Macro{bib@beginhook}, and +\Macro{bib@endhook} commands are initially defined to be empty when using a +new bibliography style. After this, the \PName{commands} of the \PName{parent +style} that was optionally specified when defining the style will be executed, +followed by the \PName{commands} for the bibliography style itself. As a +result, these commands must be defined, if necessary, with +\Macro{renewcommand}\IndexCmd{renewcommand}\important{\Macro{renewcommand}}, +not \Macro{newcommand}, inside the \PName{instructions} argument. + +If you use the +\DescRef{maincls.cmd.AtEndBibliography}\IndexCmd{AtEndBibliography} and +\DescRef{maincls.cmd.AfterBibliographyPreamble}% +\IndexCmd{AfterBibliographyPreamble} commands to declare additional +\PName{commands} to be executed after the preamble or at the end of the +bibliography, the \PName{commands} specified with +\DescRef{maincls.cmd.AfterBibliographyPreamble} will only be executed once, at +the beginning of the bibliography after the \Macro{bib@beginhook} +\PName{commands}, and the \PName{commands} of +\DescRef{maincls.cmd.AtEndBibliography} will be executed only once at the end +of the bibliography, before \Macro{bib@endhook}. + +For\textnote{Example!} example, the +\Package{multicol}\IndexPackage{multicol}\important{\Package{multicol}} +package (see \cite{package:multicol}) could be used to define a bibliography +style for printing the bibliography with two columns: +% Umbruchkorrektur: listings korrigiert +\begin{lstcode} + \newbibstyle{twocolumstyle}{% + \renewcommand*{\bib@beginhook}{\begin{multicols}{2}}% + \renewcommand*{\bib@endhook}{\end{multicols}}}% +\end{lstcode} +If you also want to define an open variation of this style, you can use +the possibilities of inheritance here and specify a \PName{parent style}: +% Umbruchkorrektur: listings korrigiert +\begin{lstcode} + \newbibstyle{twocolumopenstyle}[openstyle]{% + \renewcommand*{\bib@beginhook}{\begin{multicols}{2}}% + \renewcommand*{\bib@endhook}{\end{multicols}}}% +\end{lstcode} +You can then select these newly defined styles with the +\DescRef{maincls.option.bibliography} option as usual. + +Like\textnote{Achtung!} \DescRef{maincls.cmd.BreakBibliography}, these +commands lose all or part of their effect when \Environment{thebibliography} +is redefined, for example by using +\Package{biblatex}\IndexPackage{biblatex}\important{\Package{biblatex}}.% +\EndIndexGroup + + +\section{More or Less Obsolete Options and Commands} +\seclabel{obsolete} + +\LoadNonFree{scrbookreportarticle-experts}{4} +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% ispell-local-dictionary: "english" +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: + +% LocalWords: Amongst legitimation diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrbookreportarticle.tex b/macros/latex/contrib/koma-script/source-doc/english/scrbookreportarticle.tex new file mode 100644 index 0000000000..b20b18726b --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrbookreportarticle.tex @@ -0,0 +1,4662 @@ +% ====================================================================== +% scrbookreportarticle.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrbookreportarticle.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrbook, scrreprt, and scrartcl of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber scrbook, scrreprt und scrartcl in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrbookreportarticle.tex} + [$Date: 2019-01-14 14:29:39 +0100 (Mon, 14 Jan 2019) $ + KOMA-Script guide (chapter: scrbook, scrreprt, scrartcl)] + +\translator{Jens-Uwe Morawski\and Gernot Hassenpflug\and Markus Kohm\and + Krickette Murabayashi\and Jana Schubert\and Jens H\"uhne\and Karl Hagen} + +% Date of the translated German file: 2019-01-14 + +\chapter{The Main Classes: \Class{scrbook}, \Class{scrreprt}, and + \Class{scrartcl}} +\labelbase{maincls}% +\BeginIndexGroup +\BeginIndex{Class}{scrbook}% +\BeginIndex{Class}{scrreprt}% +\BeginIndex{Class}{scrartcl}% + +\AddSeeIndex{instruction}{gen}{\GuidecmdIndexShort}{cmd}% +\AddSeeIndex{macro}{gen}{\GuidecmdIndexShort}{cmd}% +The main classes of the {\KOMAScript} bundle are designed as counterparts to +the standard {\LaTeX} classes. This means that the {\KOMAScript} bundle +contains replacements for the three standard classes, +\Class{book}\IndexClass{book}, \Class{report}\IndexClass{report}, and +\Class{article}\IndexClass{article}. There is also a replacement for the +standard \Class{letter}\IndexClass{letter} class. The document class for +letters is described in a separate chapter because it is fundamentally +different from the three main classes (see \autoref{cha:scrlttr2}). + +The simplest way to use a {\KOMAScript} class instead of a standard one is to +substitute the class name in the \verb|\documentclass| command in accordance +with \autoref{tab:\LabelBase.overview}. For example, you can replace +\Macro{documentclass}\PParameter{book} with +\Macro{documentclass}\PParameter{scrbook}. Normally, {\LaTeX} should process +the document without errors, just as before the substitution. The layout, +however, should be different. Additionally, the {\KOMAScript} classes provide +new possibilities and options that are described in the following sections. + +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside} + [Class correspondence]{\label{tab:\LabelBase.overview}Correspondence between + standard classes and {\KOMAScript} classes} + [l] + \begin{tabular}[t]{ll} + \toprule + standard class & \KOMAScript{} class \\%& \Script-Stil (\LaTeX2.09)\\ + \midrule + \Class{article} & \Class{scrartcl} \\%& \File{script\textunderscore s} \\ + \Class{report} & \Class{scrreprt} \\%& \File{script} \\ + \Class{book} & \Class{scrbook} \\%& \File{script} \\ + \Class{letter} & \Class{scrlttr2} \\%& \File{script\textunderscore l} \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} + +Let me say something before describing the classes. When beginning to write a +document, you are often unsure which specific options to choose. Some +settings, for instance the choice of paper size, may be fixed in advance. But +even the question of the appropriate page layout could be difficult to answer +initially. On the other hand, these settings should be nearly irrelevant, in +the beginning, to the main business of an author: planning the document +structure, writing the text, preparing figures, tables, lists, index, and +other data. As an author, you should concentrate initially on the content. +When that is done, you can take on the fine points of presentation. In +addition to the choice of options, this includes correcting hyphenation, +optimizing page breaks, and placing tables and figures. + + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\LoadCommonFile{options}% \section{Early or Late Selection of Options} + +\LoadCommonFile{compatibility}% \section{Compatibility with Earlier Versions of KOMA-Script} + +\LoadCommonFile{draftmode}% \section{Draft Mode} + +\LoadCommonFile{typearea}% \section{Page Layout} + +\begin{Declaration} + \Macro{flushbottom} + \Macro{raggedbottom} +\end{Declaration} +\begin{Explain} + In two-sided documents especially, it is preferable to have the same visual + baseline not only for the first lines of each text area in a two-page spread + but also for the last lines. If a page consists only of text without + paragraphs or headings, this is generally the result. But a paragraph + spacing of half a line would be enough to prevent you from achieving this + goal if the number of paragraphs on each page of the two-page spread differs + by an odd number. In this case, at least some of the paragraph distances + need to be stretched or shrunk to reach the target again. \TeX{} defines + stretchable and shrinkable distances for this purpose, and \LaTeX{} lets you + perform this kind of \emph{vertical adjustment}\Index{adjustment} + automatically. +\end{Explain} + +Using two-sided printing with the +\Option{twoside}\IndexOption{twoside}\important{\Option{twoside}} option (see +\autoref{sec:typearea.options}, \DescPageRef{typearea.option.twoside}) or +two-column formatting with the +\Option{twocolumn}\IndexOption{twocolumn}\important{\Option{twocolumn}} option +(see \DescPageRef{typearea.option.twocolumn}) also activates this vertical +adjustment. But\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} this does not apply with a compatibility setting for a +\KOMAScript{} version prior to 3.17 (see +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}, option +\DescRef{\LabelBase.option.version}\IndexOption{version}% +\important{\OptionValueRef{\LabelBase}{version}{3.17}}) if you use +\DescRef{\LabelBase.cmd.KOMAoption} or \DescRef{\LabelBase.cmd.KOMAoptions} to +change the setting of these options. + +You can also explicitly request vertical adjustment at any time starting with +the current page by using \Macro{flushbottom}. \Macro{raggedbottom} has the +opposite effect, switching off vertical adjustment starting with the current +page. This corresponds to the default for one-sided printing. + +By the way, \KOMAScript{} uses a slightly modified method for adjusting the +vertical skip. This has been done to move footnotes to the bottom of the +text area instead of having them close to the last text line used. +\iffree{}{ + You can find more information about this at + \autoref{sec:maincls-experts.addInfos}, + \DescPageRef{maincls-experts.cmd.footnoterule}.}% +% +\EndIndexGroup +% +\EndIndexGroup + + +\LoadCommonFile{fontsize}% \section{Choosing the Document Font Size} + +\LoadCommonFile{textmarkup}% \section{Text Markup} + +\LoadCommonFile{titles}% \section{Document Titles} + +\section{Abstract} +\seclabel{abstract} +\BeginIndexGroup +\BeginIndex{}{abstract}% + +Particularly with articles, more rarely with reports, there is an abstract, or +summary, directly beneath the title and before the table of contents. When +using an in-page title, this abstract is normally a kind of left- and +right-indented block. In comparison, the abstract appears as a chapter or +section when using title pages. + +\begin{Declaration} + \OptionVName{abstract}{simple switch} +\end{Declaration}% +In\OnlyAt{\Class{scrreprt}\and\Class{scrartcl}} the standard +classes\textnote{\KOMAScript{} vs. standard classes}, the +\DescRef{\LabelBase.env.abstract} environment sets the text ``\abstractname'' +centred before the abstract text. This used to be the normal practice. Since +then, reading newspapers has trained us to recognize a suitably highlighted +text at the beginning of an article or report as the abstract. This is even +more true when the text comes before the table of contents. It is also +confusing if, of all things, this title appears small and centred. +{\KOMAScript}\ChangedAt{v3.00}{\Class{scrreprt}\and \Class{scrartcl}} offers +the option to include or exclude the abstract's title with the +\Option{abstract} option. For \PName{simple switch}, you can use any value +from \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. The +default for \KOMAScript{} is \PValue{false}. + +Books typically use a different kind of summary. There, you usually place an +appropriate chapter at the beginning or the end of the work. This chapter is +often combined with either the introduction or a description of a larger +prospectus. Therefore, the \Class{scrbook} class has no +\DescRef{\LabelBase.env.abstract} environment. A\textnote{Hint!} summary +chapter is also recommended for reports in a wider sense, such as a Master's +thesis or Ph.D. dissertation. See the commands +\DescRef{\LabelBase.cmd.chapter*}\IndexCmd{chapter*}, +\DescRef{\LabelBase.cmd.addchap}\IndexCmd{addchap}, and +\DescRef{\LabelBase.cmd.addchap*}\IndexCmd{addchap*} documented in +\autoref{sec:maincls.structure}, from \DescPageRef{\LabelBase.cmd.chapter*}.% +\EndIndexGroup + + +\begin{Declaration} + \begin{Environment}{abstract}\end{Environment} +\end{Declaration}% +\OnlyAt{\Class{scrartcl}\and \Class{scrreprt}}% +Some {\LaTeX} classes provide a special environment for this summary: the +\Environment{abstract} environment. This is output directly, so it is not part +of the title created with \DescRef{\LabelBase.cmd.maketitle}. +Please\textnote{Attention!} note that \Environment{abstract} is an +environment, not a command. Whether the abstract has a heading or not is +determined by the \DescRef{\LabelBase.option.abstract} option (see above). + +For books, the abstract is usually part of the introduction or a separate +chapter at the end of the document. Therefore \Class{scrbook} does not provide +an \Environment{abstract} environment. When using the \Class{scrreprt} class, +it is definitely worth considering whether to proceed in the same way. See the +commands \DescRef{\LabelBase.cmd.chapter*}\IndexCmd{chapter*} and +\DescRef{\LabelBase.cmd.addchap}\IndexCmd{addchap}, or +\DescRef{\LabelBase.cmd.addchap*} in \autoref{sec:\LabelBase.structure} +from \DescPageRef{\LabelBase.cmd.chapter*} for more on this. + +When using an in-page title\Index{title>in-page} (see option +\DescRef{\LabelBase.option.titlepage}, \autoref{sec:\LabelBase.titlepage}, +\DescPageRef{\LabelBase.option.titlepage}), the abstract is set internally +using the \DescRef{\LabelBase.env.quotation}\IndexEnv{quotation} environment +(see \autoref{sec:\LabelBase.lists}, \DescPageRef{\LabelBase.env.quotation}). +This way paragraphs will be set with the first line indented. If the first +paragraph of the abstract should not be indented, you can suppress this indent +by using \Macro{noindent}\IndexCmd{noindent}% +\important{\Macro{noindent}} \iffree{just after + \Macro{begin}\PParameter{abstract}}{at the beginning of the environment}.% +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Table of Contents} +\seclabel{toc} +\BeginIndexGroup +\BeginIndex{}{table of contents} + +The title and optional abstract are normally followed by a table of contents. +Often you also find additional lists of the floating environments, such as +tables and figures, after the table of contents (see +\autoref{sec:\LabelBase.floats}). + +\iffalse% + Note that in addition to the options documented in this section, the + commands \DescRef{maincls-experts.cmd.DeclareSectionCommand}, + \DescRef{maincls-experts.cmd.DeclareNewSectionCommand}, + \DescRef{maincls-experts.cmd.RedeclareSectionCommand}, and + \DescRef{maincls-experts.cmd.ProvideSectionCommand} can also affect the + table of contents. See \autoref{sec:maincls-experts.experts}, + \DescPageRef{maincls-experts.cmd.DeclareSectionCommand}.% +\else% + In addition to the options documented in this section, the + \hyperref[cha:tocbasic]{\Package{tocbasic}}% + \important{\hyperref[cha:tocbasic]{\Package{tocbasic}}}% + \IndexPackage{tocbasic} package style selected and configured with + \DescRef{tocbasic.cmd.DeclareTOCStyleEntry}\IndexCmd{DeclareTOCStyleEntry}% + \important[O]{\DescRef{tocbasic.cmd.DeclareTOCStyleEntry}} (see + \DescPageRef{tocbasic.cmd.DeclareTOCStyleEntry}) also has a significant + impact on the appearance of the table of contents. Similarly, the commands + \DescRef{maincls-experts.cmd.DeclareSectionCommand}% + \important[O]{\DescRef{maincls-experts.cmd.DeclareSectionCommand}}% + \IndexCmd{DeclareSectionCommand}, + \DescRef{maincls-experts.cmd.ProvideSectionCommand}% + \IndexCmd{ProvideSectionCommand}, + \DescRef{maincls-experts.cmd.DeclareNewSectionCommand}% + \IndexCmd{DeclareNewSectionCommand} and + \DescRef{maincls-experts.cmd.RedeclareSectionCommand}% + \IndexCmd{RedeclareSectionCommand} documented in + \autoref{sec:maincls-experts.experts}, + \DescPageRef{maincls-experts.cmd.DeclareSectionCommand} can also affect the + table of contents.% +\fi + + +\begin{Declaration} + \OptionVName{toc}{setting} +\end{Declaration} +It is becoming increasingly common to to include lists of tables and figures, +the bibliography, and sometimes even the index in the table of contents. This +is surely related to the recent trend of putting lists of figures and tables +at the end of the document. Both lists are similar to the table of contents in +structure and intention. I'm therefore sceptical of this evolution. +Since\important{\OptionValue{toc}{listof}} it makes no sense to include only +the list of tables or that of figures in the table of contents without the +other, there is only one \PName{setting}\ChangedAt{v3.00}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} +\PValue{listof}\IndexOption{toc~=\textKValue{listof}}, which causes entries +for both types of lists to be included. This also includes any lists produced +with version~1.2e or later of the \Package{float} package\IndexPackage{float} +from Version~1.2e (see \cite{package:float}) or \Package{floatrow} (see +\cite{package:floatrow}). None\important{\OptionValue{toc}{listofnumbered}} +of these lists are generally given a chapter number. If you want to ignore +this principle, use the \PName{setting} +\PValue{listofnumbered}\IndexOption{toc~=\textKValue{listofnumbered}}. + +\leavevmode\LabelOptionValue{toc}{index}\nobreak +The\important{\OptionValue{toc}{index}} +\OptionValue{toc}{index}\IndexOption{toc~=\textKValue{index}} option causes an +entry for the index to be included in the table of contents. The index is +unnumbered since it too only includes references to the contents of the other +sectioning levels. Despite\ChangedAt{v3.18}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} +\important{\OptionValue{toc}{indexnumbered}} the author's concerns, +\KOMAScript{} does support deviating from this principle with +\OptionValue{toc}{indexnumbered}\IndexOption{toc~=\textKValue{indexnumbered}}. + +\leavevmode\LabelOptionValue{toc}{bibliography}\nobreak The bibliography is a +slightly different kind of listing. It does not list the contents of the +present document but refers instead to external sources. +For\important{\OptionValue{toc}{bibliographynumbered}} that reason, it could +be argued that it qualifies as a chapter (or section) and, as such, should be +numbered. The \OptionValue{toc}{bibliographynumbered}% +\IndexOption{toc~=\textKValue{bibliographynumbered}} option has this effect, +and puts the appropriate entry in the table of contents. However, I think that +this reasoning would lead us to consider even a classic, annotated source list +to be a separate chapter. Moreover, the bibliography is ultimately not +something that you wrote yourself. +Therefore\important{\OptionValue{toc}{bibliography}} the bibliography merits, +at best, an unnumbered entry in the table of contents, and you can achieve +this achieved with +\OptionValue{toc}{bibliography}\IndexOption{toc~=\textKValue{bibliography}}. + +\leavevmode\LabelOptionValue{toc}{graduated}\nobreak +The table of contents is normally\ChangedAt{v2.8q}{% + \Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}% +\important{\OptionValue{toc}{graduated}} formatted so that different levels of +sectioning commands have different indentations. The number for each level is +set left-justified in a fixed-width field. This default set-up is selected +with the\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} +\OptionValue{toc}{graduated}\IndexOption{toc~=\textKValue{graduated}} option. + +\leavevmode\LabelOptionValue{toc}{flat}\nobreak +If the sectioning level which appears in the table of contents is too deep, the +number for that level can be so wide that the space reserved for the number is +insufficient. The German FAQ \cite{DANTE:FAQ} suggests redefining the table of +contents in such a case. \KOMAScript{}\important{\OptionValue{toc}{flat}} +offers an alternative format that avoids the problem completely. If you use +the \OptionValue{toc}{flat}\IndexOption{toc~=\textKValue{flat}} option, no +graduated indentation is applied to the headings of the sectioning levels. +Instead, a table-like organisation is used, where all sectioning numbers and +headings are set in a left-justified column. The space necessary for the +section numbers is thus determined automatically. + +You can find an overview of all available values for the \PName{setting} of +\Option{toc}. in \autoref{tab:\LabelBase.toc}. + +\begin{desclist} + \desccaption[{Available values for the \Option{toc} option}]{% + Available values for the \Option{toc} option to set the format and contents + of the table of contents\label{tab:\LabelBase.toc}% + }{% + Available values for the \Option{toc} option (\emph{continued})% + }% + \entry{\PValue{bibliography}, \PValue{bib}}{% + The bibliography has an unnumbered entry in the table of contents.% + \IndexOption{toc~=\textKValue{bibliography}}}% + \entry{\PValue{bibliographynumbered}, \PValue{bibnumbered}, + \PValue{numberedbibliography}, \PValue{numberedbib}}{% + The bibliography has a numbered entry in the table of contents.% + \IndexOption{toc~=\textKValue{bibliographynumbered}}}% + \entry{\PValue{chapterentrywithdots}, \PValue{chapterentrydotfill}}{% + \ChangedAt[2014/12]{v3.15}{\Class{scrbook}\and \Class{scrreprt}}% + The chapter entries for the \Class{scrbook} and \Class{scrreprt} classes + also use dots to separate the heading text from the page numbers.% + \IndexOption{toc~=\textKValue{chapterentrywithdots}}}% + \entry{\PValue{chapterentrywithoutdots}, \PValue{chapterentryfill}}{% + \ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}}% + The chapter entries of the \Class{scrbook} and \Class{scrreprt} classes + use white space to separate the heading text from the page numbers. This + corresponds to the default setting.% + \IndexOption{toc~=\textKValue{chapterentrywithoutdots}}}% + \entry{\PValue{flat}, \PValue{left}}{% + The table of contents is set in table form. The numbers of the headings + are in the first column, the heading text in the second column, and the + page number in the third column. The amount of space needed for the + numbers of the headings is determined by the required amount of space + detected during the previous \LaTeX{} run.% + \IndexOption{toc~=\textKValue{flat}}}% + \entry{\PValue{graduated}, \PValue{indent}, \PValue{indented}}{% + The table of contents is set in hierarchical form. The amount of space for + the heading numbers is limited. This corresponds to the default setting.% + \IndexOption{toc~=\textKValue{graduated}}}% + \entry{\PValue{indenttextentries}, \PValue{indentunnumbered}, + \PValue{numberline}}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + The \PValue{numberline} property (see \autoref{sec:tocbasic.toc}, + \DescPageRef{tocbasic.cmd.setuptoc}) is set for the table of contents. As + a result, unnumbered entries are left aligned with the text of numbered + entries of the same level.% + \IndexOption{toc~=\textKValue{numberline}}}% + \entry{\PValue{index}, \PValue{idx}}{% + The index has an unnumbered entry in the table of contents.% + \IndexOption{toc~=\textKValue{index}}}% + \entry{\PValue{indexnumbered}}{% + \ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + The index has a numbered entry in the table of contents.% + \IndexOption{toc~=\textKValue{index}}}% + \entry{\PValue{leftaligntextentries}, \PValue{leftalignunnumbered}, + \PValue{nonumberline}}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + The \PValue{numberline} property (see \autoref{sec:tocbasic.toc}, + \DescPageRef{tocbasic.cmd.setuptoc}) is deleted for the table of contents. + This places unnumbered entries left-aligned with the number of + numbered entries of the same level. This corresponds to the default + setting.% + \IndexOption{toc~=\textKValue{numberline}}}% + \pventry{listof}{% + The lists of floating environments, e.\,g. figures and tables, have + unnumbered entries in the table of contents.% + \IndexOption{toc~=\textKValue{listof}}}% + \entry{\PValue{listofnumbered}, \PValue{numberedlistof}}{% + The lists of floating environments, e.\,g. figures and tables, have + numbered entries in the table of contents.% + \IndexOption{toc~=\textKValue{listofnumbered}}}% + \entry{\PValue{nobibliography}, \PValue{nobib}}{% + The bibliography does not have an entry in the table of contents. This + corresponds to the default setting.% + \IndexOption{toc~=\textKValue{nobibliography}}}% + \entry{\PValue{noindex}, \PValue{noidx}}{% + The index does not have an entry in the table of contents. This + corresponds to the default setting.% + \IndexOption{toc~=\textKValue{noindex}}}% + \pventry{nolistof}{% + The lists of floating environments, e.\,g. figures and tables, do not + have entries in the table of contents. This corresponds to the default + setting.% + \IndexOption{toc~=\textKValue{nolistof}}}% + \entry{\PValue{sectionentrywithdots}, \PValue{sectionentrydotfill}}{% + \ChangedAt[2014/12]{v3.15}{\Class{scrartcl}}% + The section entries of the \Class{scrartcl} class also use dots to + separate the heading text from the page numbers.% + \IndexOption{toc~=\textKValue{sectionentrywithdots}}}% + \entry{\PValue{sectionentrywithoutdots}, \PValue{sectionentryfill}}{% + \ChangedAt{v3.15}{\Class{scrartcl}}% + The section entries of the \Class{scrartcl} class use white space to + separate the heading text from the page number. This corresponds to the + default setting.% + \IndexOption{toc~=\textKValue{sectionentrywithoutdots}}}% +\end{desclist} +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{chapterentrydots}{simple switch}\\ + \OptionVName{sectionentrydots}{simple switch} +\end{Declaration} +These\ChangedAt[2014/12]{v3.15}{\Class{scrbook}\and \Class{scrreprt}} options +configure a dotted connecting line between the text and page number of the +chapter entries for the \Class{scrbook} and +\Class{scrreprt}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} classes, or for +the section entries of the \Class{scrartcl}\OnlyAt{\Class{scrartcl}} class, in +the table of contents. For the \PName{simple switch}, you can use any value from +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. +The default is \PValue{false}. It selects an empty gap instead of dots. + +\BeginIndex{FontElement}{chapterentrydots}\LabelFontElement{chapterentrydots}% +\BeginIndex{FontElement}{sectionentrydots}\LabelFontElement{sectionentrydots}% +If a dotted line is used, you can change its font using the element +\FontElement{chapterentrydots}% +\important[i]{\FontElement{chapterentrydots}\\ + \FontElement{sectionentrydots}} or \FontElement{sectionentrydots}. The font +also depends on the element of the page number of the entry (see also +\DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont}, \autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}, as well as +\autoref{tab:maincls.fontelements}, +\autopageref{tab:maincls.fontelements}). The defaults of the elements are +shown in \autoref{tab:maincls.tocelements}, from +\autopageref{tab:maincls.tocelements}. Note\textnote{Attention!} that the dots +of all entries will be equally spaced only if all dots use the same font.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tableofcontents} +\end{Declaration}% +The table of contents is output by the \Macro{tableofcontents} command. To get +correct values in the table of contents requires at least two {\LaTeX} runs +after every change. The \DescRef{\LabelBase.option.toc} option described above +can also affect the extent and format of the table of contents. After changing +the settings of this option, at least two \LaTeX{} runs are needed again. + +Entries for \DescRef{\LabelBase.cmd.chapter}\IndexCmd{chapter} with +\Class{scrbook}\IndexClass{scrbook} and \Class{scrreprt}\IndexClass{scrreprt}, +or \DescRef{\LabelBase.cmd.section}\IndexCmd{section} with +\Class{scrartcl}\IndexClass{scrartcl}, and the sectioning level +\DescRef{\LabelBase.cmd.part}\IndexCmd{part} are not indented. Additionally, +there are no dots between the text of this heading and the page number. The +typographical logic for this behaviour is that the font is usually distinct +and appropriate emphasis is desirable. +However\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}, you can change this behaviour with the previously +documented options. The table of contents of this \iffree{guide}{book} is +created with the default settings and serves as an example. + +\BeginIndex{FontElement}{partentry}\LabelFontElement{partentry}% +\BeginIndex{FontElement}{chapterentry}\LabelFontElement{chapterentry}% +\BeginIndex{FontElement}{sectionentry}\LabelFontElement{sectionentry}% +The\ChangedAt{v2.97c}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}\important{\FontElement{partentry}\\ + \FontElement{chapterentry}\\ + \FontElement{sectionentry}} font style of the top two levels in the table of +contents is also affected by the settings for the \FontElement{partentry} +element, as well as by the \FontElement{chapterentry} element for the +\Class{scrbook} and \Class{scrreprt} classes, and by the +\FontElement{sectionentry} element for the \Class{scrartcl} class. +\BeginIndex{FontElement}{partentrypagenumber}% +\LabelFontElement{partentrypagenumber}% +\LabelFontElement{pagination}% +\BeginIndex{FontElement}{chapterentrypagenumber}% +\LabelFontElement{chapterentrypagenumber}% +\BeginIndex{FontElement}{sectionentrypagenumber}% +\LabelFontElement{sectionentrypagenumber}% +You can set the font style of the page numbers separately from these elements +using \FontElement{partentrypagenumber}% +\important{\FontElement{partentrypagenumber}} and +\FontElement{chapterentrypagenumber}% +\important{\FontElement{chapterentrypagenumber}\\ + \FontElement{sectionentrypagenumber}}\,---\,for \Class{scrbook} and +\Class{scrreprt}\,---\,or \FontElement{sectionentrypagenumber}\,---\,for +\Class{scrartcl}\,---\, (see \DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont} in \autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}, or +\autoref{tab:maincls.fontelements}, \autopageref{tab:maincls.fontelements}). +If\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} you use dotted lines connecting the heading entries +(chapter or section depending on the class) to the page numbers using the +\DescRef{\LabelBase.option.toc}% +\IndexOption{toc~=\textKValue{chapterentrywithdots}}% +\IndexOption{toc~=\textKValue{sectionentrywithdots}} +\DescRef{\LabelBase.option.chapterentrydots}% +\IndexOption{chapterentrydots~=\PName{simple switch}} or +\DescRef{\LabelBase.option.sectionentrydots}% +\IndexOption{sectionentrydots~=\PName{simple switch}} option, you can change +their font style using the \DescRef{\LabelBase.fontelement.chapterentrydots}% +\IndexFontElement{chapterentrydots}% +\important{\DescRef{\LabelBase.fontelement.chapterentrydots}\\ + \DescRef{\LabelBase.fontelement.sectionentrydots}} and +\DescRef{\LabelBase.fontelement.sectionentrydots}% +\IndexFontElement{sectionentrydots} elements. The defaults for these +elements are found in \autoref{tab:maincls.tocelements}. +\begin{table} +% \centering +% \caption + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside} + [Default font styles for the elements of the table of contents] + {\label{tab:maincls.tocelements}% + Default font styles for the elements of the table of contents} + [l] + \setlength{\tabcolsep}{.9\tabcolsep}% Umbruchoptimierung! + \begin{tabular}[t]{ll} + \toprule + Element & Default font style \\ + \midrule + \FontElement{partentry} & + \DescRef{\LabelBase.cmd.usekomafont}\PParameter{disposition}\Macro{large} \\ + \FontElement{partentrypagenumber} & \\ + \FontElement{chapterentry} & \DescRef{\LabelBase.cmd.usekomafont}\PParameter{disposition}\\ + \FontElement{chapterentrydots} & \Macro{normalfont} \\ + \FontElement{chapterentrypagenumber} & \\ + \FontElement{sectionentry} & \DescRef{\LabelBase.cmd.usekomafont}\PParameter{disposition} \\ + \FontElement{sectionentrydots} & \Macro{normalfont} \\ + \FontElement{sectionentrypagenumber} & \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} +% +\EndIndexGroup + + +\begin{Declaration} + \Counter{tocdepth} + \Macro{parttocdepth} + \Macro{sectiontocdepth} + \Macro{subsectiontocdepth} + \Macro{subsubsectiontocdepth} + \Macro{paragraphtocdepth} + \Macro{subparagraphtocdepth} +\end{Declaration}% +Normally, the sectioning divisions included in the table of contents are all +those from \DescRef{\LabelBase.cmd.part} to +\DescRef{\LabelBase.cmd.subsection} for the \Class{scrbook} and +\Class{scrreprt} classes, or from \DescRef{\LabelBase.cmd.part} to +\DescRef{\LabelBase.cmd.subsubsection} for the \Class{scrartcl} class. Whether +or not to include a sectioning level in the table of contents is controlled by +the \Counter{tocdepth} counter. This has the value -1 for +\DescRef{\LabelBase.cmd.part}, 0 for \DescRef{\LabelBase.cmd.chapter}, and so +on. By incrementing or decrementing the counter, you can choose the lowest +sectioning level to include in the table of contents. Incidentally, the +standard classes work the same way. +Unlike\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}\textnote{\KOMAScript{} vs. standard classes} with the +standard classes, with \KOMAScript{} you do not need to remember these values. +\KOMAScript{} defines a \Macro{\PName{level}tocdepth} command for each +sectioning level with the appropriate value which you can use to set +\Counter{tocdepth}. + +Please note\textnote{Attention!} that in +\Class{scrartcl}\OnlyAt{\Class{scrartcl}}, the values of \Counter{tocdepth} +and \DescRef{\LabelBase.counter.secnumdepth}\IndexCounter{secnumdepth} (see +\autoref{sec:\LabelBase.structure}, +\DescPageRef{\LabelBase.counter.secnumdepth}) for +\DescRef{\LabelBase.cmd.part} are not the same. This behaviour was copied from +the standard \Class{article} class for compatibility. Thus, for example, you +should not use \DescRef{\LabelBase.cmd.partnumdepth}\IndexCmd{partnumdepth} to +set the value of \Counter{tocdepth}.% +\begin{Example} + Suppose you are preparing an article that uses the sectioning level + \DescRef{\LabelBase.cmd.subsubsection}. However, you do not want this + sectioning level to appear in the table of contents. The preamble of your + document might contain the following: +\begin{lstcode} + \documentclass{scrartcl} + \setcounter{tocdepth}{\subsectiontocdepth} +\end{lstcode} + Thus you set the \Counter{tocdepth} counter to the value of the + \Macro{subsectiontocdepth} command. That value is normally 2, but this way, + you do not have to remember it. + + If instead you simply want to include one less level in the table of + contents than you normally would, you can simply subtract one from the + default value of \Counter{tocdepth}: +\begin{lstcode} + \documentclass{scrartcl} + \addtocounter{tocdepth}{-1} +\end{lstcode} + The\textnote{Hint!} value that you need to add to or subtract from + \Counter{tocdepth} is listed in the table of contents after at least two + \LaTeX{} runs. +\end{Example}% +\EndIndexGroup +% +\EndIndexGroup + + +\LoadCommonFile{parmarkup}% \section{Paragraph Markup} + +\LoadCommonFile{oddorevenpage}% \section{Detecting Odd or Even Pages} + + +\section{Headers and Footers Using Predefined Page Styles} +\seclabel{pagestyle} + +\BeginIndexGroup +\BeginIndex{}{page>style}% +One of the general characteristics of a document is the page style. In +\LaTeX{} this primarily consists of the contents of headers and footers. + + +\begin{Declaration} + \OptionVName{headsepline}{simple switch} + \OptionVName{footsepline}{simple switch} +\end{Declaration}% +You\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} can use these options to specify whether a horizontal rule +appears beneath the header or above the footer. You can use any of the values +for simple switches shown in \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch}. Setting the \Option{headsepline} option to +true or invoking it with no value results in a line beneath the header. +Similarly, activating the \Option{footsepline} option results in a rule above +the footer. Deactivating either option switches off the respective rule. + +The\textnote{Attention!} \Option{headsepline} option naturally has no effect +with the \DescRef{\LabelBase.pagestyle.empty} and +\DescRef{\LabelBase.pagestyle.plain} page styles, which are described below, +because these styles explicitly dispense with a header\Index{page>header}. +Typographically, such a line has the effect of making the header appear to be +closer to the text. This does not mean that the header then needs to be moved +farther away from the body of the text\Index{text>body}. Instead, the header +should be considered as belonging to the text body for the purpose of +calculating the type area. \KOMAScript{} takes this into account by passing +the \Option{headsepline} option to the +\hyperref[cha:typearea]{\Package{typearea}}% +\important{\hyperref[cha:typearea]{\Package{typearea}}}\IndexPackage{typearea} +package, which then automatically executes the package option +\DescRef{typearea.option.headinclude}% +\IndexOption{headinclude}\important{\DescRef{typearea.option.headinclude}} +with the same value. The same applies to the footer separation line. Unlike +\Option{headsepline}, the \Option{footsepline} option also affects the +\PValue{plain} page style because \PValue{plain} prints a page number in the +footer. + +The options themselves do not automatically recalculate the type area. To +recalculate it, use the \DescRef{typearea.option.DIV} option with the values +\hyperref[desc:typearea.option.DIV.last]{\PValue{last}} or +\hyperref[desc:typearea.option.DIV.current]{\PValue{current}} (see +\DescPageRef{typearea.option.DIV.last}) or the +\DescRef{typearea.cmd.recalctypearea} command (see +\DescPageRef{typearea.cmd.recalctypearea}) in \autoref{cha:typearea}. + +The \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} +package (see \autoref{cha:scrlayer-scrpage}) offers further possibilities for +adjusting lines in headers and footers.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{pagestyle}\Parameter{page style} + \Macro{thispagestyle}\Parameter{local page style} +\end{Declaration}% +There are usually four different page styles: +\begin{description} +\item[{\PageStyle{empty}% + \BeginIndex[indexmain]{Pagestyle}{empty}\LabelPageStyle{empty}}] is the + page style with completely empty headers and footers. In {\KOMAScript} + this is identical to the standard classes.% +\item[{\PageStyle{headings}% + \BeginIndex[indexmain]{Pagestyle}{headings}\LabelPageStyle{headings}}] is + the page style with running heads in the header. In this style, headings are + automatically\Index[indexmain]{running heads>automatic} inserted into the + header. \OnlyAt{\Class{scrbook}\and\Class{scrreprt}}% + With the classes \Class{scrbook}\IndexClass{scrbook} and + \Class{scrreprt}\IndexClass{scrreprt}, the headings of chapters and sections + are repeated in the header for two-sided printing\,---\,on the outer side + with {\KOMAScript}\textnote{\KOMAScript{} vs. standard classes}, on the + inner side with the standard classes. {\KOMAScript} puts the page number on + the outer side of the footer; the standard classes put it on the inner side + of the header. In one-sided printing, {\KOMAScript} uses only the chapter + headings, which are centred in the header, and puts the page numbers centred + in the footer. + \OnlyAt{\Class{scrartcl}}\Class{scrartcl}\IndexClass{scrartcl} behaves + similarly but starts one a level deeper in the sectioning hierarchy, with + sections and subsections, because the chapter level does not exist in this + case. + + While the standard classes\textnote{\KOMAScript{} vs. standard classes} + automatically convert the running heads to upper-case letters, + {\KOMAScript} uses the capitalisation found in the headings. There are + several typographical reasons for this. Upper-case letters are actually far + too massive as a text decoration. If you use them anyway, they should be set + one point smaller and with slightly tighter spacing. The standard classes do + not take these points into consideration. + + In addition, the {\KOMAScript} classes support rules below the header and + above the footer with the \DescRef{\LabelBase.option.headsepline} and + \DescRef{\LabelBase.option.footsepline} options (see + \DescPageRef{\LabelBase.option.headsepline}).% +\item[{\PageStyle{myheadings}% + \BeginIndex[indexmain]{Pagestyle}{myheadings}\LabelPageStyle{myheadings}}] + mostly corresponds to the \PValue{headings} page style, but the running + heads are not generated automatically% + \Index[indexmain]{running heads>manual}\,---\,they have to be defined by the + user. You can use the \DescRef{\LabelBase.cmd.markboth}\IndexCmd{markboth} + and \DescRef{\LabelBase.cmd.markright}\IndexCmd{markright}\important{% + \DescRef{\LabelBase.cmd.markboth}\\ + \DescRef{\LabelBase.cmd.markright}} commands for that purpose (see + \DescPageRef{\LabelBase.cmd.markright}). +\item[{\PageStyle{plain}% + \BeginIndex[indexmain]{Pagestyle}{plain}\LabelPageStyle{plain}}] is the + page style with no running head\Index{running head} and only a page number% + \Index{page>number} in the footer. The\textnote{\KOMAScript{} vs. standard + classes} standard classes always centre this page number in the footer. + {\KOMAScript} puts the page number on the outer side of the footer in + two-sided\Index{two-sided} mode. {\KOMAScript} behaves like the + standard classes in one-sided printing.% +\end{description} + +You\important{\Macro{pagestyle}} can set the page style at any time with the +help of the \Macro{pagestyle} command, and this setting takes effect with the +next page that is output. If\textnote{Hint!} you use \Macro{pagestyle} just +before a command that results in an implicit page break and if the new page +style should be used on the resulting new page, a +\DescRef{\LabelBase.cmd.cleardoublepage} just before \Macro{pagestyle} will be +useful. But usually you set the page style only once, at the beginning of the +document or in the preamble. + +To\important{\Macro{thispagestyle}} change the page style of the current page +only, use the \Macro{thispagestyle} command. This occurs automatically at some +points in the document. For example, the +\Macro{thispagestyle}\PParameter{\DescRef{\LabelBase.cmd.chapterpagestyle}} +command is issued implicitly on the first page of a chapter. + +Note\textnote{Attention!} that when you use the +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} +package, switching between automatic and manual running heads is no longer +accomplished by changing the page styles but with special instructions. You +should not use the \PValue{headings} and \PValue{myheadings} page styles with +this package. + +\BeginIndexGroup \BeginIndex[indexother]{}{font>style}% +\BeginIndex{FontElement}{pageheadfoot}\LabelFontElement{pageheadfoot}% +\LabelFontElement{pagehead}% +\BeginIndex{FontElement}{pagefoot}\LabelFontElement{pagefoot}% +\BeginIndex{FontElement}{pagenumber}\LabelFontElement{pagenumber}% +To change the font style used for the header, the footer, or the page +number\ChangedAt{v2.8p}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}, use the \DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}). The same element, +\FontElement{pageheadfoot}\IndexFontElement{pageheadfoot}% +\important{\FontElement{pageheadfoot}}, is used for the header and the footer. +The element for the page number within the header or footer is called +\FontElement{pagenumber}\IndexFontElement{pagenumber}% +\important{\FontElement{pagenumber}}. The +\FontElement{pagefoot}\IndexFontElement{pagefoot}% +\important{\FontElement{pagefoot}} element, which is also provided by the +\KOMAScript{} classes, is used only if you define a page style with the +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage} package in which the footer contains text (see +\autoref{cha:scrlayer-scrpage}, +\DescPageRef{scrlayer-scrpage.fontelement.pagefoot}). + +You can find the default settings in +\autoref{tab:\LabelBase.defaultFontsHeadFoot}. +% +\begin{table} +% \centering% +% \caption + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \addtokomafont{caption}{\raggedright}% + \begin{captionbeside} + [{Default values for page style elements}] + {\label{tab:maincls.defaultFontsHeadFoot}% + \hspace{0pt plus 1ex}% + Default values for page style elements} + [l] + \begin{tabular}[t]{ll} + \toprule + Element & Default \\ + \midrule + \FontElement{pagefoot}\IndexFontElement{pagefoot} & + \\ + \FontElement{pageheadfoot}\IndexFontElement{pageheadfoot} & + \Macro{normalfont}\Macro{normalcolor}\Macro{slshape} \\ + \FontElement{pagenumber}\IndexFontElement{pagenumber} & + \Macro{normalfont}\Macro{normalcolor}\\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} +% +\begin{Example} + \leavevmode\phantomsection\xmpllabel{cmd.pagestyle}% + Suppose you want to set header and footer in a smaller type size + and in italics. However, the page number should not be set in + italics but in bold. Apart from the fact that the result will look + horrible, you can do this as follows: +\begin{lstcode} + \setkomafont{pageheadfoot}{% + \normalfont\normalcolor\itshape\small} + \setkomafont{pagenumber}{\normalfont\bfseries} +\end{lstcode} + On the other hand, if you only want a smaller font to be used along with the + default slanted text, you can use the following: +\begin{lstcode} + \addtokomafont{pagehead}{\small} +\end{lstcode} + As you can see, the previous example uses the + \FontElement{pagehead}\important{\FontElement{pagehead}} element. You can + achieve the same result using \PValue{pageheadfoot} instead (see + \autoref{tab:\LabelBase.fontelements} on + \autopageref{tab:\LabelBase.fontelements}). +\end{Example} +It is not possible to use these methods to force upper-case letters to be used +automatically for the running heads. Although you can redefine +\DescRef{tocbasic.cmd.MakeMarkcase}\IndexCmd{MakeMarkcase}, in such cases you +should instead use the +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} package (see +\autoref{cha:scrlayer-scrpage}, +\DescPageRef{scrlayer-scrpage.option.markcase}). + +If\textnote{Hint!} you define your own page styles, the commands +\DescRef{\LabelBase.cmd.usekomafont}\PParameter{pageheadfoot}, +\DescRef{\LabelBase.cmd.usekomafont}\PParameter{pagenumber}, and +\DescRef{\LabelBase.cmd.usekomafont}\PParameter{pagefoot} can be useful. In +particular, if you do not use the {\KOMAScript} package +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} (see +\autoref{cha:scrlayer-scrpage}) but use, for example, the +\Package{fancyhdr}\IndexPackage{fancyhdr}\important{\Package{fancyhdr}} +package (see \cite{package:fancyhdr}), you can use these commands in your +definitions. In this way you can maintain compatibility with {\KOMAScript} as +much as possible. If you do not use these commands in your own definitions, +changes such as those shown in the previous examples have no effect. The +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage} package tries to maintain maximum +compatibility as long as, for example, +\iffree{\Macro{thepage}}{\DescRef{\LabelBase-experts.cmd.thepage}}% +\IndexCmd{thepage} is not used directly for the page number rather than the +\iffree{\Macro{pagemark}}{\DescRef{\LabelBase-experts.cmd.pagemark}}% +\IndexCmd{pagemark} which is provided for it.% +\EndIndexGroup +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{markboth}\Parameter{left mark}\Parameter{right mark} + \Macro{markright}\Parameter{right mark} +\end{Declaration} +The \DescRef{\LabelBase.pagestyle.myheadings}% +\important{\DescRef{\LabelBase.pagestyle.myheadings}}% +\IndexPagestyle{myheadings} page style does not set the running head. Instead, +you set it with the help of the \Macro{markboth} and \Macro{markright} +commands. This way the \PName{left mark} will normally be used in the header +of even pages and \PName{right mark} in the header of odd pages. With +one-sided printing, only the \PName{right mark} exists. With the +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} +package, the \DescRef{scrlayer-scrpage.cmd.markleft}% +\IndexCmd{markleft}\important{\DescRef{scrlayer-scrpage.cmd.markleft}} command +is also available. + +You can use these commands with other page styles too. However, when combined +with automatic running heads, for example with the +\DescRef{\LabelBase.pagestyle.headings}\IndexPagestyle{headings} page style, +the effect of the commands lasts only until the next time the respective marks +are set automatically.% +% +\EndIndexGroup + +\begin{Declaration} + \Macro{titlepagestyle} + \Macro{partpagestyle} + \Macro{chapterpagestyle} + \Macro{indexpagestyle} +\end{Declaration}% +\Index{title>page style}% +\Index{part>page style}% +\Index{chapter>page style}% +\Index{index>page style}% +On some pages, a different page style is chosen automatically with the help of +the \DescRef{\LabelBase.cmd.thispagestyle} command. Which page style this +actually is, is defined by these four macros, of which \Macro{partpagestyle} +and \Macro{chapterpagestyle}\OnlyAt{\Class{scrbook}\and\Class{scrreprt}} are +found only with classes \Class{scrbook} and \Class{scrreprt}, and not in +\Class{scrartcl}. The default value for all four cases is +\DescRef{\LabelBase.pagestyle.plain}\IndexPagestyle{plain}. You can find the +meaning of these macros in \autoref{tab:specialpagestyles}. +% +\begin{table} + \centering + \caption{Macros to set up the page style of special pages} + \label{tab:specialpagestyles} + \begin{desctabular} + \mentry{titlepagestyle}{Page style for a title page when using + \emph{in-page} titles.}% + \mentry{partpagestyle}{Page style for pages with + \DescRef{\LabelBase.cmd.part} titles.}% + \mentry{chapterpagestyle}{Page style for the first page of a chapter.}% + \mentry{indexpagestyle}{Page style for the first page of the index.}% + \end{desctabular} +\end{table} +% +You can redefine the page styles with the \Macro{renewcommand} macro. +\begin{Example} + Suppose you do not want the pages with a \DescRef{\LabelBase.cmd.part} + heading to be numbered. You can use the following command in the preamble of + your document: +\begin{lstcode} + \renewcommand*{\partpagestyle}{empty} +\end{lstcode} + As mentioned previously on \DescPageRef{\LabelBase.pagestyle.empty}, + the \PValue{empty} page style is exactly what is required in this + example. Of course, you can also use a user-defined page style. + + Suppose you have defined your own page style for initial chapter pages with + the \hyperref[cha:scrlayer]{\Package{scrlayer}} (see \autoref{cha:scrlayer}) + or the \hyperref[cha:scrlayer-scrpage-experts]{\Package{scrlayer-scrpage}} + package (see \autoref{cha:scrlayer-scrpage-experts}). You have given this + page style the fitting name of \PValue{chapter}. To actually use this style, + you must redefine \Macro{chapterpagestyle} in this way: +\begin{lstcode} + \renewcommand*{\chapterpagestyle}{chapter} +\end{lstcode} + + Suppose you do not want the table of contents\Index{table of contents}% + \textnote{table of contents} of a book to have page numbers. Everything + after the table of contents, however, should use the \PValue{headings} + page style, including the \PValue{plain} page style for the first + page of every chapter. You can use the following: +\begin{lstcode} + \clearpage + \pagestyle{empty} + \renewcommand*{\chapterpagestyle}{empty} + \tableofcontents + \clearpage + \pagestyle{headings} + \renewcommand*{\chapterpagestyle}{plain} +\end{lstcode} + You can also keep the redefinition local by using a group. This method has + the advantage that you do not need to make any assumptions about the what + the previous page style was in order to restore it after your local change: +\begin{lstcode} + \clearpage + \begingroup + \pagestyle{empty} + \renewcommand*{\chapterpagestyle}{empty} + \tableofcontents + \clearpage + \endgroup +\end{lstcode} + Note,\important{Attention!} however, that you never should put a numbered + sectioning command into a group. Otherwise you may get unpredictable results + with commands like \Macro{label}. + + On \DescPageRef{tocbasic.cmd.AfterTOCHead} in \autoref{sec:tocbasic.toc}, + you will discover the \DescRef{tocbasic.cmd.AfterTOCHead} command, which + makes a solution even easier: +\begin{lstcode} + \AfterTOCHead[toc]{% + \thispagestyle{empty}% + \pagestyle{empty}% + } +\end{lstcode}% + This takes advantage of the fact that if there are several + \DescRef{\LabelBase.cmd.thispagestyle} commands on the same page, the last + one always wins. +\end{Example} + +\begin{Explain} + You might think that you can put running heads on the first page of a + chapter simply by using the +\begin{lstcode} + \renewcommand*{\chapterpagestyle}{headings} +\end{lstcode} + command. Before you try this, you should read \iffree{}{more about the + background to \DescRef{maincls-experts.cmd.rightmark} in + \autoref{sec:maincls-experts.addInfos} on + \DescPageRef{maincls-experts.cmd.rightmark}. Also, }the remarks on + \DescRef{scrlayer-scrpage-experts.cmd.rightfirstmark} starting on page + \DescPageRef{scrlayer-scrpage-experts.cmd.rightfirstmark} in + \autoref{cha:scrlayer-scrpage-experts}, \autoref{part:forExperts} + \iffree{}{provide important information}.% +\end{Explain} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{pagenumbering}\Parameter{numbering style} +\end{Declaration} +This command works the same way in {\KOMAScript} as in the standard classes. +Strictly speaking, it is a feature of neither the standard classes nor the +\KOMAScript{} classes but of the {\LaTeX} kernel. This command is used to +change the \PName{numbering style} of page numbers. + +The changes take effect immediately, i.\,e., starting from the page that +contains the command. If necessary, you should first close the current page +with \DescRef{\LabelBase.cmd.clearpage} or better +\DescRef{\LabelBase.cmd.cleardoubleoddpage}% +\important{\DescRef{\LabelBase.cmd.cleardoubleoddpage}}% +\IndexCmd{cleardoubleoddpage}. You can find the available settings for +\PName{numbering style} in \autoref{tab:numberKind}. +% +\begin{table} + % \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + % \caption + \begin{captionbeside} + {\label{tab:numberKind}% + Available numbering styles of page numbers} + \begin{tabular}[t]{lll} + \toprule + numbering style & example & description \\ + \midrule + \PValue{arabic} & 8 & Arabic numbers \\ + \PValue{roman} & viii & lower-case Roman numbers \\ + \PValue{Roman} & VIII & upper-case Roman numbers \\ + \PValue{alph} & h & letters \\ + \PValue{Alph} & H & capital letters \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} + +Calling\textnote{Attention!} \Macro{pagenumbering} always resets the page +number\Index{page>number}. The current page becomes number 1 in the selected +\PName{numbering style}. In order that two-sided documents produce the correct +results on an even page, so that the left-hand page is not missing, you should +always add \DescRef{\LabelBase.cmd.cleardoubleoddpage}% +\important{\DescRef{\LabelBase.cmd.cleardoubleoddpage}}% +\IndexCmd{cleardoubleoddpage} before \Macro{pagenumbering}. The next section +provides more information about potentially inserted blank pages. + +\begin{Explain} + Let me say a word about a common mistake found in various templates + circulating on the Internet. If you encounter lines like the + following\,---\,without the initial comment naturally\,---\,this is an + unmistakable sign that the creator did not read or understand the + remark above: +\begin{lstcode} + % Attention! This example contains errors! + % Please note the explanation in the text! + \tableofcontents + \pagenumbering{arabic} + \setcounter{page}{1} +\end{lstcode} + Since \DescRef{\LabelBase.cmd.tableofcontents} outputs the table of contents + but does not automatically issue a page break at the end, the page numbering + is already changed on the last page of the table of contents. Because it + lacks a \DescRef{\LabelBase.cmd.cleardoubleoddpage} command before + \Macro{pagenumbering}, it receives a pagination of the Arabic number 1. + Additionally, the final line which sets the page numbering to 1 is + superfluous, since this is already done by \Macro{pagenumbering}. + + Sometimes\,---\,without the initial comment, naturally\,---\, you find: +\begin{lstcode} + % Attention! This example contains errors! + % Please note the explanation in the text! + \tableofcontents + \pagebreak + \pagenumbering{arabic} + \setcounter{page}{1} +\end{lstcode} + Here the creator tried to solve the problem with the final page of the table + of contents with the help of \Macro{pagebreak}\IndexCmd{pagebreak}. + + Unfortunately, this solution is not much better. Here there is a page break + after the last page of the table of contents. This may cause entries on the + last page of a two-sided document to have excess vertical spacing (see + \DescRef{\LabelBase.cmd.flushbottom}, + \DescPageRef{\LabelBase.cmd.flushbottom}). \Macro{pagebreak} is clearly + the wrong command here. + + Furthermore, \Macro{newpage}\IndexCmd{newpage} or + \DescRef{\LabelBase.cmd.clearpage} would not be sufficient for a two-sided + document. For example, if the last page of the table of contents had the + Roman numeral vii, the Arabic numbered right-side page 1 would immediately + follow the Roman numeral right-side page. A left-side page between the two + would be missing, which could cause serious problems with later printing. + + My advice: Avoid using templates that contain errors with respect to such + simple things. Incidentally, the correct way would be: +\begin{lstcode} + \tableofcontents + \cleardoubleoddpage + \pagenumbering{arabic} +\end{lstcode} + This also applies if \Class{scrartcl}\OnlyAt{\Class{scrartcl}} uses a class + that usually does not start a new page after the table of contents. If you + switch the page numbering, a new right-hand page must be started. If you do + not want such a change, you should keep the numbering style of pages + consistent throughout the document without changing it in between. +\iffalse% Umbruchkorrekturtext + For articles or other short documents, this is generally recommended. +\fi + + It is easier to change the numbering style when using + \Class{scrbook}\OnlyAt{\Class{scrbook}}. There you have the support of two + commands, \DescRef{\LabelBase.cmd.frontmatter}% + \important{\DescRef{\LabelBase.cmd.frontmatter}\\ + \DescRef{\LabelBase.cmd.mainmatter}}% + \IndexCmd{fontmatter} and \DescRef{\LabelBase.cmd.mainmatter}% + \IndexCmd{mainmatter}, for the most commonly used switching. For more + information, please see + \autoref{sec:maincls.separation}, + \DescPageRef{\LabelBase.cmd.mainmatter}.% +\end{Explain}% +\EndIndexGroup +\EndIndexGroup + + +\LoadCommonFile{interleafpage}% \section{Interleaf Pages} + +\LoadCommonFile{footnotes}% \section{Footnotes} + +\section[Book Structure]{Book Structure\protect\OnlyAt{\Class{scrbook}}} +\seclabel{separation} + +Sometimes books are loosely divided into \emph{front matter}% +\Index{front matter}, \emph{main matter}\Index{main matter}, and +\emph{back matter}\Index{back matter}. \KOMAScript{} also provides this +capability for \Class{scrbook}. + + +\begin{Declaration} + \Macro{frontmatter} + \Macro{mainmatter} + \Macro{backmatter} +\end{Declaration}% +The front matter includes all the material which appears before the main +text begins, including title pages, preface, and table of contents. It is +initiated with +\Macro{frontmatter}\important{\Macro{frontmatter}}. In the front matter, +Roman numerals are used for the page numbers, and chapter headings in +the header are not numbered. However, section headings are numbered +consecutively, starting from chapter 0. This typically does not matter, as the +front matter is used only for the title pages, table of contents% +\Index{table of contents}, lists of figures\Index{list of>figures}% +\Index{figures>list of} and tables\Index{tables>list of}, and a +preface\Index{preface} or foreword\Index{foreword}. The preface can thus be +created as a normal chapter. A preface should be as short as possible and +never divided into sections. The preface thus does not require a deeper level +of structure than the chapter. + +If you see things differently and want to use numbered +sections\Index{section>number} in the chapters of the front matter, as of +version~2.97e,\ChangedAt{v2.97e}{\Class{scrbook}}% +\important{\OptionValueRef{\LabelBase}{version}{2.97e}} the section numbering +no longer contains the chapter number. This change only takes effect when the +compatibility option is set to at least version~2.97e (see option +\DescRef{\LabelBase.option.version}, +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}). It is explicitly noted that this +creates confusion with chapter numbers! The use of +\DescRef{\LabelBase.cmd.addsec} and \DescRef{\LabelBase.cmd.section*} (see +\autoref{sec:\LabelBase.structure}, \DescPageRef{\LabelBase.cmd.section*} and +\DescPageRef{\LabelBase.cmd.addsec}) are thus, in the author's opinion, +greatly preferable. + +As of version~2.97e\ChangedAt{v2.97e}{\Class{scrbook}} the numbering of +floating environments, such as tables\Index{table>number} and +figures\Index{figure>number}, and equation numbers\Index{equation>number} in +the front matter also contains no chapter-number part. To take effect, this +too requires the corresponding compatibility setting (see the +\DescRef{\LabelBase.option.version} option, +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}). + +The part of the book with the main text is introduced +with \Macro{mainmatter}\important{\Macro{mainmatter}}. If there is no front +matter, you can omit this command. The default page numbering in the main +matter uses Arabic numerals and (re)starts the page count at 1 at the start of +the main matter. + +The back matter is introduced with +\Macro{backmatter}\important{\Macro{backmatter}}. Opinions differ as to what +belongs in the back matter. So in some cases you will find only the +bibliography\Index{bibliography}, in some cases only the index\Index{index}, +and in other cases both of these as well as the appendices. The chapters in +the back matter are similar to the chapters in the front matter, but page +numbering is not reset. If you do require separate page numbering, you can use +the \DescRef{\LabelBase.cmd.pagenumbering}% +\important{\DescRef{\LabelBase.cmd.pagenumbering}} command in +\autoref{sec:\LabelBase.pagestyle}, +\DescPageRef{\LabelBase.cmd.pagenumbering}.% +% +\EndIndexGroup + + +\section{Document Structure} +\seclabel{structure}% +\BeginIndexGroup +\BeginIndex{}{document structure} + +The structure refers to dividing a document into parts, chapters, sections, +and additional levels of structure. + + +\begin{Declaration} + \OptionVName{open}{method} +\end{Declaration}% +The\OnlyAt{\Class{scrbook}\and\Class{scrreprt}} \KOMAScript{} classes +\Class{scrbook} and \Class{scrreprt} give you the choice of where to start a +new chapter with two-sided printing. By default \Class{scrreprt} starts a new +chapter\Index{chapter>start} on the next page. This is equivalent to +\PName{method} \PValue{any}. However, \Class{scrbook} starts new chapters at +the next right-hand page. This is equivalent to \PName{method} \PValue{right} +and is usually used in books. But sometimes chapters should start on the +left-hand page of a two-page spread. You can accomplish this with the +\PName{method} \PValue{left}\ChangedAt{v3.00}{\Class{scrbook}\and + \Class{scrreprt}}. You can find a summary of the available values in +\autoref{tab:\LabelBase.open}. The table also describes the effects of +\DescRef{\LabelBase.cmd.cleardoublepage}, +\DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, +\DescRef{\LabelBase.cmd.cleardoublestandardpage}, +\DescRef{\LabelBase.cmd.cleardoubleplainpage}, and +\DescRef{\LabelBase.cmd.cleardoubleemptypage} (see +\autoref{sec:\LabelBase.emptypage}, +\DescPageRef{\LabelBase.cmd.cleardoublepage}). + +\begin{table} + \caption[{Available values for the \Option{open} option}]{Available values + for the \Option{open} option to select page breaks with interleaf pages + using \Class{scrbook} or \Class{scrreprt}} + \begin{desctabular} + \pventry{any}{% + Parts, chapter, index, and back matter use + \DescRef{\LabelBase.cmd.clearpage}, not + \DescRef{\LabelBase.cmd.cleardoublepage}; + \DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, + \DescRef{\LabelBase.cmd.cleardoublestandardpage}, + \DescRef{\LabelBase.cmd.cleardoubleplainpage}, + \DescRef{\LabelBase.cmd.cleardoubleemptypage}, and + \DescRef{\LabelBase.cmd.cleardoublepage} behave the same as using + \OptionValue{open}{right}.% + \IndexOption{open~=\textKValue{any}}}% + \pventry{left}{% + Part, chapter, index, and back matter use + \DescRef{\LabelBase.cmd.cleardoublepage}; the commands + \DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, + \DescRef{\LabelBase.cmd.cleardoublestandardpage}, + \DescRef{\LabelBase.cmd.cleardoubleplainpage}, + \DescRef{\LabelBase.cmd.cleardoubleemptypage}, and + \DescRef{\LabelBase.cmd.cleardoublepage} result in a page break and add + an interleaf page\Index{page>interleaf} if needed to reach the next + left-hand page.% + \IndexOption{open~=\textKValue{left}}}% + \pventry{right}{% + Part, chapter, index, and back matter use + \DescRef{\LabelBase.cmd.cleardoublepage}; the commands + \DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, + \DescRef{\LabelBase.cmd.cleardoublestandardpage}, + \DescRef{\LabelBase.cmd.cleardoubleplainpage}, + \DescRef{\LabelBase.cmd.cleardoubleemptypage}, and + \DescRef{\LabelBase.cmd.cleardoublepage} result in a page break and add + an interleaf page\Index{page>interleaf} if needed to reach the next + right-hand page.% + \IndexOption{open~=\textKValue{right}}}% + \end{desctabular} + \label{tab:\LabelBase.open} +\end{table} + +Since \LaTeX{} does not differentiate between left-hand and right-hand pages +in one-sided printing, the option has no effect in that case. + +In the \Class{scrartcl} class, the section is the first structural element +below the part. For this reason, \Class{scrartcl} does not support this +option. +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{chapterprefix}{simple switch} + \OptionVName{appendixprefix}{simple switch} + \Macro{IfChapterUsesPrefixLine}\Parameter{then code}\Parameter{else code} +\end{Declaration}% +With\OnlyAt{\Class{scrbook}\and\Class{scrreprt}} the standard classes +\Class{book} and \Class{report}, a chapter +heading\Index[indexmain]{chapter>heading} consists of a line with the word +``Chapter''\footnote{When using another language the word ``Chapter'' is of +course translated to the appropriate language.} followed by the chapter +number. The heading itself is set left-justified on the following line. The +same effect is obtained in {\KOMAScript} with the \Option{chapterprefix} +option. You can use any value from \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} as the \PName{simple switch}. The default, +however, is \OptionValue{chapterprefix}{false}, the opposite +behaviour\textnote{\KOMAScript{} vs. standard classes} of that of the standard +classes, which corresponds to \OptionValue{chapterprefix}{true}. These options +also affect the automatic running heads in the headers (see +\autoref{sec:\LabelBase.pagestyle}, +\DescPageRef{\LabelBase.pagestyle.headings}). + +Sometimes you may want to use the simplified chapter headings produced by +\OptionValue{chapterprefix}{false} but at the same time to have the heading of +an appendix\Index{appendix} preceded by a line with ``Appendix'' followed by +the appendix letter. This is achieved by using the \Option{appendixprefix} +option (see \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}). +Since this results in an inconsistent document layout, I advise against using +this option. Ultimately, this option changes the \Option{chapterprefix} option +automatically at the beginning of the \DescRef{\LabelBase.cmd.appendix}. + +You\ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}} can execute code +depending on the current setting for the chapter preceding line using +\Macro{IfChapterUsesPrefixLine}. If \Option{chapterprefix} is currently +active, the \PName{then code} is executed; otherwise, the \PName{else code} is +executed. + +\BeginIndex{FontElement}{chapterprefix}% +You can change the font style of the chapter number line that uses +\OptionValue{chapterprefix}{true} or \OptionValue{appendixprefix}{true} +by using the +\FontElement{chapterprefix}\ChangedAt{v2.96a}{\Class{scrbook}\and + \Class{scrreprt}} element with the \DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}). The default is to use the +\DescRef{\LabelBase.fontelement.chapter}\IndexFontElement{chapter} element +(see \DescPageRef{\LabelBase.cmd.chapter}, as well as +\autoref{tab:\LabelBase.structureElementsFont}, +\autopageref{tab:\LabelBase.structureElementsFont}). + +You can find additional settings for chapter headings in the explanation for +\DescRef{maincls-experts.cmd.RedeclareSectionCommand} and the commands +\DescRef{maincls-experts.cmd.chapterlineswithprefixformat} and +\DescRef{maincls-experts.cmd.chapterlinesformat} in +\autoref{sec:maincls-experts.experts}, \autoref{part:forExperts}.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{headings}{setting} +\end{Declaration} +Headings\index{heading}\index{document structure} of sectioning levels +normally use a relatively large font size in both the standard classes and +{\KOMAScript}. This choice does not appeal to everyone and is especially +problematic for small paper sizes. Consequently, {\KOMAScript} provides, in +addition to the large headings defined by the +\OptionValue{headings}{big}\IndexOption{headings~=\textKValue{big}}% +\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}% +\important{\OptionValue{headings}{big}\\ + \OptionValue{headings}{normal}\\ + \OptionValue{headings}{small}} option, the options +\OptionValue{headings}{normal}\IndexOption{headings~=\textKValue{normal}} and +\OptionValue{headings}{small}\IndexOption{headings~=\textKValue{small}}, which +allow for smaller headings. The font sizes resulting from these options for +\Class{scrbook} and \Class{scrreprt} are shown in +\autoref{tab:\LabelBase.structureElementsFont}, +\autopageref{tab:\LabelBase.structureElementsFont}. Specifically, all three +settings reset the elements \DescRef{\LabelBase.fontelement.chapter}% +\IndexFontElement{chapter}, +\DescRef{\LabelBase.fontelement.section}\IndexFontElement{section}, +\DescRef{\LabelBase.fontelement.subsection}\IndexFontElement{subsection}, +\DescRef{\LabelBase.fontelement.subsubsection}% +\IndexFontElement{subsubsection}, +\DescRef{\LabelBase.fontelement.paragraph}\IndexFontElement{paragraph}, and +\DescRef{\LabelBase.fontelement.subparagraph}\IndexFontElement{subparagraph} +to the corresponding defaults. \Class{scrartcl}\OnlyAt{\Class{scrbook}\and + \Class{scrreprt}} generally uses slightly smaller headings. The spacing +before and after chapter headings is also reset by these options. + +\iffalse% + Chapter headings also have the \Option{headings} option with the + \PValue{twolinechapter} or \PValue{onelinechapter} settings, which are + equivalent to the + \OptionValueRef{\LabelBase}{chapterprefix}{true} and + \OptionValueRef{\LabelBase}{chapterprefix}{false} options. In the appendix + there are additional effects of the \PValue{onelineappendix} and + \PValue{twolineappendix} options upon the \Option{headings} option, which + corresponds to + \OptionValueRef{\LabelBase}{appendixprefix}{false} and + \OptionValueRef{\LabelBase}{appendixprefix}{true} (see also + above). % +\else% + Chapter headings\OnlyAt{\Class{scrbook}\and\Class{scrreprt}} also + have\important{% + \OptionValue{headings}{twolinechapter}\\ + \OptionValue{headings}{onelinechapter}\\ + \OptionValue{headings}{twolineappendix}\\ + \OptionValue{headings}{onelineappendix}% + } the two options \OptionValue{headings}{twolinechapter} and + \OptionValue{headings}{onelinechapter}, which correspond to + \OptionValueRef{\LabelBase}{chapterprefix}{true} and + \OptionValueRef{\LabelBase}{chapterprefix}{false} explained above. For the + appendix, + \OptionValueRef{\LabelBase}{appendixprefix}{true} and + \OptionValueRef{\LabelBase}{appendixprefix}{false} serve as alternatives for + the \OptionValue{headings}{twolineappendix} and + \OptionValue{headings}{onelineappendix} options. % + \iffalse% + For the appendix, \OptionValue{headings}{twolineappendix} and + \OptionValue{headings}{onelineappendix} are available, which correspond to + the \OptionValueRef{\LabelBase}{appendixprefix}{true} and + \OptionValueRef{\LabelBase}{appendixprefix}{false} options (also see above). + \fi% + Of course, these options do not exist with \Class{scrartcl}% + \iffree{}{% Umbruchkorrekturtext + , since this class does not have chapters}% + .% +\fi + +The\ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} \OptionValue{headings}{standardclasses}% +\important{\OptionValue{headings}{standardclasses}} option adjusts the font +sizes of the headings to those of the standard classes. In addition, the font +for the \DescRef{\LabelBase.fontelement.disposition}% +\IndexFontElement{disposition} element is set to \Macro{bfseries}. It +therefore no longer uses a sans-serif font for the headings. If you use +\Class{scrbook}\OnlyAt{\Class{scrbook}\and\Class{scrreprt}} or +\Class{scrreprt}, \OptionValue{headings}{twolinechapter} is also set and the +spacing between the chapter headings is adjusted to that of the standard +classes. + +You\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} can set the method to specify +the page on which new chapters begin with +\OptionValue{headings}{openany}\important{% + \OptionValue{headings}{openany}\\ + \OptionValue{headings}{openright}\\ + \OptionValue{headings}{openleft}}, \OptionValue{headings}{openright}, and +\OptionValue{headings}{openleft}, or alternatively with the +\DescRef{\LabelBase.option.open} option, which takes the values \PValue{any}, +\PValue{right}, and \PValue{left} (see above). + +Another\ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} special feature of \KOMAScript{} is the handling of the +optional argument of the sectioning commands \DescRef{\LabelBase.cmd.part}, +\DescRef{\LabelBase.cmd.chapter}, etc. down to +\DescRef{\LabelBase.cmd.subparagraph}. You can change its function and +meaning\important{\OptionValue{headings}{optiontohead}\\ + \OptionValue{headings}{optiontotoc}\\ + \OptionValue{headings}{optiontoheadandtoc}} with the options +\OptionValue{headings}{optiontohead}% +\IndexOption{headings~=\textKValue{optiontohead}}, +\OptionValue{headings}{optiontotoc}% +\IndexOption{headings~=\textKValue{optiontotoc}} and +\OptionValue{headings}{optiontoheadandtoc}% +\IndexOption{headings~=\textKValue{optiontoheadandtoc}}. + +See \autoref{tab:\LabelBase.headings} for a summary of all available settings +for the \Option{headings} option. The explanations of the sectioning commands +below contain examples using some of these settings. +\begin{desclist} + \desccaption[{Available values for the \Option{headings} option}]{% + Available values for the \Option{headings} option to format + section headings% + \label{tab:\LabelBase.headings}% + }{% + Available values for the \Option{headings} option (\emph{continued})% + }% + \pventry{big}{% + Use large fonts in the headings for each of the default sectioning levels + with wide spacing above and below the titles. + \IndexOption{headings~=\textKValue{big}}}% + \pventry{normal}{% + Use medium-sized fonts in the headings with medium spacing above and below + the titles. \IndexOption{headings~=\textKValue{normal}}}% + \entry{\PValue{onelineappendix}, \PValue{noappendixprefix}, + \PValue{appendixwithoutprefix}, \PValue{appendixwithoutprefixline}% + \IndexOption{headings~=\textKValue{onelineappendix}}}{% + Chapter headings in the appendix are set like other headings.% + }% + \entry{\PValue{onelinechapter}, \PValue{nochapterprefix}, + \PValue{chapterwithoutprefix}, \PValue{chapterwithoutprefixline}% + \IndexOption{headings~=\textKValue{onelinechapter}}}{% + Chapter titles are set like other headings.% + }% + \pventry{openany}{% + The commands \DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, + \DescRef{\LabelBase.cmd.cleardoublestandardpage}, + \DescRef{\LabelBase.cmd.cleardoubleplainpage}, + \DescRef{\LabelBase.cmd.cleardoubleemptypage}, and + \DescRef{\LabelBase.cmd.cleardoublepage} generate a page break and insert + an interleaf page\Index{interleaf page} if needed to reach the next + right-hand page in two-sided printing, the same as in + \OptionValue{headings}{openright}. Parts, chapter, the index, and back + matter use \DescRef{\LabelBase.cmd.clearpage} instead of + \DescRef{\LabelBase.cmd.cleardoublepage}.% + \IndexOption{headings~=\textKValue{openany}}}% + \pventry{openleft}{% + The commands \DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, + \DescRef{\LabelBase.cmd.cleardoublestandardpage}, + \DescRef{\LabelBase.cmd.cleardoubleplainpage}, + \DescRef{\LabelBase.cmd.cleardoubleemptypage}, and + \DescRef{\LabelBase.cmd.cleardoublepage} generate a page break and insert + an interleaf page if needed to reach the next left-hand page in two-sided + printing. Part, chapter, index and back matter use + \DescRef{\LabelBase.cmd.cleardoublepage}.% + \IndexOption{headings~=\textKValue{openleft}}}% + \pventry{openright}{% + The commands \DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, + \DescRef{\LabelBase.cmd.cleardoublestandardpage}, + \DescRef{\LabelBase.cmd.cleardoubleplainpage}, + \DescRef{\LabelBase.cmd.cleardoubleemptypage}, and + \DescRef{\LabelBase.cmd.cleardoublepage} generate a page break and insert + an interleaf page if needed to reach the next right-hand page in two-sided + printing. Part, chapter, index and back matter use + \DescRef{\LabelBase.cmd.cleardoublepage}.% + \IndexOption{headings~=\textKValue{openright}}}% + \pventry{optiontohead}{% + The\ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} advanced functionality of the optional argument of the + sectioning commands \DescRef{\LabelBase.cmd.part} down to + \DescRef{\LabelBase.cmd.subparagraph} is activated. By default, the + optional argument is used only for the running head.% + \IndexOption{headings~=\textKValue{optiontohead}}% + }% + \entry{\PValue{optiontoheadandtoc}, \PValue{optiontotocandhead}% + \IndexOption{headings~=\textKValue{optiontoheadandtoc}}}{% + The\ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} advanced functionality of the optional argument of the + sectioning commands \DescRef{\LabelBase.cmd.part} down to + \DescRef{\LabelBase.cmd.subparagraph} is activated. By default, the + optional argument is used for the running head and the table of contents.% + }% + \pventry{optiontotoc}{% + The\ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} advanced functionality of the optional argument of the + sectioning commands \DescRef{\LabelBase.cmd.part} down to + \DescRef{\LabelBase.cmd.subparagraph} is activated. By default, the + optional argument is used only for the table of contents.% + \IndexOption{headings~=\textKValue{optiontohead}}% + }% + \pventry{small}{% + Use small fonts in the headings with small spacing above and below the + titles.% + \IndexOption{headings~=\textKValue{small}}}% + \pventry{standardclasses}{% + \ChangedAt{v3.12}{\Class{scrbook}\and\Class{scrreprt}\and\Class{scrartcl}}% + Reset the font settings for each of the standard sectioning levels and use + headings with the sizes of the standard classes. For chapter headings, + \Class{scrbook} und \Class{scrreprt} set + \OptionValue{headings}{twolinechapter}.% + }% + \entry{\PValue{twolineappendix}, \PValue{appendixprefix}, + \PValue{appendixwithprefix}, \PValue{appendixwithprefixline}% + \IndexOption{headings~=\textKValue{twolineappendix}}}{% + Chapter titles in the appendix are set with a number line whose format is + determined by + \DescRef{\LabelBase.cmd.chapterformat}\IndexCmd{chapterformat}.% + }% + \entry{\PValue{twolinechapter}, \PValue{chapterprefix}, + \PValue{chapterwithprefix}, \PValue{chapterwithprefixline}% + \IndexOption{headings~=\textKValue{twolinechapter}}}{% + Chapter titles are set with a number line whose format is determined by + \DescRef{\LabelBase.cmd.chapterformat}\IndexCmd{chapterformat}.% + }% +\end{desclist} +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{numbers}{setting} +\end{Declaration}% +According to {\small DUDEN}, if only Arabic numerals are used to number +section headings\Index{headings}, the German practice is to have no point at +the end (see \cite[R\,3]{DUDEN}). On the other hand, if Roman numerals or +letters appear in the numbering, then a point should appear at the end of the +numbering (see \cite[R\,4]{DUDEN}). {\KOMAScript} has a mechanism that tries +to automate this somewhat complex rule. The result is that normally after +the sectioning commands \DescRef{\LabelBase.cmd.part} and +\DescRef{\LabelBase.cmd.appendix} the numbering switches to using a final +point. This information is saved in the \File{aux} file and takes effect on +the next {\LaTeX} run. + +Sometimes the mechanism for placing or omitting the final point may fail. +Sometimes other languages have different rules. Therefore you can force the +use of the final point with the option +\OptionValue{numbers}{endperiod}\IndexOption{numbers~=\textKValue{endperiod}}% +\important{\OptionValue{numbers}{endperiod}\\ +\OptionValue{numbers}{noendperiod}} or to prohibit it with +\OptionValue{numbers}{noendperiod}. + +Note\textnote{Attention!} that this mechanism only takes effect on the +next {\LaTeX} run. Therefore, before you try to use these options to force +the correct numbering format, you should always perform another \LaTeX{} run +without modifying the document. + +You can find a summary of the available values for the \PName{setting} of +\PName{numbers} in \autoref{tab:\LabelBase.numbers}. Unlike most other +settings, this option can only be set in the document preamble, i.\,e. before +\Macro{begin}\PParameter{document}. + +\begin{table} + \caption[{Available values for the \Option{numbers} option}]{Available values + of the \Option{numbers} option to configure the final points of the + numbers for section headings} + \label{tab:\LabelBase.numbers} + \begin{desctabular} + \entry{\PValue{autoendperiod}, \PValue{autoenddot}, \PValue{auto}}{% + \KOMAScript{} decides whether to set the point at the end of sectioning + command numbers. If there are only Arabic numerals, the point will + be omitted. If a letter or Roman numeral is found, the + point is set. However, references to these numbers are set without + a final point.% + \IndexOption{numbers~=\textKValue{autoendperiod}}}% + \entry{\PValue{endperiod}, \PValue{withendperiod}, \PValue{periodatend}, + \PValue{enddot}, \PValue{withenddot}, \PValue{dotatend}}{% + All numbers of sectioning commands and their subordinate numbers are set + with a final point. Only references will be set without the final + point.% + \IndexOption{numbers~=\textKValue{endperiod}}}% + \entry{\PValue{noendperiod}, \PValue{noperiodatend}, + \PValue{noenddot}, \PValue{nodotatend}}{% + All numbers of sectioning commands are set without a final point.% + \IndexOption{numbers~=\textKValue{noendperiod}}}% + \end{desctabular} +\end{table} +% +\EndIndexGroup + + +\begin{Declaration} + \Option{chapteratlists}% + \OptionVName{chapteratlists}{value} +\end{Declaration}% +As mentioned in \autoref{sec:\LabelBase.floats}, +\DescPageRef{\LabelBase.option.listof}\OnlyAt{\Class{scrbook}\and + \Class{scrreprt}}, every chapter that is created with +\DescRef{\LabelBase.cmd.chapter} normally inserts a vertical space in the +lists of floating environments (e.\,g., tables and figures). +Since version~2.96a,\important{\OptionValueRef{\LabelBase}{version}{2.96a}}% +\ChangedAt{v2.96a}{\Class{scrbook}\and \Class{scrreprt}} this also applies to +the \DescRef{\LabelBase.cmd.addchap} command unless you choose a compatibility +setting for an earlier version (see the \DescRef{\LabelBase.option.version} +option in \autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}). + +In addition, you can use the \Option{chapteratlists} option to change the +vertical spacing by specifying the desired distance as the \PName{value}. +The default with \OptionValueRef{\LabelBase}{listof}{chaptergapsmall}% +\IndexOption{listof~=\textKValue{chaptergapsmall}} % +is 10\Unit{pt} (see the\DescRef{\LabelBase.option.version} option in +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}). + +If you use \OptionValue{chapteratlists}{entry}% +\IndexOption{chapteratlists~=\textKValue{entry}}% +\important{\OptionValue{chapteratlists}{entry}} or \Option{chapteratlists} +without specifying a value, instead of a vertical space, the chapter entry +itself will be entered into the lists. Note that such an entry occurs even if +the chapter does not contain a floating environment. A method where only +chapters with floating environments are displayed in the respective list can +be found in the German-language \KOMAScript{} forum at +\cite{https://komascript.de/comment/5070}. + +Please\textnote{Attention!} note that changes to this option only takes +effect after two additional {\LaTeX} runs.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{part}\OParameter{short version}\Parameter{heading}% + \Macro{chapter}\OParameter{short version}\Parameter{heading}% + \Macro{section}\OParameter{short version}\Parameter{heading}% + \Macro{subsection}\OParameter{short version}\Parameter{heading}% + \Macro{subsubsection}\OParameter{short version}\Parameter{heading}% + \Macro{paragraph}\OParameter{short version}\Parameter{heading}% + \Macro{subparagraph}\OParameter{short version}\Parameter{heading} +\end{Declaration}% +\Index[indexmain]{part}% +\Index[indexmain]{chapter}% +\Index[indexmain]{section}% +The standard sectioning commands in {\KOMAScript} work the same way as those +in the standard classes. Thus, you can specify an alternative text for the +table of contents and running heads as an optional argument to the sectioning +commands. + +However, with\ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}\textnote{\KOMAScript{} vs. standard classes} the +\important{\DescRef{\LabelBase.option.headings}} +\OptionValueRef{\LabelBase}{headings}{optiontohead}% +\IndexOption[indexmain]{headings~=\textKValue{optiontohead}} option, +\KOMAScript{} only uses the optional argument \PName{short version} in the +running head, not the table of contents. Of course, this text will only appear +if you use a page style\Index{page>style} that puts the corresponding +sectioning level in the running head. See \autoref{sec:\LabelBase.pagestyle} +and \autoref{cha:scrlayer-scrpage}. With the +\OptionValueRef{\LabelBase}{headings}{optiontotoc}% +\IndexOption[indexmain]{headings~=\textKValue{optiontotoc}} option, +\KOMAScript{} uses the optional argument \PName{short version} exclusively for +the table of contents and not the running head. However, the entry will be +shown only if the \DescRef{\LabelBase.counter.tocdepth} counter is great +enough (see \autoref{sec:\LabelBase.toc}, +\DescPageRef{\LabelBase.counter.tocdepth}). With the +\OptionValueRef{\LabelBase}{headings}{optiontoheadandtoc}% +\IndexOption[indexmain]{headings~=\textKValue{optiontoheadandtoc}} option, +\KOMAScript{} uses the optional argument \PName{short version} in both the +table of contents and the running head. These three options all activate the +extended interpretation of the optional argument \PName{short version}, which +is not active by default. + +The \ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} extended interpretation of the optional argument +checks to see if there is an equals sign in \PName{short version}. If so, +the optional argument will be interpreted as an \PName{option list}. +Three options\,---\,\OptionVName{head}{running head}\important{\Option{head}\\ + \Option{tocentry}\\ + \Option{reference}}, \OptionVName{tocentry}{table of contents entry}, and +\OptionVName{reference}{reference title}% +\ChangedAt{v3.22}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}% +\,---\,are supported with this format. To use commas or equals signs +within the values of those options, you must enclose them in braces. + +Please\textnote{Attention!} note that this mechanism only works as long as +\KOMAScript{} controls the sectioning commands. If you use package that +redefines the \KOMAScript{}'s or the internal \LaTeX{} kernel's sectioning +commands, \KOMAScript{} can no longer provide this extended mechanism. This +also applies to a \KOMAScript{} that is always active: sectioning commands +with no heading text\textnote{empty headings} do not create entries in the +table of contents. If you really want an entry with empty heading text, you +can use an invisible entry like \lstinline|\mbox{}|. + +\begin{Example} + Suppose you have a document with very long chapter headings. These headings + should appear in the table of contents, but you want to limit the running + head to short, single-line headings. You can do this with the optional + argument of \Macro{chapter}. +\begin{lstcode} + \chapter[short version of chapter heading] + {The Sectioning Command for Chapters + Supports not only the Heading Text + Itself but also a Short Version Whose + Use can be Controlled} +\end{lstcode} + + A little later you realize that the line breaks for this long heading are + very inappropriate. You therefore want to choose the breaks + yourself. Nevertheless, you still want automatic line breaking in the table + of contents. With +\begin{lstcode} + \chapter[head={short version of chapter heading}, + tocentry={The Sectioning + Command for Chapters Supports not + only the Heading Text Itself but + also a Short Version Whose Use + can be Controlled}] + {The Sectioning\\ + Command for Chapters\\ + Supports not only\\ + the Heading Text Itself\\ + but also\\ + a Short Version Whose\\ + Use can be Controlled} +\end{lstcode} + you create separate entries for the table of contents, running head, and + chapter heading itself. The arguments of the options \Option{head} and + \Option{tocentry} have been enclosed in braces so their contents + can be arbitrary. + + The need for braces in the example above is best illustrated by another + example. Suppose you chose the + \OptionValueRef{\LabelBase}{headings}{optiontotoc} option and set the title + this way: +\begin{lstcode} + \section[head=\emph{value}] + {Option head=\emph{value}} +\end{lstcode} + This results in the entry ``Option head=\emph{value}'' in the table of + contents but ``\emph{value}'' in the running head. But surely you wanted the + entry ``head=\emph{value}'' in the table of contents and the complete + heading text in the running head. You can do this using braces: +\begin{lstcode} + \section[head{=}\emph{value}] + {Option head=\emph{value}} +\end{lstcode} + + A similar case concerns the comma. Using the same + \DescRef{\LabelBase.option.headings} option as before +\begin{lstcode} + \section[head=0, 1, 2, 3, \dots] + {Natural Numbers Including the Zero} +\end{lstcode} + results in an error because the comma is interpreted as the + separator between the individual options of the option list % + ``\lstinline|0, 1, 2, 3, \dots|''. But writing +\begin{lstcode} + \section[head={0, 1, 2, 3, \dots}] + {Natural Numbers Including the Zero} +\end{lstcode} + makes ``\lstinline|0, 1, 2, 3, \dots|'' the argument of + the \Option{head} option. +\end{Example} + +Like\ChangedAt{v3.22}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} setting the title of a running head with the \Option{head} +option, or setting the title of a table-of-contents entry with the +\Option{tocentry} option, you can set the title of a reference with the +\Package{nameref}\IndexPackage{nameref}\important{\Package{nameref}\\ + \Package{titleref}\\ + \Package{zref-titleref}} or +\Package{titleref}\IndexPackage{titleref} packages, or with the +\Package{titleref}\IndexPackage{zref-titleref} module of the +\Package{zref}\IndexPackage{zref} package, using the \Option{reference}% +\important{\Option{reference}} option. Note that the support for the +\Package{titleref} package is rather rudimentary, since that package's +performance is poor compared to the other two, and it is not fully compatible +with \Package{hyperref}\IndexPackage{hyperref}\important{\Package{hyperref}}. + +The part-level title\important{\Macro{part}} (\Macro{part}) differs from other +sectioning levels by being numbered independently. This means that the chapter +level (in \Class{scrbook} or \Class{scrreprt}), or the section level (in +\Class{scrartcl}) is numbered consecutively over all parts. Furthermore, for +the \Class{scrbook}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} and +\Class{scrreprt} classes, the title of the part level together with the +corresponding preamble (see \DescRef{\LabelBase.cmd.setpartpreamble}, +\DescPageRef{\LabelBase.cmd.setpartpreamble}) is set on a separate page. + +The \Macro{chapter}\important{\Macro{chapter}}\OnlyAt{\Class{scrbook}\and + \Class{scrreprt}} command only exists in the book and report classes, that +is, in \Class{book}, \Class{scrbook}, \Class{report} and \Class{scrreport}, +but not in the article classes \Class{article} and \Class{scrartcl}. +Furthermore, the \Macro{chapter}\textnote{\KOMAScript{} vs. standard classes} +command in {\KOMAScript} differs substantially from the version in the +standard classes. In the standard classes, the chapter number is used together +with the prefix ``Chapter'', or the corresponding word in the appropriate +language, on a separate line above the actual chapter title text. +\KOMAScript{} replaces this +overpowering\important{\DescRef{\LabelBase.option.chapterprefix}\\ + \DescRef{\LabelBase.option.appendixprefix}} style with a simple chapter +number before the chapter title, but you can restore the original behaviour +with the \DescRef{\LabelBase.option.chapterprefix} option (see +\DescPageRef{\LabelBase.option.chapterprefix}). + +Please\textnote{Attention!} note that \Macro{part} and \Macro{chapter} in the +\Class{scrbook} and \Class{scrreprt} +\OnlyAt{\Class{scrbook}\and\Class{scrreprt}} classes change the page style for +one page. The page style applied in {\KOMAScript} is defined in the macros +\DescRef{\LabelBase.cmd.partpagestyle} and +\DescRef{\LabelBase.cmd.chapterpagestyle} (see +\autoref{sec:\LabelBase.pagestyle}, +\DescPageRef{\LabelBase.cmd.titlepagestyle}). + +\BeginIndexGroup +\BeginIndex[indexother]{}{font}% +\BeginIndex[indexother]{}{font>style}% +\BeginIndex[indexother]{}{font>size}% +\BeginIndex{FontElement}{part}\LabelFontElement{part}% +\BeginIndex{FontElement}{partnumber}\LabelFontElement{partnumber}% +\BeginIndex{FontElement}{chapter}\LabelFontElement{chapter}% +\BeginIndex{FontElement}{chapterprefix}\LabelFontElement{chapterprefix}% +\BeginIndex{FontElement}{section}\LabelFontElement{section}% +\BeginIndex{FontElement}{subsection}\LabelFontElement{subsection}% +\BeginIndex{FontElement}{subsubsection}\LabelFontElement{subsubsection}% +\BeginIndex{FontElement}{paragraph}\LabelFontElement{paragraph}% +\BeginIndex{FontElement}{subparagraph}\LabelFontElement{subparagraph}% +\BeginIndex{FontElement}{disposition}\LabelFontElement{disposition}% +You\ChangedAt{v2.8p}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} can change the font style for all headings with the +\DescRef{\LabelBase.cmd.setkomafont}\IndexCmd{setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont}\IndexCmd{addtokomafont} commands (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}). In doing so, the element +\FontElement{disposition}\important{\FontElement{disposition}} is applied +first, followed by the specific element\important{% + \FontElement{part}\\ + \FontElement{chapter}\\ + \FontElement{section}\\ + \FontElement{subsection}\\ + \FontElement{paragraph}\\ + \FontElement{subparagraph}} for each sectioning level (see +\autoref{tab:\LabelBase.fontelements}, +\autopageref{tab:\LabelBase.fontelements}). There is a separate elements, +\FontElement{partnumber}, for the number of the part heading, and +\FontElement{chapterprefix}, for the optional prefix line of chapter headings. +The initial definition for the \FontElement{disposition} element is +\Macro{normalcolor}\linebreak[2]\Macro{sffamily}\linebreak[2]\Macro{bfseries}. +The default font sizes for the specific elements depends on the options +\OptionValueRef{\LabelBase}{headings}{big}, +\OptionValueRef{\LabelBase}{headings}{normal}, and +\OptionValueRef{\LabelBase}{headings}{small} (see +\DescPageRef{\LabelBase.option.headings}). They are listed in +\autoref{tab:\LabelBase.structureElementsFont}. +% Umbruchkorrektur: Tabelle verschoben +\begin{table} +% \centering% +% \caption + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside}[{Default font sizes for different levels of document + sectioning}]{% + \label{tab:\LabelBase.structureElementsFont}% + Default font sizes for different levels of document sectioning in + \Class{scrbook} and \Class{scrreprt}}[l] + \begin{tabular}[t]{lll} + \toprule + Class Option & Element & Default\\ + \midrule + \OptionValueRef{\LabelBase}{headings}{big} + & \DescRef{\LabelBase.fontelement.part}\IndexFontElement{part} + & \Macro{Huge} \\ + & \DescRef{\LabelBase.fontelement.partnumber}% + \IndexFontElement{partnumber} + & \Macro{huge} \\ + & \DescRef{\LabelBase.fontelement.chapter}\IndexFontElement{chapter} + & \Macro{huge} \\ + & \DescRef{\LabelBase.fontelement.chapterprefix}% + \IndexFontElement{chapterprefix} + & \DescRef{\LabelBase.cmd.usekomafont}\PParameter{chapter} \\ + & \DescRef{\LabelBase.fontelement.section}\IndexFontElement{section} + & \Macro{Large} \\ + & \DescRef{\LabelBase.fontelement.subsection}% + \IndexFontElement{subsection} + & \Macro{large} \\ + & \DescRef{\LabelBase.fontelement.subsubsection}% + \IndexFontElement{subsubsection} + & \Macro{normalsize} \\ + & \DescRef{\LabelBase.fontelement.paragraph}\IndexFontElement{paragraph} + & \Macro{normalsize} \\ + & \DescRef{\LabelBase.fontelement.subparagraph}% + \IndexFontElement{subparagraph} + & \Macro{normalsize} \\[1ex] + \OptionValueRef{\LabelBase}{headings}{normal} + & \DescRef{\LabelBase.fontelement.part} & \Macro{huge} \\ + & \DescRef{\LabelBase.fontelement.partnumber} & \Macro{huge} \\ + & \DescRef{\LabelBase.fontelement.chapter} & \Macro{LARGE} \\ + & \FontElement{chapterprefix}\IndexFontElement{chapterprefix} + & \DescRef{\LabelBase.cmd.usekomafont}\PParameter{chapter} \\ + & \DescRef{\LabelBase.fontelement.section} & \Macro{Large} \\ + & \DescRef{\LabelBase.fontelement.subsection} & \Macro{large} \\ + & \DescRef{\LabelBase.fontelement.subsubsection} & \Macro{normalsize} \\ + & \DescRef{\LabelBase.fontelement.paragraph} & \Macro{normalsize} \\ + & \DescRef{\LabelBase.fontelement.subparagraph} & \Macro{normalsize} \\[1ex] + \OptionValueRef{\LabelBase}{headings}{small} + & \DescRef{\LabelBase.fontelement.part} & \Macro{LARGE} \\ + & \DescRef{\LabelBase.fontelement.partnumber} & \Macro{LARGE} \\ + & \DescRef{\LabelBase.fontelement.chapter} & \Macro{Large} \\ + & \FontElement{chapterprefix}\IndexFontElement{chapterprefix} + & \DescRef{\LabelBase.cmd.usekomafont}\PParameter{chapter} \\ + & \DescRef{\LabelBase.fontelement.section} & \Macro{large} \\ + & \DescRef{\LabelBase.fontelement.subsection} & \Macro{normalsize} \\ + & \DescRef{\LabelBase.fontelement.subsubsection} & \Macro{normalsize} \\ + & \DescRef{\LabelBase.fontelement.paragraph} & \Macro{normalsize} \\ + & \DescRef{\LabelBase.fontelement.subparagraph} & \Macro{normalsize}\\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} +% +\begin{Example} + Suppose you use the \OptionValueRef{\LabelBase}{headings}{big} class option + and notice that the very large headings of the document parts are too bold. + You could change this as follows: +\begin{lstcode} + \setkomafont{disposition}{\normalcolor\sffamily} + \part{Appendices} + \addtokomafont{disposition}{\bfseries} +\end{lstcode} +Using the command above you only switch off the font attribute +\textbf{bold} for a heading ``Appendices''. A much more convenient +and elegant solution is to change all \Macro{part} headings at once. +This is done either by: +\begin{lstcode} + \addtokomafont{part}{\normalfont\sffamily} + \addtokomafont{partnumber}{\normalfont\sffamily} +\end{lstcode} + or simply: +\begin{lstcode} + \addtokomafont{part}{\mdseries} + \addtokomafont{partnumber}{\mdseries} +\end{lstcode} +The second version is preferred because it gives you the correct result +even if you change the \DescRef{\LabelBase.fontelement.disposition} +element\IndexFontElement{disposition}, for instance: +\begin{lstcode} + \setkomafont{disposition}{\normalcolor\bfseries} +\end{lstcode} + With this change, it is possible to set all section levels at once to no + longer use sans serif fonts. +\end{Example} + +I strongly advise against using the ability to switch fonts in order to mix +fonts, font sizes, and font attributes wildly. Picking the right font for the +job is a matter for experts and has almost nothing to do with the personal +tastes of non-experts. See the citation at the end of +\autoref{sec:typearea.tips}, \autopageref{sec:typearea.tips.cite} and to the +following explanation. + +\begin{Explain} + It is possible to use different font types for different sectioning + levels in {\KOMAScript}. Non-experts in typography should absolutely avoid + doing so for excellent typographical reasons. + + A rule of typography states that you should mix as few fonts as possible. + Using sans serif for headings already seems to violate this rule. However, + you should realize that large, bold, serif letters are much too heavy for + headings. Strictly speaking, you should then use a normal instead of a bold + or semi-bold font. However, in deeper levels of the sectioning, a normal + font may then appear too light. On the other hand, sans serif fonts have a + very pleasant appearance in headings, and almost solely in headings. There + is, therefore, good reason why sans serif is the default in {\KOMAScript}. + + Greater variety should, however, be avoided. Font mixing is something for + professionals. For this reason, if you want to use fonts other than the + standard {\TeX} fonts\,---\,regardless of whether these are CM\Index{CM + fonts}, EC\Index{EC fonts}, or LM fonts\Index{LM fonts}\,---\,you should + consult an expert about the compatibility of the sans serif and serif fonts, + or redefine the element + \DescRef{\LabelBase.fontelement.disposition}\IndexFontElement{disposition} + as a precautionary measure. The author considers the commonly encountered + combinations of Times and Helvetica or Palatino with Helvetica to be + awkward. +\end{Explain} +\EndIndexGroup +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{part*}\Parameter{heading}% + \Macro{chapter*}\Parameter{heading}% + \Macro{section*}\Parameter{heading}% + \Macro{subsection*}\Parameter{heading}% + \Macro{subsubsection*}\Parameter{heading}% + \Macro{paragraph*}\Parameter{heading}% + \Macro{subparagraph*}\Parameter{heading} +\end{Declaration}% +The starred variants of all sectioning commands produce +unnumbered\Index{numbering} headings which do not appear in the table of +contents\Index{table>of contents}\Index{contents>table of} or in the running +head\Index{running head}. The absence of a running head often has an unwanted +side effect. If, for example, a chapter set using \Macro{chapter*} spans +several pages, then the running head of the previous chapter suddenly +reappears. {\KOMAScript} offers a solution for this problem, described below. +\Macro{chapter*}\OnlyAt{\Class{scrbook}\and\Class{scrreprt}} only exists in +book and report classes, that is, \Class{book}, \Class{scrbook}, +\Class{report} and \Class{scrreport}, not in the article classes +\Class{article} and \Class{scrartcl}. + +Please\textnote{Attention!} note that \DescRef{\LabelBase.cmd.part} and +\DescRef{\LabelBase.cmd.chapter} change the page style for one page. While the +standard classes use the \PageStyle{plain} page style, {\KOMAScript} applies +the style defined in the \DescRef{\LabelBase.cmd.partpagestyle} and +\DescRef{\LabelBase.cmd.chapterpagestyle} macros (see +\autoref{sec:\LabelBase.pagestyle}, +\DescPageRef{\LabelBase.cmd.titlepagestyle}). + +The possibilities for switching fonts\ChangedAt{v2.8p}{% + \Class{scrbook}\and\Class{scrreprt}\and\Class{scrartcl}} % +described above for the unstarred variants apply without change. The elements +use the same names since they do not indicate variants but structuring +levels.% +% +\EndIndexGroup + + +\iffalse% Umbruchkorrekturtext + In the standard classes\textnote{\KOMAScript{} vs. standard classes} there + are no further structuring commands. In particular, there are no commands + which can produce unnumbered chapters or sections which show up in the table + of contents and in the running heading.% +\fi + + +\begin{Declaration} + \Macro{addpart}\OParameter{short version}\Parameter{heading}% + \Macro{addpart*}\Parameter{heading}% + \Macro{addchap}\OParameter{short version}\Parameter{heading}% + \Macro{addchap*}\Parameter{heading}% + \Macro{addsec}\OParameter{short version}\Parameter{heading}% + \Macro{addsec*}\Parameter{heading} + \textnote[n]{\KOMAScript{} vs. standard classes} +\end{Declaration}% +In addition to the commands of the standard classes, {\KOMAScript} offers the +new commands \Macro{addpart}, \Macro{addsec} and \Macro{addchap}. They are +similar to the standard commands \DescRef{\LabelBase.cmd.part}\IndexCmd{part}% +\important{\DescRef{\LabelBase.cmd.part}, \DescRef{\LabelBase.cmd.chapter}, + \DescRef{\LabelBase.cmd.section}}, +\DescRef{\LabelBase.cmd.chapter}\IndexCmd{chapter} and +\DescRef{\LabelBase.cmd.section}\IndexCmd{section} except that they are +unnumbered. They thus produce both a running head and an entry in the table of +contents. + +The starred variants \Macro{addchap*} and \Macro{addsec*} are similar to the +standard commands \DescRef{\LabelBase.cmd.chapter*} and +\DescRef{\LabelBase.cmd.section*} except for a small but important difference: +the running heads are deleted. This eliminates the side effect of obsolete +headers mentioned above. Instead, the running heads on subsequent pages remain +empty. \OnlyAt{\Class{book}\and \Class{scrreprt}}\Macro{addchap} and +\Macro{addchap*} only exist, of course, in book and report classes, namely +\Class{book}, \Class{scrbook}, \Class{report} and \Class{scrreport}, not in +the article classes \Class{article} and \Class{scrartcl}. + +The \Macro{addpart} command produces an unnumbered document part with an +entry in the table of contents. Since the running heads are already deleted +by \DescRef{\LabelBase.cmd.part} and \DescRef{\LabelBase.cmd.part*} the +previously mentioned problem with obsolete headers does not exist. The starred +version \Macro{addpart*} is thus identical to \DescRef{\LabelBase.cmd.part*} +and is only defined for reasons of consistency. + +Please note\textnote{Attention!} that \Macro{addpart} and \Macro{addchap} and +their starred variants change the page style for one page. The particular page +style is defined in the macros \DescRef{\LabelBase.cmd.partpagestyle} and +\DescRef{\LabelBase.cmd.chapterpagestyle} (see +\autoref{sec:\LabelBase.pagestyle}, +\DescPageRef{\LabelBase.cmd.titlepagestyle}). +\iffree{\iffalse}{\csname iftrue\endcsname}% Umbruchkorrekturbeispiel + \begin{Example} + You write a book with a long afterword that spans several pages. This + should receive neither a running head nor an entry in the table of + contents. Therefore, you first use \DescRef{\LabelBase.cmd.chapter*}: +\begin{lstcode} + \documentclass{scrbook} + \usepackage{blindtext} + \begin{document} + \tableofcontents + \blinddocument + \chapter*{Afterword} + \Blindtext[10] + \end{document} +\end{lstcode} + However, you discover that the running head of the previous chapter + reappears on the second and third pages of the afterword. Naturally, you do + not want that. Therefore, you use \Macro{addchap*}: +\begin{lstcode} + \documentclass{scrbook} + \usepackage{blindtext} + \begin{document} + \tableofcontents + \blinddocument + \addchap*{Afterword} + \Blindtext[10] + \end{document} +\end{lstcode} + The complete postscript is now without a running head, if that is what you + want. But even that does not quite meet your expectations. A running head + would be nice. With +\begin{lstcode} + \documentclass{scrbook} + \usepackage{blindtext} + \begin{document} + \tableofcontents + \blinddocument + \addchap{Afterword} + \Blindtext[10] + \end{document} +\end{lstcode} + you now get both ``Afterword'' as the running head on the even pages and an + entry in the table of contents. But this entry bothers your publisher. He + insists that the afterword have no entry in the table of contents. Even if + that seems strange to you, you want to satisfy the publisher, so with + \OptionValueRef{\LabelBase}{headings}{optiontotocandhead} you first + activate the extended function for the optional argument and then + explicitly set an empty argument for the table of contents: +\begin{lstcode} + \documentclass[headings=optiontotocandhead] + {scrbook} + \usepackage{blindtext} + \begin{document} + \tableofcontents + \blinddocument + \addchap[tocentry={}]{Afterword} + \Blindtext[10] + \end{document} +\end{lstcode} + The running head is not changed by \OptionValue{tocentry}{\{\}}. Since + \Class{scrbook} automatically omits empty entries in the table of contents, + the publisher is now satisfied. + \end{Example}% +\fi + +The possibilities for switching fonts\ChangedAt{v2.8p}{% + \Class{scrbook}\and\Class{scrreprt}\and\Class{scrartcl}} % +described above for the unstarred variant of the sectioning commands apply +without change. The elements have the same names since they do not designate +variants but sectioning levels.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{minisec}\Parameter{heading} +\end{Declaration}% +Sometimes you want a heading\Index{heading} that is highlighted but also +closely linked to the following text. Such a heading should not be separated +by a large vertical skip. + +The \Macro{minisec} command is designed for this situation. This heading is +not associated with any sectioning level\textnote{no sectioning level}. Such a +\emph{mini-section} does not produce an entry in the table of contents, nor +does it receive any numbering. + +\BeginIndexGroup +\BeginIndex{FontElement}{minisec}\LabelFontElement{minisec}% +You can change the font of the \Macro{minisec} command using the +\DescRef{\LabelBase.fontelement.disposition}% +\important{\DescRef{\LabelBase.fontelement.disposition}\\ +\FontElement{minisec}} and \FontElement{minisec}\ChangedAt{v2.96a}{% + \Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} element (see +\autoref{tab:maincls.fontelements}, \autopageref{tab:maincls.fontelements}). +The default of the \FontElement{minisec} element is empty, so by default only +the \DescRef{\LabelBase.fontelement.disposition} element is used.% +\EndIndexGroup + +\begin{Example} + You have developed a kit for building a mouse trap and want the + documentation separated into a list of necessary items and an + assembly description. You could write the following: +\begin{lstcode} + \documentclass{scrartcl} + + \begin{document} + + \title{DIY Projects} + \author{Two Left Thumbs} + \date{\today} + \maketitle + + \section{Mousetrap} + + The first project is suitable for beginners and only requires + a few components that should be found in every household. + + \minisec{Material Required} + + \begin{flushleft} + 1 board ($100\times 50 \times 12$)\\ + 1 swing-top cap of a beer-bottle\\ + 1 ballpoint pen\\ + 1 push pin\\ + 2 screws\\ + 1 hammer\\ + 1 knife + \end{flushleft} + + \minisec{Assembly} + First, find the mouse hole and put the push pin directly behind + the hole so that the mouse cannot escape during the following + actions. + + Next tap the swing-top cap into the mouse hole with the hammer. + If the cap is not big enough to block the hole completely and + permanently, take the board instead and screw it to the front + of the mouse hole using the two screws and the knife. Of + course, you can use a screwdriver instead of a knife. The + ballpoint pen has fallen victim to animal welfare. + \end{document} +\end{lstcode} + The main part, starting with the heading ``Material Required'' will look + like this: + \begin{ShowOutput}[\baselineskip]\setlength{\parindent}{1em} + \minisec{Material Required} + + \begin{flushleft} + 1 board ($100\times 50 \times 12$)\\ + 1 swing-top cap of a beer-bottle\\ + 1 ballpoint pen\\ + 1 push pin\\ + 2 screws\\ + 1 hammer\\ + 1 knife + \end{flushleft} + + \minisec{Assembly} + First, find the mouse hole and put the push pin directly behind the hole + so that the mouse cannot escape during the following actions. + + Next tap the swing-top cap into the mouse hole with the hammer. If the cap + is not big enough to block the hole completely and permanently, take the + board instead and screw it to the front of the mouse hole using the two + screws and the knife. Of course, you can use a screwdriver instead of a + knife. The ballpoint pen has fallen victim to animal welfare. + \end{ShowOutput} +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{raggedsection}% + \Macro{raggedchapter}% + \Macro{raggedpart} +\end{Declaration}% +In the standard classes\textnote{\KOMAScript{} vs. standard classes}, headings +are set as justified text. That means that hyphenated words can occur and +multi-line headings are stretched up to the text width. This approach is +rather uncommon in typography. {\KOMAScript} therefore sets the +headings left aligned with hanging indentation using \Macro{raggedsection} +with the default: +\begin{lstcode} + \newcommand*{\raggedsection}{\raggedright} +\end{lstcode} +You can redefine this command with \Macro{renewcommand}. +\begin{Example} + You prefer justified headings, so you write in the preamble of your document: +\begin{lstcode} + \renewcommand*{\raggedsection}{} +\end{lstcode} + or more compactly: +\begin{lstcode} + \let\raggedsection\relax +\end{lstcode} + You will get heading formatting which is very close to that of the standard + classes. It will become even closer when you combine this change with the + change to the + \DescRef{\LabelBase.fontelement.disposition}\IndexFontElement{disposition} + element mentioned above. +\end{Example} + +Because\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}} some users want +a different alignment for the \DescRef{\LabelBase.cmd.chapter} level than for +the other sectioning levels, you can change the +\DescRef{\LabelBase.cmd.chapter} justification separately by redefining +\Macro{raggedchapter}. By default, however, this command simply uses +\Macro{raggedsection}, so changing \Macro{raggedsection} indirectly affects +\Macro{raggedchapter}. + +By default, part headings (\DescRef{\LabelBase.cmd.part}) are set horizontally +centred rather than ragged right. This formatting is performed by the +\Macro{raggedpart} statement, which has the default definition +\begin{lstcode} + \let\raggedpart\centering +\end{lstcode} +You can also redefine this command using \Macro{renewcommand}. +\begin{Example} + You want the headings for \DescRef{\LabelBase.cmd.part} to be formatted the + same as any other sectioning command. To do so, put +\begin{lstcode} + \renewcommand*{\raggedpart}{\raggedsection} +\end{lstcode} + in the preamble of your document. In\textnote{Hint!} this case, and unlike + in the example above, we did not use \Macro{let} because \Macro{let} would + set \Macro{raggedpart} to the underlying value of \Macro{raggedsection}. + Subsequent changes to \Macro{raggedsection} would then not change the + behaviour of \Macro{raggedpart}. By redefining with \Macro{renewcommand}, + \Macro{raggedpart} will use the current meaning of \Macro{raggedsection} at + the time it is used rather than when it was redefined. +\end{Example}% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{partformat} + \Macro{chapterformat} + \Macro{sectionformat} + \Macro{subsectionformat} + \Macro{subsubsectionformat} + \Macro{paragraphformat} + \Macro{subparagraphformat} + \Macro{othersectionlevelsformat}\Parameter{sectioning name}\Parameter{} + \Parameter{counter output} + \Macro{IfUsePrefixLine}\Parameter{then code}\Parameter{else code} + \Macro{autodot} +\end{Declaration}% +{\KOMAScript} adds another logical layer above \Macro{the\PName{sectioning + name}} to format the sectioning numbers. The counters for each heading are +not merely output. They are formatted using the commands \Macro{partformat}, +\Macro{chapterformat}, down to +\Macro{subparagraphformat}\ChangedAt{v3.17}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}}. Of course the \Macro{chapterformat} +command, like \Macro{thechapter}, does not exist in the \Class{scrartcl} +class, but only in the \Class{scrbook} and \Class{scrreprt} +classes.\OnlyAt{\Class{scrbook}\and\Class{scrreprt}} + +As already explained for the \DescRef{\LabelBase.option.numbers}% +\important{\DescRef{\LabelBase.option.numbers}} option at the beginning of +this section (see \DescPageRef{\LabelBase.option.numbers}), {\KOMAScript}'s +handling of points in section numbers implements the rules given in +\cite{DUDEN}, which are standard in German-language typography, in the +\Macro{autodot} command. In all levels except for +\DescRef{\LabelBase.cmd.part}, a point is followed by a further +\Macro{enskip}. This corresponds to a horizontal skip of 0.5\Unit{em}. + +Since \KOMAScript~3.17\ChangedAt{v3.17}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}}, the command +\Macro{othersectionlevelsformat} is used only in rare circumstances, i.\,e., +if the corresponding format command to a section command does not exist or is +\Macro{relax}. This should not happen for any section commands defined by +\KOMAScript{} itself. Therefore the command is no longer officially +documented. Nevertheless, if you select a compatibility level prior to +3.17\important{\OptionValueRef{\LabelBase}{version}{3.17}} (see option +\DescRef{\LabelBase.option.version}, +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}), commands \Macro{sectionformat} down +to \Macro{subparagraphformat} are ignored by \KOMAScript{}. Instead, these +layers will continue to use \Macro{othersectionlevelsformat}. + +You can redefine the formatting commands using \Macro{renewcommand} to fit +them to your personal needs. The following default definitions are used by the +{\KOMAScript} classes: +\begin{lstcode} + \newcommand*{\partformat}{\partname~\thepart\autodot} + \newcommand*{\chapterformat}{% + \mbox{\chapappifchapterprefix{\nobreakspace}\thechapter + \autodot\IfUsePrefixLine{}{\enskip}}} + \newcommand*{\sectionformat}{\thesection\autodot\enskip} + \newcommand*{\subsectionformat}{% + \thesubsection\autodot\enskip} + \newcommand*{\subsubsectionformat}{% + \thesubsubsection\autodot\enskip} + \newcommand*{\paragraphformat}{\theparagraph\autodot\enskip} + \newcommand*{\subparagraphformat}{% + \thesubparagraph\autodot\enskip} + \newcommand*{\othersectionlevelsformat}[3]{% + #3\autodot\enskip} +\end{lstcode} + +Because\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}} it uses +\Macro{IfUsePrefixLine}, \Macro{chapterformat} should not be used outside of +\DescRef{\LabelBase.cmd.chapter}. \Macro{IfUsePrefixLine} is only valid inside +\KOMAScript{} sectioning commands. Within those commands, it executes the +\PName{then code} if a prefix line for the number is used and the \PName{else +code} otherwise. + +Please also remember\textnote{Attention!} to replace \Macro{newcommand} with +\Macro{renewcommand} if you want to redefine one of the commands above. + +\begin{Example} + Suppose you do not want the word ``Part'' written in front of the part + number when you use \DescRef{\LabelBase.cmd.part}. You can put the + following command in the preamble of your document: +\begin{lstcode} + \renewcommand*{\partformat}{\thepart\autodot} +\end{lstcode} + In fact, you could do without \Macro{autodot} here and insert a fixed point + instead. Since \DescRef{\LabelBase.cmd.part} is numbered with Roman numerals, + it must be followed by a point according to \cite{DUDEN}. However, by using + \Macro{autodot} you retain the ability to use the + \DescRef{\LabelBase.option.numbers}% + \important{\DescRef{\LabelBase.option.numbers}} option + \OptionValueRef{\LabelBase}{numbers}{endperiod} and thus deviate from + the rule. You can find more details concerning class options on + \DescPageRef{\LabelBase.option.numbers}. + + Another possibility is to place the section numbers in the left margin in + such a way that the heading text is left aligned with the surrounding text. + You can accomplish this with: +\begin{lstcode} + \renewcommand*{\sectionformat}{% + \makebox[0pt][r]{\thesection\autodot\enskip}} + \renewcommand*{\subsectionformat}{% + \makebox[0pt][r]{\thesubsection\autodot\enskip}} + \renewcommand*{\subsubsectionformat}{% + \makebox[0pt][r]{% + \thesubsubsection\autodot\enskip}} + \renewcommand*{\paragraphformat}{% + \makebox[0pt][r]{\theparagraph\autodot\enskip}} + \renewcommand*{\paragraphformat}{% + \makebox[0pt][r]{% + \thesubparagraph\autodot\enskip}} +\end{lstcode} + The optional arguments of the \Macro{makebox} command require \LaTeX{} to + create a zero-width box with right-justified content. As a result, the + contents of the box are output to the left of the current position.% + \iffree{}{ %Umbruchkorrekturtext + This popular trick avoids the need first to measure the width of the + number and the spacing, and then to change the current position + appropriately with \Macro{hspace}.} + You can find more about the optional arguments of \Macro{makebox} in + \cite{latex:usrguide}. +\end{Example} + +For formatting changes in the headings that go beyond merely formatting the +unit number, please refer to +\DescRef{maincls-experts.cmd.partlineswithprefixformat}% +\IndexCmd{partlineswithprefixformat}, +\DescRef{maincls-experts.cmd.chapterlineswithprefixformat}% +\IndexCmd{chapterlineswithprefixformat} and +\DescRef{maincls-experts.cmd.chapterlinesformat}\IndexCmd{chapterlinesformat}, +as well as +\DescRef{maincls-experts.cmd.sectionlinesformat}\IndexCmd{sectionlinesformat} +and its \DescRef{maincls-experts.cmd.sectioncatchphraseformat}% +\IndexCmd{sectioncatchphraseformat} format in +\autoref{sec:maincls-experts.experts}, starting from +\DescPageRef{maincls-experts.cmd.partlineswithprefixformat}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{chapappifchapterprefix}\Parameter{additional text}% + \Macro{chapapp} +\end{Declaration}% +These\ChangedAt{v2.8o}{\Class{scrbook}\and\Class{scrreprt}} two commands are +used internally by {\KOMAScript} and also made available to the user. Later, +you will see how to use them, for example to redefine other commands.% +\OnlyAt{\Class{scrbook}\and\Class{scrreprt}} + +If you use the layout option \OptionValueRef{\LabelBase}{chapterprefix}{true}% +\important{\DescRef{\LabelBase.option.chapterprefix}} (see +\DescPageRef{\LabelBase.option.chapterprefix}), \Macro{chapappifchapterprefix} +outputs the word ``Chapter''\Index{chapter>heading} in the body of the text in +the current language, followed by \PName{additional text}. In the +appendix\Index{appendix}, the word ``Appendix'' in the current language is +output instead, followed by \PName{additional text}. If the option +\OptionValue{\LabelBase}{chapterprefix}{false} is set, then nothing is output. + +The \Macro{chapapp} command always outputs the word ``Chapter'' or +``Appendix'', regardless of the setting of the +\DescRef{\LabelBase.option.chapterprefix} option. + +Since chapters only exist in the classes \Class{scrbook} and \Class{scrreprt}, +these commands only exist in these classes.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{chaptermark}\Parameter{running head}% + \Macro{addchapmark}\Parameter{running head}% + \Macro{sectionmark}\Parameter{running head}% + \Macro{addsecmark}\Parameter{running head}% + \Macro{subsectionmark}\Parameter{running head}% + \Macro{chaptermarkformat}% + \Macro{sectionmarkformat}% + \Macro{subsectionmarkformat} +\end{Declaration}% +\begin{Explain}% + As mentioned in \autoref{sec:\LabelBase.pagestyle}, the + \DescRef{\LabelBase.pagestyle.headings}\IndexPagestyle{headings}% + \important{\DescRef{\LabelBase.pagestyle.headings}} page style works with + automatic running heads\Index{running heads>automatic}. For this, the + commands \Macro{chaptermark} and \Macro{sectionmark}, or \Macro{sectionmark} + and \Macro{subsectionmark}, are defined accordingly. Every sectioning + command (\DescRef{\LabelBase.cmd.chapter}, \DescRef{\LabelBase.cmd.section}, + etc.) automatically executes the corresponding \Macro{\dots mark} command. + The parameter passed contains the text of the section heading% + \Index{heading}. The corresponding section number is added automatically in + the \Macro{\dots mark} command. The formatting is done according to the + sectioning level with one of the three commands \Macro{chaptermarkformat}, + \Macro{sectionmarkformat}, or \Macro{subsectionmarkformat}. + + Note\textnote{Attention!} that the running heads of + \DescRef{\LabelBase.cmd.addchap}\IndexCmd{addchap} and + \DescRef{\LabelBase.cmd.addsec}\IndexCmd{addsec} are also based on + \Macro{chaptermark} and \Macro{sectionmark}. However, the + \DescRef{\LabelBase.counter.secnumdepth} counter is set locally to a value + that switches off the numbering of chapters or sections. You should consider + this, for example, if you redefine \Macro{chaptermark} or + \Macro{sectionmark} (see \Macro{ifnumbered} on + \DescPageRef{\LabelBase.cmd.ifnumbered}). The starred variants + \DescRef{\LabelBase.cmd.addchap*} and \DescRef{\LabelBase.cmd.addsec*} use + additional commands \Macro{addchapmark} and \Macro{addsecmark} that are also + defined based on \Macro{chaptermark} and \Macro{sectionmark} with local + changes of \DescRef{\LabelBase.counter.secnumdepth}. + + Although\OnlyAt{\Class{scrartcl}} there is no \Macro{chaptermark} or + \Macro{chaptermarkformat} command in \Class{scrartcl}, there are two + commands, \Macro{subsectionmark} and \Macro{subsectionmarkformat}, which + exist only in \Class{scrartcl}. However using the + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + \IndexPackage{scrlayer-scrpage} package changes this (see + \autoref{cha:scrlayer-scrpage}). +\end{Explain} +Just as numbers in the sectioning-command headers are formatted with +\DescRef{\LabelBase.cmd.partformat} down to +\DescRef{\LabelBase.cmd.subparagraphformat}, \Macro{chaptermarkformat}, +\Macro{sectionmarkformat}, and \Macro{subsectionmarkformat} define the +formatting of the sectioning numbers in the automatic running heads. They can +be adapted to your personal needs with \Macro{renewcommand}. The original +definitions for the {\KOMAScript} classes are: +\begin{lstcode} + \newcommand*{\chaptermarkformat}{% + \chapappifchapterprefix{\ }\thechapter\autodot\enskip} + \newcommand*{\sectionmarkformat}{% + \thesection\autodot\enskip} + \newcommand*{\subsectionmarkformat}{% + \thesubsection\autodot\enskip} +\end{lstcode} +\begin{Example} + Suppose you want the word ``Chapter'' to precede the chapter number in the + running head. You could put the following definition in the preamble of your + document: +\begin{lstcode} + \renewcommand*{\chaptermarkformat}{% + \chapapp~\thechapter\autodot\enskip} +\end{lstcode} +\end{Example} +As you can see, both \DescRef{\LabelBase.cmd.chapapp} and +\DescRef{\LabelBase.cmd.chapappifchapterprefix}, explained above, are used +here.% +\EndIndexGroup + + +\begin{Declaration} + \Counter{secnumdepth} + \Macro{partnumdepth} + \Macro{chapternumdepth} + \Macro{sectionnumdepth} + \Macro{subsectionnumdepth} + \Macro{subsubsectionnumdepth} + \Macro{paragraphnumdepth} + \Macro{subparagraphnumdepth} +\end{Declaration}% +\BeginIndex{}{Nummerierung}% +Normally, the \Class{scrbook}\IndexClass{scrbook} and +\Class{scrreport}\IndexClass{scrreprt} classes number the section headings +from \DescRef{\LabelBase.cmd.part}\IndexCmd{part}\IndexCmd{chapter}% +\IndexCmd{section} down to +\DescRef{\LabelBase.cmd.subsection}\IndexCmd{subsection} and the +\Class{scrartcl}\IndexClass{scrartcl} class numbers them from +\DescRef{\LabelBase.cmd.part} down to +\DescRef{\LabelBase.cmd.subsubsection}\IndexCmd{subsubsection}. The actual +depth to which headings are numbered is controlled by the \LaTeX{} counter +\Counter{secnumdepth}. + +To\ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} +save users the trouble of having to remember abstract numbers, the commands +\Macro{partnumdepth} to \Macro{subparagraphnumdepth} return the appropriate +number for the section level in their name. + +\begin{Example} + For a book project, you want the section levels from part down to section + to be numbered. To achieve this, you have to set counter + \Counter{secnumdepth} to the value represented by \Macro{sectionnumdepth} in + the preamble of your document: +\begin{lstcode} + \setcounter{secnumdepth}{\sectionnumdepth} +\end{lstcode} +\end{Example} +No provision is made for redefining these commands. Doing so could lead to +unexpected results, not only with \KOMAScript{} but also with third party +packages. Thus, you should never redefine them. + +Do\textnote{Attention!} not confuse the \Counter{secnumdepth} and +\DescRef{\LabelBase.counter.tocdepth} counters (see +\autoref{sec:\LabelBase.toc}, \DescPageRef{\LabelBase.counter.tocdepth}). +Depending on the class you are using, the meaning of the values of the +\Counter{secnumdepth} and \DescRef{\LabelBase.counter.tocdepth} counters may +differ for the same section level.% +% +\EndIndexGroup + +\begin{Declaration} + \Macro{ifnumbered}\Parameter{section level}% + \Parameter{then code}\Parameter{else code}% + \Macro{ifunnumbered}\Parameter{section level}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +The\ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} commands \Macro{ifnumbered} and \Macro{ifunnumbered} +determine which section-level headings are numbered, using the technique +described above, and execute code depending on whether a \PName{section level} +is numbered or not. If a \PName{section level} is numbered with the current +settings, \Macro{ifnumbered} executes the \PName{then code}. If the section +level is unnumbered, the \PName{else code} is executed. The +\Macro{ifunnumbered} command behaves in exactly the opposite manner, executing +the \PName{then code} if the current level is unnumbered and the \PName{else + code} if it is. The \PName{section level} parameter is simply the \LaTeX{} +name of a section like \PValue{part}, \PValue{chapter}, \PValue{section}, +\PValue{subsection}, \PValue{subsubsection}, \PValue{paragraph} oder +\PValue{subparagraph}.\PValue{part}, \PValue{chapter}, \PValue{section}, +\PValue{subsection}, \PValue{subsubsection}, \PValue{paragraph}, or +\PValue{subparagraph}. + +\KOMAScript{} itself uses these tests, for example, in the definition of +\DescRef{\LabelBase.cmd.chaptermark}\IndexCmd{chaptermark} in the +\DescRef{\LabelBase.pagestyle.headings}\IndexPagestyle{headings} page style. +This indirectly ensures that headings inserted by +\DescRef{\LabelBase.cmd.addchap} do not set a number inside the running head +(see also \DescRef{\LabelBase.cmd.addchapmark}, +\DescPageRef{\LabelBase.cmd.addchapmark}).% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setpartpreamble}% + \OParameter{position}\OParameter{width}\Parameter{preamble} + \Macro{setchapterpreamble}% + \OParameter{position}\OParameter{width}\Parameter{preamble} +\end{Declaration}% +Parts\OnlyAt{\Class{scrbook}\and + \Class{scrreprt}}\Index{part>preamble}\Index{chapter>preamble} and chapters +in {\KOMAScript} can be given a \PName{preamble}. This is particularly useful +when you are using a two-column format with the class option +\Option{twocolumn}\IndexOption{twocolumn}, since the heading and the +\PName{preamble} are always set in a one-column layout. The \PName{preamble} +can contain more than one paragraph. The command to set the \PName{preamble} +must come before the respective \DescRef{\LabelBase.cmd.part}, +\DescRef{\LabelBase.cmd.addpart}, \DescRef{\LabelBase.cmd.chapter}, or +\DescRef{\LabelBase.cmd.addchap} command. +\begin{Example} + You are writing a report about the condition of a company. You organize the + report in such a way that every department gets its own partial report. + Each of these parts should be introduced by an abstract on the corresponding + title page. You could write the following: +\begin{lstcode} + \setpartpreamble{% + \begin{abstract} + This is a filler text. It serves merely to demonstrate the + capabilities of {\KOMAScript}. If you read this text, you will + get no information. + \end{abstract} + } + \part{Department for Word Processing} +\end{lstcode} + Depending on the settings for the heading font size\Index{heading} + (see \DescPageRef{\LabelBase.option.headings}) and the options for + the \DescRef{\LabelBase.env.abstract} environment\IndexEnv{abstract} (see + \autoref{sec:\LabelBase.abstract}, + \DescPageRef{\LabelBase.option.abstract}), the result will look something + like this: + \begin{ShowOutput}\centering + {\LARGE\usekomafont{disposition} Part III.\par\vspace{14pt}} + {\LARGE\usekomafont{disposition} Department for Word Processing\strut\par} + \begin{quote}\small + \vspace{4ex} + \begin{center} + \usekomafont{disposition}\abstractname + \end{center} + \vspace{2ex} + This is a filler text. It serves merely to demonstrate the + capabilities of {\KOMAScript}. If you read this text, you will + get no information. + \end{quote} + \end{ShowOutput} +\end{Example} +Please\textnote{Attention!} note that \emph{you} are responsible for the +spacing between the heading, preamble, and the following text. Note also that +there is no \DescRef{\LabelBase.env.abstract} environment in the +\Class{scrbook} class (see \autoref{sec:\LabelBase.abstract}, +\DescPageRef{\LabelBase.env.abstract}). + +The\ChangedAt{v2.8p}{\Class{scrbook}\and\Class{scrreprt}} first optional +argument, \PName{position}, determines the position at which the preamble +is placed with the help of one or two letters. For vertical placement +there are two possibilities at present: +\begin{labeling}[~--]{\quad\PValue{o}}\itemsep=0pt +\item [\quad\texttt{o}] above the heading +\item [\quad\texttt{u}] below the heading +\end{labeling} +You can therefore put one preamble above and another below a heading. For +horizontal placement you have three options: +\begin{labeling}[~--]{\quad\PValue{o}}\itemsep=0pt +\item [\quad\texttt{l}] left-aligned +\item [\quad\texttt{r}] right-aligned +\item [\quad\texttt{c}] centred +\end{labeling} +This setting does not affect the alignment of the text in the +\PName{preamble}. Instead, it aligns the box that contains the preamble. The +width of this box is determined by the second optional argument, +\PName{width}. If you omit this second argument, the box uses the full text +width. In that case, the option for horizontal positioning has no effect. You +can combine exactly one letter from the vertical with one letter from the +horizontal positioning. + +A typical use for \Macro{setchapterpreamble} would be something like an +epigraph, a wise saying, or a dictum. The +\DescRef{\LabelBase.cmd.dictum}\IndexCmd{dictum} command, which you can use +for this purpose, is described in the next section. You will also find an +example there. + +Please note\textnote{Attention!} that a \PName{preamble} placed above the +heading is set within the existing vertical space above the heading. The +heading will not be moved down. You are therefore responsible for ensuring +that the \PName{preamble} is not too large and that the space above the +heading is sufficient. See also the \Option{beforeskip} setting for +\DescRef{maincls-experts.cmd.RedeclareSectionCommand} in +\autoref{sec:maincls-experts.experts}, +\autoref{tab:maincls-experts.declarechapterstyle.keys}, +\autopageref{tab:maincls-experts.declarechapterstyle.keys}. +% +% +\EndIndexGroup +% +\EndIndexGroup + + +\LoadCommonFile{dictum}% \section{Dicta} + +\LoadCommonFile{lists}% \section{Lists} + +\section{Mathematics} +\seclabel{math}% +\BeginIndexGroup +\BeginIndex{}{equations}% +\BeginIndex{}{formulas}% +\BeginIndex{}{mathematics}% + +\KOMAScript{} classes do not provide their own environments for formulas, +systems of equations, or similar mathematical elements. Instead, \KOMAScript{} +relies fully on the maths features of the \LaTeX{} kernel. This also applies to +the the options \DescRef{\LabelBase.option.leqno} and +\DescRef{\LabelBase.option.fleqn}. + +You will not find a description of the maths environments of the \LaTeX{} +kernel here. If you want to use +\Environment{displaymath}\IndexEnv{displaymath}, +\Environment{equation}\IndexEnv{equation}, or +\Environment{eqnarray}\IndexEnv{eqnarray} you should read an introduction to +\LaTeX{} like \cite{lshort}. But\textnote{Hint!} if you want more than very +simple mathematics, you should use the \Package{amsmath} package (see +\cite{package:amsmath}). + +\begin{Declaration} + \Option{leqno} +\end{Declaration}% +Equations are normally numbered\Index{equation>number} on the right. The +\Option{leqno} option loads the standard option file \File{leqno.clo}. The +equations are then numbered on the left. You\textnote{Attention!} must use +this option as an optional argument of \DescRef{\LabelBase.cmd.documentclass}. +Using it as an argument of \DescRef{\LabelBase.cmd.KOMAoptions} or +\DescRef{\LabelBase.cmd.KOMAoption} is not supported. The latter +would not make sense because the recommended maths package \Package{amsmath} +can only respond to this option at load time and does not react to run-time +changes of the option. +% +\EndIndexGroup + + +\begin{Declaration} + \Option{fleqn} +\end{Declaration}% +Displayed equations\Index{equation>alignment} are normally centred. The +standard option \Option{fleqn} loads the standard option file +\File{fleqn.clo}. Displayed equations are then left-justified. +You\textnote{Attention!} must use this option as an optional argument of +\DescRef{\LabelBase.cmd.documentclass}. Using it as an argument of +\DescRef{\LabelBase.cmd.KOMAoptions} or \DescRef{\LabelBase.cmd.KOMAoption} is +not supported. The latter would not make sense because the recommended maths +package \Package{amsmath} can only respond to this option at load time and +does not react to run-time changes of the option. +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Floating Environments for Tables and Figures} +\seclabel{floats} +\BeginIndexGroup +\BeginIndex{}{floats}% +\BeginIndex{}{tables}% +\BeginIndex{}{figures}% + +With the floating environments, {\LaTeX} offers a powerful and convenient +mechanism to arrange figures\Index{figure} and tables\Index{table} +automatically. +% Im Deutschen ist hier ein Absatz, den wir nicht uebernehmen! +Frequently,\textnote{Attention!} beginners do not properly understand these +floating environments\Index[indexmain]{floating environments}. They often ask +to specify the exact position of a table or figure within the text. However, +this is usually unnecessary, since the text will contain references to these +floating environments. It is also not sensible because such an object can only +be set on the page if there is enough space left for it. If this is not the +case, the object would have to be shifted onto the next page, possibly leaving +a huge empty space on the previous page. + +Often\textnote{Attention!} a document will use the same optional argument to +position every floating object. This also makes no sense. In such cases, you +should instead change the default value globally. For more details, see +\cite{DANTE:FAQ}. + +One\textnote{Attention!} final, important note before starting this section: +most of mechanisms described here, which extend the capabilities of the +standard classes, no longer work correctly when used with packages that modify +the appearance of figure and table captions. This should be self-evident, but +it is often overlooked. + + +\begin{Declaration} + \OptionVName{captions}{setting} +\end{Declaration} +In the standard classes, the titles of floating environments, which are +formatted with the \DescRef{\LabelBase.cmd.caption}\IndexCmd{caption} command +(see below), are set off from the float with vertical spacing appropriate for +putting the caption beneath the float, like a signature. They also distinguish +between one-line and multi-line captions. One-line captions are centred while +multi-line captions are left-justified. + +\leavevmode\LabelOptionValue{captions}{tableheading}\nobreak% +For tables, however, you want the caption% +\important{\Option{captions}{tableheading}} to appear as a heading instead of +a signature. That's because tables can span multiple pages. With such tables, +the reader wants to know the purpose of the table on the first page. +Furthermore, tables are usually read row by row, from top to bottom. So there +are normally at least two good reasons to provide all tables with headings. +\KOMAScript{} therefore offers the \OptionValue{captions}{tableheading}% +\IndexOption{captions~=\textKValue{tableheading}} option, which changes the +formatting of table captions for use above the table. + +Note\textnote{Attention!} that multi-page tabulars cannot use a floating +environment. To have an automatic page break in a tabular you need an +additional package like \Package{longtable}\IndexPackage{longtable} (see +\cite{package:longtable}) or \Package{supertabular}\IndexPackage{supertabular} +(see \cite{package:supertabular}). + +You\important{\OptionValue{captions}{tablesignature}} can switch back to the +default caption formatting using \OptionValue{captions}{tablesignature}% +\IndexOption{captions~=\textKValue{tablesignature}}. Note\textnote{Attention!} +that these options change only the formatting, not the actual position of the +caption. Whether the caption is placed above or below a float depends solely +upon where you use the \DescRef{\LabelBase.cmd.caption} command inside float +environment. However, this can change when using the \Package{float}% +\IndexPackage{float} package with the \Macro{restylefloats} command (see +\cite{package:float}). + +Of course\important{\OptionValue{captions}{figureheading}\\ + \OptionValue{captions}{figuresignature}}, corresponding functions +exist\ChangedAt{v3.09}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} for figures using the options +\OptionValue{captions}{figureheading}% +\IndexOption{captions~=\textKValue{figureheading}} and +\OptionValue{captions}{figuresignature}% +\IndexOption{captions~=\textKValue{figuresignature}}. However, figures such as +photos tend to be viewed as a whole, and a diagram or graph will mostly be +examined starting from the lower left. Therefore, it only rarely makes sense +to change the caption format for figures alone from signatures to headings. + +Sometimes, however, all floating environments should use headings. Therefore +\KOMAScript{} provides\ChangedAt{v3.09}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} +options\important{\OptionValue{captions}{heading}\\ + \OptionValue{captions}{signature}} +\OptionValue{captions}{heading}\IndexOption{captions~=\textKValue{heading}} +and \OptionValue{captions}{signature}% +\IndexOption{captions~=\textKValue{signature}} to switch the format of every +floating environment. These options can also be used inside a floating +environment. + +Please note\textnote{Achtung!}\OnlyAt{\Package{float}}\IndexPackage{float} +when using the \Package{float} package that the settings for signatures or +headings will no longer work once \Macro{restylefloat} is applied to tables or +figures. For details about the \Package{float} package and +\Macro{restylefloat}, please refer to \cite{package:float}. This also applies +to \DescRef{\LabelBase.cmd.caption} within new floating environments defined +with \Package{float}. You can find additional support which \KOMAScript{} +provides when using the \Package{float} package in the explanation of +\PValue{komaabove} (see \DescPageRef{\LabelBase.floatstyle.komaabove}). As an +alternative to \Package{float}, you can also consult +\DescRef{\LabelBase.cmd.captionof} (see +\DescPageRef{\LabelBase.cmd.captionof}) and +\DescRef{tocbasic.cmd.DeclareNewTOC} (see +\DescPageRef{tocbasic.cmd.DeclareNewTOC}). Additionally, when using +\Package{float}, the +\hyperref[cha:scrhack]{\Package{scrhack}}\IndexPackage{scrhack}% +\important{\hyperref[cha:scrhack]{\Package{scrhack}}} package is +expressly recommended (see \autoref{cha:scrhack} from +\autopageref{cha:scrhack} in \autoref{part:forExperts}). + +\leavevmode +\LabelOptionValue{captions}{nooneline}\nobreak +\LabelOptionValue{captions}{oneline}\nobreak +Furthermore\important{\OptionValue{captions}{nooneline}}, \KOMAScript{} offers +the option to disable the distinction between one-line and multi-line captions +using the \OptionValue{captions}{nooneline}% +\IndexOption{captions~=\textKValue{nooneline}}% +\important{\OptionValue{captions}{nooneline}} option. This can be useful, for +example, if you do not want one-line captions to be centred. The default, +where one-line captions are centred, corresponds to +\OptionValue{captions}{oneline}. + +Another special feature of \KOMAScript{} is the ability to put the caption +beside the floating object rather than above or below it. For this, you need +the environment\important{\DescRef{\LabelBase.env.captionbeside}} +\DescRef{\LabelBase.env.captionbeside}\IndexEnv{captionbeside}, which is +explained starting on \DescPageRef{\LabelBase.env.captionbeside}. The settings +for this environment can also be changed with the \Option{caption} option. You +can find the available values for the corresponding \PName{settings} in +\autoref{tab:\LabelBase.captions}. +% +\begin{desclist} + \desccaption[{Available values for the \Option{captions}} option]{% + Available values for the \Option{captions} option for setting formatting of + captions as headings or signatures in floating environments% + \label{tab:\LabelBase.captions}% + }{% + Available values for the \Option{captions} option (\emph{continued})% + }% + \entry{\PValue{bottombeside}, \PValue{besidebottom}}{% + Captions for the \DescRef{\LabelBase.env.captionbeside} environment (see + \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) are vertically aligned with + the bottommost baseline of the contents of the floating environment.% + \IndexOption{captions~=\textKValue{bottombeside}}}% + \entry{\PValue{centeredbeside}, \PValue{besidecentered}, + \PValue{middlebeside}, \PValue{besidemiddle}}{% + Captions for the \DescRef{\LabelBase.env.captionbeside} environment (see + \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) are vertically aligned with + the center of the contents of the floating environment.% + \IndexOption{captions~=\textKValue{centeredbeside}}}% + \entry{\PValue{figureheading}, \PValue{figureabove}, \PValue{abovefigure}, + \PValue{topatfigure}% + \IndexOption{captions~=\textKValue{figureheading}}}{% + \ChangedAt{v3.09}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Captions for figures use heading format\,---\,possibly deviating from + \OptionValue{captions}{signature}.% + }% + \entry{\PValue{figuresignature}, \PValue{belowfigure}, + \PValue{bottomatfiggure}% + \IndexOption{captions~=\textKValue{figuresignature}}}{% + \ChangedAt{v3.09}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Captions for figures use signature format\,---\,possibly deviating + from \OptionValue{captions}{headings}.% + }% + \entry{\PValue{heading}, \PValue{above}, \PValue{top}% + \IndexOption{captions~=\textKValue{heading}}}{% + \ChangedAt{v3.09}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Captions for floating environments use formatting + suitable for use in a heading. This setting does not control whether they + are placed at the top or the bottom of the object. This option also + implies \OptionValue{captions}{tableheading} and + \OptionValue{captions}{figureheading}.% + }% + \entry{\PValue{innerbeside}, + \PValue{besideinner}\IndexOption{captions~=\textKValue{innerbeside}}}{% + Captions for the \DescRef{\LabelBase.env.captionbeside} environment (see + \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) are placed inside of and next + to the contents of the environment in two-sided printing. In one-sided + printing, \OptionValue{captions}{leftbeside} is used.% + }% + \entry{\PValue{leftbeside}, + \PValue{besideleft}\IndexOption{captions~=\textKValue{leftbeside}}}{% + Captions for the \DescRef{\LabelBase.env.captionbeside} environment (see + \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) are placed to the left of + the contents of the floating environment.% + }% + \pventry{nooneline}{% + Single-line captions are handled the same as multi-line captions.% + \IndexOption{captions~=\textKValue{nooneline}}}% + \pventry{oneline}{% + Single-line captions are centred horizontally.% + \IndexOption{captions~=\textKValue{oneline}}}% + \entry{\PValue{outerbeside}, \PValue{besideouter}% + \IndexOption{captions~=\textKValue{outerbeside}}}{% + Captions for the \DescRef{\LabelBase.env.captionbeside} environment (see + \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) are placed outside of and + next to the contents of the environment in two-sided printing. In + one-sided printing, \OptionValue{captions}{rightbeside} is used.% + }% + \entry{\PValue{rightbeside}, \PValue{besideright}% + \IndexOption{captions~=\textKValue{rightbeside}}}{% + Captions for the \DescRef{\LabelBase.env.captionbeside} environment (see + \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) are placed to the right of the + contents of the floating environment.% + }% + \entry{\PValue{signature}, \PValue{below}, \PValue{bot}, \PValue{bottom}% + \IndexOption{captions~=\textKValue{signature}}}{% + \ChangedAt{v3.09}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Captions for floating environments use signature format. This setting + does not control whether they are placed at the top or the bottom of the + object. This options also implies \OptionValue{captions}{tablesignature} + and \OptionValue{captions}{figuresignature}.% + }% + \entry{\PValue{tableheading}, \PValue{tableabove}, \PValue{abovetable}, + \PValue{abovetabular}, \PValue{topattable}% + \IndexOption{captions~=\textKValue{tableheading}}}{% + Captions for tables use heading format\,---\,possibly deviating from + \OptionValue{captions}{signature}.% + }% + \entry{\PValue{tablesignature}, \PValue{belowtable}, \PValue{belowtabular}, + \PValue{bottomattable}% + \IndexOption{captions~=\textKValue{tablesignature}}}{% + Captions for tables use signature format\,---\,possibly deviating + from \OptionValue{captions}{heading}.% + }% + \entry{\PValue{topbeside}, \PValue{besidetop}}{% + Captions for the \DescRef{\LabelBase.env.captionbeside} environment (see + \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) are vertically aligned to the + baseline at the top of the floating environment.% + \IndexOption{captions~=\textKValue{topbeside}}}% +\end{desclist}% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{caption}\OParameter{entry}\Parameter{title} + \Macro{captionbelow}\OParameter{entry}\Parameter{title} + \Macro{captionabove}\OParameter{entry}\Parameter{title} +\end{Declaration}% +In the standard classes, tables and figures are given captions with the +\Macro{caption} command placed below the table or figure. For figures, this is +generally correct. For tables, opinions differ as to whether captions should +be placed above the table or, consistent with captions of +figures\Index{caption>of figure}, below it\Index{caption>of table}. Therefore +{\KOMAScript}\textnote{\KOMAScript{} vs. standard classes}, +unlike the standard classes, offers \Macro{captionbelow} for captions +below and \Macro{captionabove} for captions above tables or +figures. + +For tables and figures, or in general for all floating environments, you can +control the behaviour of \Macro{caption} with the +\DescRef{\LabelBase.option.captions}\IndexOption{captions} option described at +the beginning of this section. For compatibility reasons, the default +behaviour of \Macro{caption} for all floating environments is like +\Macro{captionbelow}. However, you\textnote{Hint!} should use the +\OptionValueRef{\LabelBase}{captions}{tableheading} option, which switches the +behaviour of \Macro{caption} inside table environments to +\Macro{captionabove}. Alternatively, you can use \Macro{captionabove} instead +of \Macro{caption} inside every \Environment{table} environment. +% +\begin{Example} + Instead of using captions below a table, you want to place your + captions above it\Index{table>caption}, because you have tables + which span more then one page. In the standard classes you could + only write: +\begin{lstcode} + \begin{table} + \caption{This is an example table} + \begin{tabular}{llll} + This & is & an & example.\\\hline + This & is & an & example.\\ + This & is & an & example. + \end{tabular} + \end{table} +\end{lstcode} + Then you would get this unsatisfying result: + \begin{ShowOutput}\centering + {\usekomafont{caption}{\usekomafont{captionlabel}\tablename~30.2:} + This is an example table.}\\ + \begin{tabular}{llll} + This & is & an & example.\\\hline + This & is & an & example.\\ + This & is & an & example. + \end{tabular} +\end{ShowOutput} + Using {\KOMAScript} you write instead: +\begin{lstcode} + \begin{table} + \captionabove{This is just an example table} + \begin{tabular}{llll} + This & is & an & example.\\\hline + This & is & an & example.\\ + This & is & an & example. + \end{tabular} + \end{table} +\end{lstcode} + Then you get: + \begin{ShowOutput}\centering + {\usekomafont{caption}{\usekomafont{captionlabel}\tablename~30.2:} + This is just an example table}\\\vskip\abovecaptionskip + \begin{tabular}{llll} + This & is & an & example.\\\hline + This & is & an & example.\\ + This & is & an & example. + \end{tabular} + \end{ShowOutput} + Since you want all your tables typeset with captions above, you could + of course use the \OptionValueRef{\LabelBase}{captions}{tableheading} option + instead (see \DescPageRef{\LabelBase.option.captions.tableheading}). Then + you can use \Macro{caption} as you would in the standard classes. You will + get the same result as with \Macro{captionabove}. +\end{Example} + +\BeginIndex[indexother]{}{font>style}% +\BeginIndex{FontElement}{caption}\LabelFontElement{caption}% +\BeginIndex{FontElement}{captionlabel}\LabelFontElement{captionlabel}% +The font style\ChangedAt{v2.8p}{% + \Class{scrbook}\and\Class{scrreprt}\and\Class{scrartcl}} for the description +and the label\,---\,``Figure'' or ``Table'', followed by the number and the +delimiter\,---\,can be changed with the commands +\DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont} (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}). The respective elements for this +are \FontElement{caption}\important[i]{\FontElement{caption}\\ + \FontElement{captionlabel}} and \FontElement{captionlabel} (see +\autoref{tab:\LabelBase.fontelements}, +\autopageref{tab:\LabelBase.fontelements}). The font style for the element +\FontElement{caption} is applied to the element \FontElement{captionlabel} +before the font style of \FontElement{captionlabel} itself is applied. The +default settings are listed in \autoref{tab:\LabelBase.captionFont}. +% +\begin{table} +% \centering% +% \caption + \begin{captionbeside} + {Font defaults for the elements of figure or table captions} + [l] + \begin{tabular}[t]{ll} + \toprule + element & default \\ + \midrule + \DescRef{\LabelBase.fontelement.caption} & \Macro{normalfont} \\ + \DescRef{\LabelBase.fontelement.captionlabel} & \Macro{normalfont}\\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:\LabelBase.captionFont} +\end{table} +% +\begin{Example} + You want the table and figure descriptions typeset in a smaller font + size. Thus you could write the following in the preamble of your + document: +\begin{lstcode} + \addtokomafont{caption}{\small} +\end{lstcode} + Furthermore, you would like the labels to be printed in sans serif and + bold. You add: +\begin{lstcode} + \setkomafont{captionlabel}{\sffamily\bfseries} +\end{lstcode} + As you can see, simple extensions of the default definitions are + possible. +\end{Example}% +\EndIndexGroup + + +\begin{Declaration} + \Macro{captionof}\Parameter{float type}\OParameter{entry}% + \Parameter{title}% + \Macro{captionbelowof}\Parameter{float type}\OParameter{entry}% + \Parameter{title}% + \Macro{captionaboveof}\Parameter{float type}\OParameter{entry}% + \Parameter{title} +\end{Declaration}% +Like\ChangedAt{v3.05}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} the \Package{caption}\IndexPackage{caption} and +\Package{capt-of}\IndexPackage{capt-of} packages, \KOMAScript{} offers the +\Macro{captionof} command, with which you can put a caption for a floating +environment, together with an entry in the corresponding environment list, +outside of the floating environment or even in a different floating +environment. Unlike \DescRef{\LabelBase.cmd.caption}, the type of floating +environment must be specified as the first parameter. + +In addition, \KOMAScript{} also provides the commands +\Macro{captionaboveof}\ChangedAt{v3.09}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} and \Macro{captionbelowof}. These are +like \DescRef{\LabelBase.cmd.captionabove} and +\DescRef{\LabelBase.cmd.captionbelow} but with the additional features and +parameter of \Macro{captionof}. + +Of course\ChangedAt{v3.09a}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} \Macro{captionof} takes into account the \PValue{heading} +and \PValue{signature} settings of the \DescRef{\LabelBase.option.captions} +option. But this feature may be lost if you load the +\Package{capt-of}\IndexPackage{capt-of} or +\Package{caption}\IndexPackage{caption} packages. When using +\Package{caption}, you must follow the instructions for that package (see +\cite{package:caption})! +\begin{Example} + Suppose you want to create a floating object with a table and a figure next + to each other. Since there are no mixed floating environments, you primarily + use a \Environment{figure} environment: +\begin{lstcode} + \begin{figure} + \begin{minipage}{.5\linewidth} + \centering + \rule{4cm}{5cm} + \caption{A rectangle}\label{fig:rechteck} + \end{minipage}% + \begin{minipage}{.5\linewidth} + \centering + \captionaboveof{table} + [Measure of the rectangle in + figure~\ref{fig:rechteck}]% + {Measure of the rectangle} + \label{tab:rechteck} + \begin{tabular}{ll} + Width: & 4\,cm\\ + Height: & 5\,cm + \end{tabular} + \end{minipage} + \end{figure} +\end{lstcode} + Two \Environment{minipage} environments were used to place the figure + and the table side by side. The\textnote{Attention!} percent sign after the + end of the first \Environment{minipage} is important. Without it, an + additional space would appear between the \Environment{minipage} + environments. + + The figure caption was created with \DescRef{\LabelBase.cmd.caption}. The + table caption was created with \Macro{captionaboveof} with \PValue{table} + as the first argument. Because of this, \KOMAScript{} knows that this is a + table caption even though it is inside the \Environment{figure} environment. + + The optional argument of \Macro{captionaboveof} creates an entry in the + list of tables. Without the optional argument, the caption specified in the + final mandatory argument would have been used for the list of tables too. + Although this caption text is sufficient for the environment itself, it + would not be very meaningful in the list of tables. Therefore, a different + title is used for the list of tables using the optional argument. + \autoref{fig:\LabelBase.captionaboveof} shows the result of the example code.% +\begin{figure} +% \centering +% \caption + \KOMAoptions{captions=bottombeside}% + \setcapindent{0pt}% + \begin{captionbeside} + [{Example: Using \Macro{captionaboveof} inside another floating + environment}] + {Example: Using \Macro{captionaboveof} inside another floating + environment\label{fig:\LabelBase.captionaboveof}} + [l] + \begin{minipage}[b]{.66\linewidth}% + \raisebox{\depth}{\fbox{\KOMAoptions{captions=oneline}% + \begin{minipage}{.5\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax} + \centering + \rule{4cm}{5cm} + \caption[Example: A rectangle]{A rectangle}\label{fig:\LabelBase.rechteck} + \end{minipage}% + \begin{minipage}{.5\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax} + \centering + \captionaboveof{table}[Example: Measure of the rectangle in + figure~\ref{fig:\LabelBase.rechteck}]{Rectangle size} + \label{tab:\LabelBase.rechteck} + \begin{tabular}{ll} + Width: & 4\,cm\\ + Height: & 5\,cm + \end{tabular} + \end{minipage}}}% + \end{minipage}% + \end{captionbeside}% +\end{figure}% +\end{Example}% +You can produce a non-floating table with a caption in the same way as the +table inside a figure environment in the example above. In such a case, a +\Environment{minipage} environment should also be used to avoid page breaks +between the caption and the table. In addition, you should embed the +\Environment{minipage} environment in a \Environment{flushleft} environment +both to achieve a pleasing separation between the surrounding text and to +avoid the paragraph indentation of the \Environment{minipage} environment.% +\EndIndexGroup + + +\begin{Declaration} + \begin{Environment}{captionbeside} + \OParameter{short title} + \Parameter{caption text} + \OParameter{placement} + \OParameter{width} + \OParameter{offset} + \end{Environment} + \labelsuffix[*]% + \begin{Environment}{captionbeside} + \OParameter{short title} + \Parameter{caption text} + \OParameter{placement} + \OParameter{width} + \OParameter{offset}\PValue{*}% + \end{Environment} +\end{Declaration} +In addition\ChangedAt{v2.8q}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} to captions above and below the figure, you will often +find captions, in particular for small figures, which are placed beside the +figure. The bottom edge of the caption is normally aligned with the bottom of +the figure. Of course, you can achieve the same thing in the standard classes +with some fiddling and the use of two \Macro{parbox} commands. However, +\KOMAScript{} offers a special environment for this which you can use within +the floating environments. The first optional parameter, +\PName{short title}\important{\PName{short title}\\\PName{caption text}}, and +the required parameter \PName{caption text} have the same meaning as the +corresponding parameters of \DescRef{\LabelBase.cmd.caption}, +\DescRef{\LabelBase.cmd.captionabove} or +\DescRef{\LabelBase.cmd.captionbelow}. The \PName{caption text} is +placed beside the content of the environment in this case. + +The \PName{placement}\important{\PName{placement}} parameter can determine +whether the \PName{caption text} is placed on the left or the right. Exactly +one of the following letters is allowed: +\begin{labeling}[~--]{\quad\PValue{o}}\setlength{\itemsep}{-1\parsep plus 1ex}% + \item[\PValue{l}] left + \item[\PValue{r}] right + \item[\PValue{i}] inner margin in two-sided printing + \item[\PValue{o}] outer margin in two-sided printing +\end{labeling} +The default placement is to the right of the content of the environment. You +can change this default\ChangedAt{v3.00}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} using the +\DescRef{\LabelBase.option.captions}\IndexOption{captions}% +\important{\DescRef{\LabelBase.option.captions}} option (see +\DescPageRef{\LabelBase.option.captions}) with values like +\PValue{innerbeside}\IndexOption[indexmain]{captions~=\textKValue{innerbeside}}, +\PValue{leftbeside}\IndexOption[indexmain]{captions~=\textKValue{leftbeside}}, +\PValue{outerbeside}\IndexOption[indexmain]{captions~=\textKValue{outerbeside}}, +and +\PValue{rightbeside}\IndexOption[indexmain]{captions~=\textKValue{rightbeside}}. +If either \PValue{o} or \PValue{i} are used you may need to run {\LaTeX} twice +to obtain the correct placement. + +Normally\important{\PName{width}}, the content of the environment and the +\PName{caption text} fill the entire available text width. However, you can +specify a different width using the optional parameter \PName{width}. This can +be greater than the current text width. + +When specifying a \PName{width}\important{\PName{width}\\\PName{offset}}, the +width used is usually centred with respect to the body text. Using the +optional parameter \PName{offset}, you can shift the environment relative to +the left margin. A positive value corresponds to a shift to the right, whereas +a negative value corresponds to a shift to the left. An \PName{offset} of +0\Unit{pt} gives you a left-aligned output. + +If\important{\PValue{*}} you add a star to the optional \PName{offset} +parameter, the value represents a shift relative to the right margin on +left-hand pages in a two-sided layout. A positive value corresponds to a shift +towards the outer margin, whereas a negative value corresponds to a shift +towards the inner margin. An \PName{offset} of 0\Unit{pt} means alignment with +the inner margin. This variant may require two {\LaTeX} runs to achieve the +correct offset. + +The default vertical alignment is bottom. This means that the bottommost base +lines of the contents of the environment and of the caption are aligned. +You\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} can change this setting using the +\DescRef{\LabelBase.option.captions}\IndexOption{captions}% +\important{\DescRef{\LabelBase.option.captions}} option (see +\DescPageRef{\LabelBase.option.captions}) with the value +\PValue{topbeside}\IndexOption[indexmain]{captions~=\textKValue{topbeside}}, +\PValue{centeredbeside}% +\IndexOption[indexmain]{captions~=\textKValue{centeredbeside}}, or +\PValue{bottombeside}% +\IndexOption[indexmain]{captions~=\textKValue{bottombeside}}. +With the setting \PValue{topbeside}, the topmost base lines of the environment +contents and caption will be aligned. With \PValue{centeredbeside}, they will +be centred vertically. In this context, note that the base line of a figure is +usually the bottom of the figure. You can change this using, for example, +\Macro{raisebox}\IndexCmd{raisebox}. + +\begin{Example} + You can find an example using the \Environment{captionbeside} environment in + \autoref{fig:\LabelBase.captionbeside}. This figure was typeset with: +\begin{lstcode} + \begin{figure} + \begin{captionbeside}[Example: Figure beside description]% + {A figure description which is neither above nor + below, but beside the figure}[i][\linewidth][% + [i][\linewidth][% + \dimexpr\marginparwidth+\marginparsep\relax]* + \fbox{% + \parbox[b][5\baselineskip][c]{.25\textwidth} + {% + \hspace*{\fill}\KOMAScript + \hspace*{\fill}\par + }% + } + \end{captionbeside} + \label{fig:\LabelBase.captionbeside} + \end{figure} +\end{lstcode} + \begin{figure} + \begin{captionbeside}[Example: Figure beside description]% + {A figure description which is neither above nor + below, but beside the figure}[i][\linewidth][2em]* + \fbox{% + \parbox[b][5\baselineskip][c]{.25\textwidth}{% + \hspace*{\fill}\KOMAScript\hspace*{\fill}\par}} + \end{captionbeside} + \label{fig:\LabelBase.captionbeside} + \end{figure} + The total width is thus the currently available width of + \PValue{\Macro{linewidth}}. However, this width is shifted + $\Length{marginparwidth} + \Length{marginparsep}$ to the outside. The + caption text or description is placed on the inner side beside the figure. + The figure itself is shifted 2\Unit{em} into the outer margin. + +\iffalse% Umbruchkorrekturtext + The \Macro{dimexp} macro is an \eTeX{} command. This should not be a + problem at all because \KOMAScript{} itself requires \eTeX{} and every almost + up-to-date \LaTeX{} distribution uses \eTeX already. +\fi + + \hyperref[fig:\LabelBase.captionbesidecentered]% + {Figure~\ref*{fig:\LabelBase.captionbesidecentered}} + shows a centred caption with: +\begin{lstcode} + \KOMAoption{captions}{centeredbeside} +\end{lstcode} +\iffalse % Umbruchalternativen + Even a typographical novice will immediately realize that you should + usually avoid this alignment. +\else + This is certainly not a recommended solution. +\fi + + \begin{figure} + \begin{captionbeside}[Example: Description centered beside figure]% + {A figure description which is neither above nor + below, but centred beside the figure}[i][\linewidth][2em]* + \fbox{% + \parbox[b][5\baselineskip][c]{.25\textwidth}{% + \hspace*{\fill}\KOMAScript\hspace*{\fill}\par}} + \end{captionbeside} + \label{fig:\LabelBase.captionbesidecentered} + \end{figure} + + In contrast, you can use the top-aligned format seen in + \autoref{fig:\LabelBase.captionbesidetop}. To illustrate how to shift the + baseline using \Macro{raisebox}, here is a complete example. You can apply + this not only to a substitute figure, as previously shown, but also, for + example, to \Macro{includegraphics} (see \cite{package:graphics}). +\begin{lstcode} + \documentclass[captions=topbeside]{scrbook} + \usepackage[english]{babel} + \usepackage{graphics} + \begin{document} + \chapter{An Example} + \begin{figure} + \begin{captionbeside}% + [Example: Figure title top beside]% + {A figure description which is neither above nor + below, but top beside the figure}% + [i][\linewidth][% + \dimexpr\marginparwidth+\marginparsep\relax + ]* + \raisebox{% + \dimexpr\baselineskip-\totalheight\relax + }{% + \includegraphics{examplepicture}% + }% + \end{captionbeside} + \label{fig:\LabelBase.captionbesidetop} + \end{figure} + \end{document} +\end{lstcode} + \begin{figure} + \KOMAoption{captions}{topbeside} + \begin{captionbeside}[Example: Figure title top beside]% + {A figure description which is neither above nor + below, but top beside the figure}% + [i][\linewidth] + \raisebox{\dimexpr\baselineskip-\totalheight}{% + \fbox{% + \parbox[b][5\baselineskip][c]{.25\textwidth}{% + \hspace*{\fill}\KOMAScript\hspace*{\fill}\par}}% + }% + \end{captionbeside} + \label{fig:\LabelBase.captionbesidetop} + \end{figure} +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \begin{Environment}{captionofbeside} + \Parameter{float type} + \OParameter{short title} + \Parameter{caption text} + \OParameter{placement} + \OParameter{width} + \OParameter{offset} + \begin{Body}\BodyDots\end{Body} + \end{Environment} + \labelsuffix[*]% + \begin{Environment}{captionofbeside} + \Parameter{float type} + \OParameter{short title} + \Parameter{caption text} + \OParameter{placement} + \OParameter{width} + \OParameter{offset}\PValue{*}% + \begin{Body}\BodyDots\end{Body} + \end{Environment} +\end{Declaration} +As\ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} is the case for \DescRef{\LabelBase.cmd.caption}, there is +a variant for \DescRef{\LabelBase.cmd.captionof} where the \PName{float type} +is not defined by using it within a floating environment of this type, so you +can specify a suitable environment for \DescRef{\LabelBase.env.captionbeside} +with \Environment{captionofbeside}. In contrast to +\DescRef{\LabelBase.env.captionbeside}, the \PName{float type} must be +specified as an additional, first argument.% +% +\EndIndexGroup + +\begin{Declaration} + \FloatStyle{komaabove}% + \FloatStyle{komabelow} +\end{Declaration}% +If you use\OnlyAt{\Package{float}} the \Package{float}\IndexPackage{float} +package, the appearance of the float environments is solely defined by the +\emph{float} style. This includes whether captions appear above or below. In +the \Package{float} package, there is no predefined style which gives you the +same output and offers the same setting options (see below) as \KOMAScript{}. +Therefore \KOMAScript{} defines the two additional styles, \PValue{komaabove} +and \PValue{komabelow}. When using the \Package{float} package, you can +activate these styles just like the styles +\PValue{plain}\IndexFloatstyle{plain}, \PValue{boxed}\IndexFloatstyle{boxed}, +or \PValue{ruled}\IndexFloatstyle{ruled} defined in \Package{float}. For +details refer to \cite{package:float}. The style \PValue{komaabove} inserts +\DescRef{\LabelBase.cmd.caption}, \DescRef{\LabelBase.cmd.captionabove}, and +\DescRef{\LabelBase.cmd.captionbelow} above, whereas \PValue{komabelow} +inserts them below the float content. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{captionformat} +\end{Declaration}% +In {\KOMAScript} there are various ways to change the formatting of +the caption text. The definition of different font styles has already +been explained above. The delimiter or delimiters between the label and +actual caption text is specified by the macro \Macro{captionformat}. +In contrast to all other \Macro{\dots}format commands, this is not the counter +but only the items which follow it. The original definition is: +\begin{lstcode} + \newcommand*{\captionformat}{:\ } +\end{lstcode} +You can change this too with \Macro{renewcommand}. +\begin{Example} + For some inexplicable reason, you want a dash surrounded by spaces + instead of a colon followed by a space as a label delimiter. You + therefore define: +\begin{lstcode} + \renewcommand*{\captionformat}{~--~} +\end{lstcode} +This definition should be put in the preamble of your document. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{figureformat}% + \Macro{tableformat} +\end{Declaration}% +It has already been mentioned that \DescRef{\LabelBase.cmd.captionformat} does +not contain formatting for the label itself. You should not alter this by +redefining the commands for the output of the \Macro{thefigure} or +\Macro{thetable} counters. Such a redefinition would have unwanted side +effects on the output of \Macro{ref}, the table of contents, the list of +figures, and the list of tables. Instead, {\KOMAScript} offers two +\Macro{\dots format} commands. These have the following defaults: +\begin{lstcode} + \newcommand*{\figureformat}{\figurename~\thefigure\autodot} + \newcommand*{\tableformat}{\tablename~\thetable\autodot} +\end{lstcode} +They can also be customised to your requirements with \Macro{renewcommand}. +\begin{Example} + From time to time, it is required to have captions without labels or + delimiters. With {\KOMAScript} the following definitions suffice to + achieve this: +\begin{lstcode} + \renewcommand*{\figureformat}{} + \renewcommand*{\tableformat}{} + \renewcommand*{\captionformat}{} +\end{lstcode} + It should be noted, however, that although no numbering is output, the + internal counters are nevertheless incremented. This becomes especially + important if this redefinition is applied only to selected + \Environment{figure} or \Environment{table} environments. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setcapindent}\Parameter{indent}% + \Macro{setcapindent*}\Parameter{xindent}% + \Macro{setcaphanging} +\end{Declaration}% +As mentioned previously, in the standard classes the captions are set in a +non-hanging style. In other words, in multi-line captions the second and +subsequent lines start directly beneath the label. The standard classes +provide no direct mechanism to change this behaviour. In {\KOMAScript}, on the +contrary, beginning at the second line all lines are indented by the width of +the label so that the caption text is aligned. + +You can change this behaviour, which corresponds to using +\Macro{setcaphanging}, at any time with the \Macro{setcapindent} or +\Macro{setcapindent*} command. Here the parameter \PName{indent} determines +the indentation of the second and subsequent lines. If you want a line break +after the label and before the caption text, then you can define the +indentation \PName{xindent} of the caption text with the starred version of +the command instead: \Macro{setcapindent*}. + +A negative value of \PName{indent}, on the other hand, results in a line break +before the caption text, and only the first line of the caption text, not +subsequent lines, is indented by the absolute value of \PName{indent}. + +Whether one-line captions are set the same way as multi-line captions or are +treated separately is specified with the option +\DescRef{\LabelBase.option.captions}. For details please refer to the +explanations of these option on +\DescPageRef{\LabelBase.option.captions.oneline}. + +\begin{Example} + The illustrations~\ref{fig:\LabelBase.caption.first} to + \ref{fig:\LabelBase.caption.last} show the effects of different settings. As + you can see, using a fully hanging indentation with a narrow column width is + awkward. To illustrate, the source code for the second figure is given here + with a modified caption text: +\begin{lstcode} + \begin{figure} + \setcapindent{1em} + \fbox{\parbox{.95\linewidth}{\centering{\KOMAScript}}} + \caption{Example with partially indented caption + starting from the second line} + \end{figure} +\end{lstcode} + As you can see, the formatting can also be changed locally within the + \Environment{figure} environment\IndexEnv{figure}. The change then affects + only the current figure. Subsequent figures once again use the default + settings or global settings that you set, for example, in the preamble. This + also, of course, applies to tables. + \begin{figure} + \typeout{^^J--- Ignore underfull and overfull \string\hbox:} + \addtokomafont{caption}{\small} + \addtokomafont{captionlabel}{\bfseries} + \centering% + \begin{minipage}{.9\linewidth} + \begin{minipage}[t]{.48\linewidth}\sloppy + \fbox{\parbox{.95\linewidth}{\centering{\KOMAScript}}} + \caption[Example: Default caption]% + {\sloppy With the default setting, like using + \Macro{setcaphanging}} + \label{fig:\LabelBase.caption.first} + \end{minipage} + \hspace{.02\linewidth} + \begin{minipage}[t]{.48\linewidth}\sloppy + \setcapindent{1em} + \fbox{\parbox{.95\linewidth}{\centering{\KOMAScript}}} + \caption[Example: Caption with partially hanging indention]% + {With partially hanging indentation starting from the second line + by using \Macro{setcapindent}\PParameter{1em}} + \end{minipage} + \end{minipage} + + \vspace*{2ex}\noindent% + \begin{minipage}{.9\linewidth} + \begin{minipage}[t]{.48\linewidth}\sloppy + \setcapindent*{1em} + \fbox{\parbox{.95\linewidth}{\centering{\KOMAScript}}} + \caption[Example: Caption with hanging indention and line break]% + {With hanging indentation starting from the second line and line + break before the description using + \Macro{setcapindent*}\PParameter{1em}} + \end{minipage} + \hspace{.02\linewidth} + \begin{minipage}[t]{.48\linewidth}\sloppy + \setcapindent{-1em} + \fbox{\parbox{.95\linewidth}{\centering{\KOMAScript}}} + \caption[Example: Caption with indention in the second line]% + {With indentation only in the second line and a line break + before the description using + \Macro{setcapindent}\PParameter{-1em}} + \label{fig:\LabelBase.caption.last} + \end{minipage} + \end{minipage} + \typeout{^^J--- Don't ignore underfull and overfull + \string\hbox:^^J} + \end{figure} +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setcapwidth}\OParameter{justification}\Parameter{width}% + \Macro{setcapdynwidth}\OParameter{justification}\Parameter{width}% + \Macro{setcapmargin}\OParameter{left margin}\Parameter{margin}% + \Macro{setcapmargin*}\OParameter{inside margin}\Parameter{margin} +\end{Declaration} +Using\ChangedAt{v2.8q}{% + \Class{scrbook}\and\Class{scrreprt}\and\Class{scrartcl}} these three +commands, you can specify the width and justification of the caption +text. Normally, the entire text or column width is available for the caption. + +With\important{\Macro{setcapwidth}} the \Macro{setcapwidth} command, you can +decrease this \PName{width}. The mandatory argument determines the maximum +\PName{width} of the caption. As an optional argument, you can supply exactly +one letter which specifies the horizontal justification. The possible +justifications are given in the following list: +\begin{labeling}[~--]{\quad\PValue{o}}% + \itemsep=.5\topsep plus .5\topsep minus .5\topsep + \rightskip=1em +\item[\PValue{l}] left-justified +\item[\PValue{c}] centred +\item[\PValue{r}] right-aligned +\item[\PValue{i}] aligned to the inner margin in two-sided printing +\item[\PValue{o}] aligned to the outer margin in two-sided printing +\end{labeling} +Inside and outside justification corresponds to left-aligned and right-aligned +justification, respectively, in one-sided printing. +Within\textnote{Attention!} \Package{longtable}\IndexPackage{longtable}% +\important{\Package{longtable}} tables, inside and outside justification does +not work correctly. In particular, the captions on subsequent pages of such +tables are aligned according to the format of the caption on the first page of +the table. This is a conceptual problem in the implementation of the +\Package{longtable} package. + +Note\ChangedAt{v3.20}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}\textnote{Attention!} that \Macro{setcapwidth} immediately +sets the width to the value of the \PName{width} parameter at the time of the +assignment, as \Macro{setlength} does. If\important{\Macro{setcapdynwidth}} +you instead want to use the current value of \PName{width} when the caption is +set, you should use \Macro{setcapdynwidth}. There can be significant +differences in the result if, for example, you use lengths like +\Length{linewidth} or other commands as \PName{width} arguments. + +With\important{\Macro{setcapmargin}} the \Macro{setcapmargin} command, instead +of specifying the width of the caption text, you can specify a \PName{margin} +to be set next to the caption text in addition to the normal text margin. If +you want margins with different widths on the left and right sides, you can +use the optional argument to specify a \PName{left margin} that differs from +\PName{margin}. Instead of a \PName{left margin}, the starred version +\Macro{setcapmargin*} defines an \PName{inside margin} in a two-sided layout. +The same problem arises here with with inside and outside justification inside +\Package{longtable}\IndexPackage{longtable}\important{\Package{longtable}} +tables that occurs with \Macro{setcapwidth}. Furthermore, using +\Macro{setcapmargin} or \Macro{setcapmargin*} activates the +\OptionValueRef{\LabelBase}{captions}{nooneline} option (see +\DescPageRef{\LabelBase.option.captions.nooneline}) for captions which are +typeset with this margin setting. + +You\textnote{Hint!} can also specify negative values for \PName{margin} and +\PName{left margin} or \PName{inside margin}. This has the effect of making +the caption protrude into the margin.% +\iffalse\par% Anhang wurde entfernt. +Experts\textnote{Hint!} and advanced users can find a a somewhat tricky +application of \Macro{setcapwidth} in +\iffree{\cite{book:komascript}}{\autoref{cha:floattricks}, + \autopageref{cha:floattricks}}.% +\fi% +% +\EndIndexGroup + +\begin{Declaration} + \Macro{setcaptionalignment}\OParameter{float type}\Parameter{alignment} +\end{Declaration} +Normally\ChangedAt{v3.25}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}, multi-line\textnote{alignment of multi-line captions} +captions are fully justified. This corresponds to +\Macro{setcaptionalignment}\PParameter{j}. Sometimes, however, you want a +different alignment, for example ragged right. An appropriate change is +possible at any time with \Macro{setcaptionalignment}. You can specify exactly +one of the letters listed in \autoref{tab:maincls.captionalignment} for the +\PName{alignment}. If you specify an unknown \PName{alignment}, you will +receive an error message. +% +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside} + [{Alignments for multi-line captions of floating environments}] + {\label{tab:maincls.captionalignment}% + Alignments for multi-line captions of floating environments} + [l] + \begin{tabular}[t]{ll} + \toprule + c & centred \\ + j & fully justified \\ + l & left justified \\ + r & right justified \\ + C & centred with \Package{ragged2e} \\ + J & fully justified with \Package{ragged2e} \\ + L & left justified with \Package{ragged2e} \\ + R & right justified with \Package{ragged2e} \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} + +The four possibilities with the +\Package{ragged2e}\important{\Package{ragged2e}}\IndexPackage{ragged2e} +package are only available if that package was loaded before you use +\Macro{setcaptionalignment}. Otherwise, they are converted to the +corresponding options without \Package{ragged2e}. For safety reasons, a +warning is issued in this case. + +When using this command without\textnote{without optional parameter} the +optional parameter, the result depends on whether the call occurs inside our +outside of a floating environment. Within a floating environment, the +alignment is then set for this floating environment. Outside, on the other +hand, the optional parameter is assumed to be empty. + +Using this command with an empty\textnote{empty optional parameter} optional +parameter, or outside a floating environment and also without any optional +parameter, sets the general alignment. This is used whenever the current +floating environment type does not define an alignment. + +If you only want to set the alignment of a particular type of floating +environment\textnote{with \PName{float type}} without changing the +\PName{alignment} for other types of floating environments, then the type of +floating environment, e.\,g., \PValue{figure} or \PValue{table}, is given as +the optional parameter \PName{float type}. +% +\begin{Example} + You want captions to be centred under the images even if they are + multi-line. To text this for a single image, use\textnote{in the + floating environment}: +\begin{lstcode} + \begin{figure} + \centering + \setcaptionalignment{c} + \includegraphics{example-image} + \caption{\blindtext} + \end{figure} +\end{lstcode} + Since you are satisfied with the result, you move the\textnote{in the + preamble} +\begin{lstcode} + \setcaptionalignment{c} +\end{lstcode} + command to the document preamble. Thereafter, however, you decide you do not + like this change for table captions at all. Therefore, you use\textnote{only + for figures} +\begin{lstcode} + \setcaptionalignment[figure]{c} +\end{lstcode} + to limit the centring to figures. + + A little later, you realize that the centring is not so suitable. Instead, + you now prefer to have ragged right alignment. So you change the alignment + again: +\begin{lstcode} + \setcaptionalignment[figure]{l} +\end{lstcode} + However, you do not like the fact that the lines are very different in + length. This is caused by the lack of hyphenation, causing long words to + wrap completely onto the next line, leaving large gaps. You want to allow + hyphenation as needed. This is easy to achieve with the help of the + \Package{ragged2e}\important{\Package{ragged2e}}\IndexPackage{ragged2e} + package. However, it is not enough to use +\begin{lstcode} + \usepackage{ragged2e} +\end{lstcode} + to load the package. Using the \Option{newcommands} option when loading the + package does not help. Instead, the \PName{alignment} must also be changed: +\begin{lstcode} + \usepackage{ragged2e} + \setcaptionalignment[figure]{L} +\end{lstcode} + Note\textnote{Attention!} the upper-case letter for the \PName{alignment}. +\end{Example} +\EndIndexGroup + + +\begin{Declaration} + \Option{origlongtable} +\end{Declaration}% +\BeginIndex{Package}{longtable}% +If you do not want the table captions produced by the \Package{longtable} +package (see \cite{package:longtable}) to be redefined by the {\KOMAScript} +classes, activate the \Option{origlongtable} option. This\textnote{Attention!} +option must be used in the optional argument of +\DescRef{\LabelBase.cmd.documentclass}. It cannot be used as a setting of +\DescRef{\LabelBase.cmd.KOMAoptions} or \DescRef{\LabelBase.cmd.KOMAoptions}. +% +\EndIndexGroup +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{listof}{setting} +\end{Declaration} +Normally\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} lists of floating environments\,---\,like +tables\Index{tables>list of} or figures\Index{figures>list of}\,---\,are +neither numbered nor included in the table of contents. You can find more +information about this behaviour in \autoref{sec:\LabelBase.toc}. As an +alternative to the settings \OptionValueRef{\LabelBase}{toc}{nolistof}% +\IndexOption{toc~=\textKValue{nolistof}}, +\OptionValueRef{\LabelBase}{toc}{listof}\IndexOption{toc~=\textKValue{listof}}, +and \OptionValueRef{\LabelBase}{toc}{listofnumbered}% +\IndexOption{toc~=\textKValue{listofnumbered}} mentioned there, you can also +look at this behaviour from perspective of the lists themselves. Therefore +you can achieve the same results with the settings +\OptionValue{listof}{notoc}, \OptionValue{listof}{totoc}, and +\OptionValue{listof}{numbered}. + +By default, the headings in the lists of floating environments use the topmost +level below \DescRef{\LabelBase.cmd.part}. This is the chapter level in +\Class{scrbook} and \Class{scrreprt} and the section level in +\Class{scrartcl}. By contrast,\ChangedAt{v3.06}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} +\OptionValue{listof}{leveldown}\important{\OptionValue{listof}{leveldown}} +uses the next lower level to be used instead. +\important{\OptionValue{listof}{standardlevel}}% +\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}% +\OptionValue{listof}{standardlevel} switches back to the default sectioning +level, if necessary. +\begin{Example} + In a book, you want to put the list of figures and the list of tables as + sub-lists into a common list named ``Figures and Tables''. Simply use: +\begin{lstcode} + \KOMAoption{listof}{leveldown} +\end{lstcode} + to use the section instead of the chapter level for both lists, and put the + following at the appropriate place in your document: +\begin{lstcode} + \addchap*{Figures and Tables} + \listoffigures + \listoftables +\end{lstcode} + You can find more information about the \DescRef{\LabelBase.cmd.addchap*} + command in \autoref{sec:\LabelBase.structure} on + \DescPageRef{\LabelBase.cmd.addchap*}. +\end{Example} + +Normally\ChangedAt{v2.8q}{% + \Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} the lists of +floating environments use a fixed-width space for the caption number of the +entries. At the same time, all entries are somewhat indented. This behaviour +corresponds to the +\OptionValue{listof}{graduated}\IndexOption{listof~=\textKValue{graduated}} +setting. + +If the numbers become very wide, for example because you have many tables or +figures, the space provided may at some point no longer be sufficient. +\KOMAScript{} offers the setting \OptionValue{listof}{flat}% +\important{\OptionValue{listof}{flat}}\IndexOption{listof~=\textKValue{flat}} +for lists of floating environments, comparable to +\OptionValueRef{\LabelBase}{toc}{flat}\IndexOption{toc~=\textKValue{flat}} for +the table of contents. The width required to print the number is +determined automatically and the space is adjusted accordingly. See the +\OptionValueRef{\LabelBase}{toc}{flat} option, \autoref{sec:\LabelBase.toc}, +\DescPageRef{\LabelBase.option.toc.flat} for more information about side +effects and how it works. Note\textnote{Attention!} again that you need more +than one \LaTeX{} run before the lists of floating environments reach +their final state. + +The \OptionValue{listof}{entryprefix}\ChangedAt{v3.06}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} setting automatically activates +\OptionValue{listof}{flat} too. +Normally\important{\OptionValue{listof}{entryprefix}}, it does not make sense +to add a prefix such as ``figure'' or ``table'' to each entry in the lists of +floating environments because, of course, only figures are included in the +list of figures and only tables are included in the list of tables. Such a +prefix provides no additional information and is thus omitted by default. +However, you can add such prefixes using the +\OptionValue{listof}{entryprefix} option. With this, all entries in the same +list will get the same prefix. The prefix depends on the file extension of the +auxiliary file that is used for the corresponding list. For the list of +figures, the file extension is ``\File{lof}'' and therefore +\Macro{listoflofentryname} is used. For the list of tables, the file extension +is ``\File{lot}'' and \Macro{listoflotentryname} is used. + +For the \Class{scrbook} and \Class{scrreprt}\OnlyAt{\Class{scrbook}\and + \Class{scrreprt}} classes, \KOMAScript{} adds a vertical space to the lists +of floating environments whenever a new chapter starts. This behaviour, which +also exists in the standard classes, groups the lists by chapters. In +\KOMAScript{}, it corresponds to setting \ChangedAt{v3.00}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}}% +\OptionValue{listof}{chaptergapsmall}% +\LabelOptionValue{listof}{chaptergapsmall}% +\important{\OptionValue{listof}{chaptergapsmall}}% +\IndexOption{listof~=\textKValue{chaptergapsmall}}. In this case, is uses a +fixed vertical space of 10\Unit{pt}. +With\important{\OptionValue{listof}{chaptergapline}} the +\OptionValue{listof}{chaptergapline}% +\IndexOption{listof~=\textKValue{chaptergapline}} option, you instead get a +vertical space the height of one standard text line. With +\OptionValue{listof}{nochaptergap}% +\IndexOption{listof~=\textKValue{nochaptergap}}% +\important{\OptionValue{listof}{nochaptergap}}, you can completely remove the +vertical space. The\important{\OptionValue{listof}{chapterentry}} +\OptionValue{listof}{chapterentry}% +\IndexOption{listof~=\textKValue{chapterentry}} option is a special feature. +Instead of a vertical space, the table of contents entry for the chapter is +inserted into the lists of floating environments. Note\textnote{Attention!} +that this happens even if the chapter does not contain a floating environment. +You can find a method where only chapters containing floating environments +appear in the respective lists at \cite{https://komascript.de/comment/5070}. +You can achieve a more direct control over what appears in the lists of +floating environments with the \DescRef{\LabelBase.option.chapteratlists} +option, which is explained in \autoref{sec:\LabelBase.structure}, on +\DescPageRef{\LabelBase.option.chapteratlists}. + +You can find an overview of all settings for the \Option{listof} option in +\autoref{tab:\LabelBase.listof}. + +\begin{desclist} + \desccaption[{Available values for the \Option{listof} option}]{% + Available values for the \Option{listof} option for modifying the format + and contents of the lists of floating + environments\label{tab:\LabelBase.listof}% + }{% + Available values for the \Option{listof} option (\emph{continued})% + }% + \entry{\PValue{chapterentry}, \PValue{withchapterentry}}{% + Indicates the beginning of chapters in the lists of floating environments + with copies of their table-of-contents entries.% + \IndexOption{listof~=\textKValue{chapterentry}}}% + \entry{\PValue{chaptergapline}, \PValue{onelinechaptergap}}{% + Indicates the beginning of chapters in the lists of floating environments + with a vertical space the height of one standard text line.% + \IndexOption{listof~=\textKValue{chaptergapline}}}% + \entry{\PValue{chaptergapsmall}, \PValue{smallchaptergap}}{% + Indicates the beginning of chapters in the lists of floating environments + with a small vertical space.% + \IndexOption{listof~=\textKValue{chaptergapsmall}}}% + \entry{\PValue{entryprefix}}{% + \ChangedAt{v3.06}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Adds a prefix before the number of each floating-environment list entry. + The prefix is usually language-dependent, e.\,g., in English ``Figure'' is + used for the list of figures and ``Table'' for the list of tables, each + followed by a white space.% + \IndexOption{listof~=\textKValue{entryprefix}}}% + \entry{\PValue{flat}, \PValue{left}}{% + Prints the lists of floating environments in tabular form. The caption + numbers are the first column, the caption texts the second column, and the + page numbers the third column. The space reserved for the caption numbers + depends on the previous \LaTeX{} run.% + \IndexOption{listof~=\textKValue{flat}}}% + \entry{\PValue{graduated}, \PValue{indent}, \PValue{indented}}{% + Prints the lists of floating environments in a hierarchical form. The + space reserved for the caption numbers is limited.% + \IndexOption{listof~=\textKValue{graduated}}}% + \entry{\PValue{leveldown}}{% + Uses headings that are one level lower in the sectioning hierarchy than + the default for lists of floating environments.% + \IndexOption{listof~=\textKValue{leveldown}}}% + \entry{\PValue{indenttextentries}, \PValue{indentunnumbered}, + \PValue{numberline}}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + The \PValue{numberline} property (see \autoref{sec:tocbasic.toc}, + \DescPageRef{tocbasic.cmd.setuptoc}) is set for the lists of floating + environments such as figures and tables. As a result, unnumbered entries + are left-aligned with the text of numbered entries of the same level. + However, the \KOMAScript{} classes themselves do not put unnumbered + entries in these lists. This option therefore affects only entries that + are generated not by the \KOMAScript{} classes themselves but with the + help of \DescRef{tocbasic.cmd.addxcontentsline} (see + \autoref{sec:tocbasic.toc}, \DescPageRef{tocbasic.cmd.addxcontentsline}).% + \IndexOption{toc~=\textKValue{numberline}}}% + \entry{\PValue{leftaligntextentries}, \PValue{leftalignunnumbered}, + \PValue{nonumberline}}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + The \PValue{nonumberline} property (see \autoref{sec:tocbasic.toc}, + \DescPageRef{tocbasic.cmd.setuptoc}) is set for the lists of floating + environments. This will place unnumbered entries left-aligned with the + number of numbered entries. However, the \KOMAScript{} classes themselves + do not put unnumbered entries in these lists. This option therefore + affects only entries that are generated not by the \KOMAScript{} classes + themselves but with the help of \DescRef{tocbasic.cmd.addxcontentsline} + (see \autoref{sec:tocbasic.toc}, + \DescPageRef{tocbasic.cmd.addxcontentsline}).% + \IndexOption{toc~=\textKValue{nonumberline}}}% + \entry{\PValue{nochaptergap}, \PValue{ignorechapter}}{% + The beginnings of chapters are not marked in the lists of floating + environments.% + \IndexOption{listof~=\textKValue{nochaptergap}}}% + \entry{\PValue{notoc}, \PValue{nottotoc}, \PValue{plainheading}}{% + The lists of floating environments do not generate entries in the table of + contents.% + \IndexOption{listof~=\textKValue{nottotoc}}}% + \entry{\PValue{numbered}, \PValue{totocnumbered}, \PValue{tocnumbered}, + \PValue{numberedtoc}, \PValue{numberedtotoc}}{% + The lists of floating environments receive numbered entries in the table + of contents.% + \IndexOption{listof~=\textKValue{numbered}}}% + \entry{\PValue{standardlevel}}{% + The lists use the normal sectioning level.% + \IndexOption{listof~=\textKValue{standardlevel}}}% + \entry{\PValue{totoc}, \PValue{toc}, \PValue{notnumbered}}{% + The lists of floating environment generate entries in the table of + contents, but their headings are unnumbered.% + \IndexOption{listof~=\textKValue{totoc}}}% +\end{desclist} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{listoftables}% + \Macro{listoffigures} +\end{Declaration} +These commands generate a list of tables or figures. Changes affecting these +lists will require two \LaTeX{} runs to take effect. The layout of the lists +can be influenced by the \DescRef{\LabelBase.option.listof}% +\important{\DescRef{\LabelBase.option.listof}} option with the values +\PValue{graduated} or \PValue{flat} (see +\DescPageRef{\LabelBase.option.listof}). In addition, the \PValue{listof} and +\PValue{listofnumbered} values of the \DescRef{\LabelBase.option.toc}% +\important{\DescRef{\LabelBase.option.toc}} option (see +\autoref{sec:\LabelBase.toc}), as well as the \PValue{totoc} and +\PValue{numbered} values of the \DescRef{\LabelBase.option.listof} option +described above indirectly affect these lists. + +As\textnote{Hint!} a rule, you will find the lists of the floating +environments immediately after the table of contents. In some documents, they +go into the appendix. However, the author of this guide prefers them +immediately after the table of contents.% +% +\EndIndexGroup + + +\LoadCommonFile{marginpar}% \section{Marginal Notes} + + +\section{Appendix} +\seclabel{appendix} +\BeginIndexGroup +\BeginIndex{}{Appendix} + +The appendix of a document mostly consists of supplements to the document. +Typical parts of an appendix include a bibliography, an index, and a glossary. +However you should not start an appendix for these parts alone because their +format already distinguishes them from the main document. But if there are +additional elements in the appendix, such as quoted third-party documents, +endnotes, figures, or tabulars, the standard elements such as the bibliography +should also be part of the appendix. + + +\begin{Declaration} + \Macro{appendix} +\end{Declaration}% +The appendix is started in the standard as well as the {\KOMAScript} classes +with \Macro{appendix}. Among other things, this command changes the chapter +numbering to upper-case letters while ensuring that the rules according to +\cite{DUDEN} for numbering the sectioning levels are followed (for +German-speaking regions). These rules are explained in more detail in the +description of the \DescRef{\LabelBase.option.numbers} option in +\autoref{sec:\LabelBase.structure}, \DescPageRef{\LabelBase.option.numbers}. + +The format of the chapter headings\OnlyAt{\Class{scrbook}\and + \Class{scrreprt}} in the appendix is influenced by the +\DescRef{\LabelBase.option.chapterprefix}% +\important{\DescRef{\LabelBase.option.chapterprefix}\\ + \DescRef{\LabelBase.option.appendixprefix}} and +\DescRef{\LabelBase.option.appendixprefix} options. See +\autoref{sec:\LabelBase.structure}, +\DescPageRef{\LabelBase.option.appendixprefix} for more information. + +Please\textnote{Attention!} note that \Macro{appendix} is a command, +\emph{not} an environment! This command does not expect an argument. Chapters +and sections in the appendix use \DescRef{\LabelBase.cmd.chapter} and +\DescRef{\LabelBase.cmd.section}, just as in the main text.% +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Bibliography} +\seclabel{bibliography} +\BeginIndexGroup +\BeginIndex{}{bibliography} + +The bibliography makes external sources accessible. As a rule, the +bibliography is created from an external file with a database-like structure +using the \BibTeX{} program. You can use the \BibTeX{} style to change both +the format of the entries and their sorting. If you use an additional +bibliography package like \Package{natbib}\IndexPackage{natbib}, +\Package{babelbib}\IndexPackage{babelbib}, or +\Package{biblatex}\IndexPackage{biblatex}, \KOMAScript{}'s influence over the +bibliography disappears. In such cases, you must follow the manual of the +relevant bibliography package. You can find general information about +bibliographies in \cite{lshort}. + + +\begin{Declaration} + \OptionVName{bibliography}{setting} +\end{Declaration} +For a start,\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} you can select any predefined bibliography style in +\PName{setting}. There are two such bibliography styles predefined in +\KOMAScript{}. You should not confuse them with the styles used by +\BibTeX\Index{BibTeX=\BibTeX}, which you select with +\Macro{bibstyle}. While \BibTeX{} determines both the sorting and the +contents of the bibliography, \KOMAScript{} influences only some basic +features of the bibliography and few properties of the entry format. + +The\important{\OptionValue{bibliography}{oldstyle}} +\OptionValue{bibliography}{oldstyle}% +\IndexOption{bibliography~=\textKValue{oldstyle}} option selects a compact +format for bibliography entries. In this case, using the +\DescRef{maincls-experts.cmd.newblock}\IndexCmd{newblock} command results in +only a small glue between the entries. The name comes from the fact that this +is the most common classic form of a bibliography. +In\important{\OptionValue{bibliography}{openstyle}} contrast, the +\OptionValue{bibliography}{openstyle}% +\IndexOption{bibliography~=\textKValue{openstyle}} setting selects a more +modern and open kind of bibliography. The name comes from the fact that the +\DescRef{maincls-experts.cmd.newblock} command inserts a paragraph break. The +bibliography entries appear more structured. They are less compact and seem +more relaxed or open. Information about defining new bibliography styles can +be found in the description of the \DescRef{maincls-experts.cmd.newbibstyle} +command in \autoref{sec:maincls-experts.experts}, +\DescPageRef{maincls-experts.cmd.newbibstyle}. + +In addition to the formatting style, you can select one more feature using +\PName{setting}. The bibliography is a kind of list of contents. But instead +of listing the contents of the document itself, it references external works. +With this reasoning, you could argue that the bibliography is a separate +chapter or section and therefore deserves a chapter or section number. The +\OptionValue{bibliography}{numbered}% +\important{\OptionValue{bibliography}{numbered}}% +\IndexOption{bibliography~=\textKValue{numbered}} setting does exactly that, +including creating an entry in the table of contents. In my opinion, a +traditional, annotated source list should by this reasoning be a separate +chapter too. Moreover, the bibliography is ultimately nothing you've written +yourself and so merits at most an unnumbered entry in the table of contents, +which is achieved with the \OptionValue{bibliography}{totoc}% +\IndexOption{bibliography~=\textKValue{totoc}} option. The default setting, +where the bibliography is produced as an unnumbered chapter and does not +receive an entry in the table of contents corresponds to +\OptionValue{bibliography}{nottotoc}% +\IndexOption{bibliography~=\textKValue{nottotoc}}. For more information, see +the \DescRef{\LabelBase.option.toc} option in \autoref{sec:\LabelBase.toc}, +especially the \PValue{bibliographynumbered}, \PValue{bibliography}, +and\PValue{nobibliography} values for this option on +\DescPageRef{\LabelBase.option.toc.bibliography}. + +Sometimes\ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} a document made using \Class{scrbook} or \Class{scrreprt} +will have a bibliography for every chapter rather than one bibliography for +the whole document. In that case, it makes sense for the bibliography +itself\important{\OptionValue{bibliography=leveldown}} to be not a chapter but +a section. You can achieve this using the +\OptionValue{bibliography}{leveldown}% +\IndexOption{bibliography~=\textKValue{leveldown}} option. You can also use +this if you want the bibliography to appear with other lists under a common +heading, therefore this option is also available with \Class{scrartcl}. + +You can find a summary of available values for the \Option{bibliography} +option in \autoref{tab:\LabelBase.bibliography}. Note, however, that you can +define new values with +\DescRef{maincls-experts.cmd.newbibstyle}\IndexCmd{newbibstyle}. + +\begin{table} + \caption[{Available values for the \Option{bibliography} option}]{% + Predefined values for the \Option{bibliography} option for setting the + bibliography format} + \label{tab:\LabelBase.bibliography} + \begin{desctabular} + \pventry{leveldown}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + The bibliography uses a sectioning command one level lower than + the default.% + \IndexOption{bibliography~=\textKValue{leveldown}}}% + \entry{\PValue{notoc}, \PValue{nottotoc}, \PValue{plainheading}}{% + The bibliography receives neither an entry in the table of contents nor + a number.% + \IndexOption{bibliography~=\textKValue{nottotoc}}}% + \entry{\PValue{numbered}, \PValue{tocnumbered}, \PValue{totocnumbered}, + \PValue{numberedtoc}, \PValue{numberedtotoc}}{% + The bibliography receives an entry in the table of contents and a + number.% + \IndexOption{bibliography~=\textKValue{numbered}}}% + \pventry{oldstyle}{% + The bibliography uses the classic, compact formation, where + \DescRef{maincls-experts.cmd.newblock}\IndexCmd{newblock} generates only + a horizontal glue.% + \IndexOption{bibliography~=\textKValue{oldstyle}}}% + \pventry{openstyle}{% + The bibliography uses the structured, open format where + \DescRef{maincls-experts.cmd.newblock}\IndexCmd{newblock} generates a + paragraph break.% + \IndexOption{bibliography~=\textKValue{openstyle}}}% + \pventry{standardlevel}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + The bibliography uses the standard sectioning command level.% + \IndexOption{bibliography~=\textKValue{standardlevel}}}% + \entry{\PValue{toc}, \PValue{totoc}, \PValue{notnumbered}}{% + The bibliography receives an entry in the table of contents but no + number.% + \IndexOption{bibliography~=\textKValue{totoc}}}% + \end{desctabular} +\end{table} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setbibpreamble}\Parameter{preamble} +\end{Declaration}% +You can use the \Macro{setbibpreamble} command to set a preamble for the +bibliography\Index{bibliography}. This preamble must be placed before the +command for issuing the bibliography. However, it need not be directly +in front of it. For example, it could be placed at the beginning of +the document. Like\textnote{Attention!} the +\OptionValueRef{\LabelBase}{bibliography}{totoc} and +\OptionValueRef{\LabelBase}{bibliography}{totocnumbered} options, this command +only works if you have not loaded a package which prevents this from happening +by redefining the \Environment{thebibliography} environment. Although the +\Package{natbib} package\IndexPackage{natbib} uses undocumented, internal +{\KOMAScript} macros, \Macro{setbibpreamble} could still work with the current +version of \Package{natbib} (see \cite{package:natbib}). +\begin{Example} + You want to point out that the bibliographical references are sorted + alphabetically by the names of the authors. You therefore use the following + command: +\begin{lstcode} + \setbibpreamble{References are in alphabetical order. + References with more than one author are sorted + according to the first author.\par\bigskip} +\end{lstcode} + The \Macro{bigskip}\IndexCmd{bigskip} command ensures that the + preamble and the first reference are separated by a large vertical + space.% +\end{Example}% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{BreakBibliography}\Parameter{interruption code} +\end{Declaration} +This\textnote{Attention!}\ChangedAt{v3.00}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} command exists only if the +environment \Environment{thebibliography} has not been redefined by another +package. With this instruction, you can insert a break into the +bibliography. The \PName{interruption code} will be expanded inside a +group. Such a break may be, for example, a heading using +\DescRef{\LabelBase.cmd.minisec}. Unfortunately there is currently no way to +have this command automatically generated, for example by using a special +entry in the \BibTeX{} database. Therefore, it can currently only be used by +users who edit the bibliography directly. For this reason, its usefulness is +very limited.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AfterBibliographyPreamble}\Parameter{code}% + \Macro{AtEndBibliography}\Parameter{code} +\end{Declaration} +In\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} +some cases, it may be useful to add some \PName{code} after the bibliography +preamble or just before the end of the bibliography. This is possible with the +help of these two instructions. +\begin{Example} + You want to set the bibliography not justified but ragged right. You can + achieve this with: +\begin{lstcode} + \AfterBibliographyPreamble{\raggedright} +\end{lstcode} + You can put this instruction anywhere before the bibliography. However, it is + recommended to do so in the preamble of the document or a separate package. +\end{Example} +The\textnote{Attention!} functionality of this instruction depends on +cooperation with packages modifying the bibliography, if you use such a +package\iffree{}{(see \autoref{sec:maincls-experts.coexistence}, +\DescPageRef{maincls-experts.cmd.AfterBibliographyPreamble})}.% +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Index} +\seclabel{index} +\BeginIndexGroup + +For general information about making a keyword index, see \cite{lshort}, +\cite{makeindex}, and \cite{xindy}. Using a package that redefines +commands or environments for the index \KOMAScript{}'s ability to influence +the index may disappear. This applies, for example, when using the +\Package{index}\IndexPackage{index} package, but not when using the +\Package{splitidx}\IndexPackage{splitidx} package (see +\cite{package:splitindex}). + +\begin{Declaration} + \OptionVName{index}{setting}% +\end{Declaration} +\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}% +By default or with \OptionValue{index}{default}% +\IndexOption{index~=\textKValue{default}}, the index is an unnumbered chapter +(\Class{scrbook} or \Class{scrreprt}) or section (\Class{scrartcl}) without an +entry in the table of contents. Since\important{\OptionValue{index}{totoc}} +the index usually comes last in a book or similar document, it does not +actually need an entry in the table of contents. Nevertheless, if you want to +do this, for example because you are working with a multi-index keyword +dictionary such as the one that appears in this \iffree{guide}{book}, you can +create this with the +\OptionValue{index}{totoc}\IndexOption{index~=\textKValue{totoc}} option. +You\ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} can even number the index using the +\OptionValue{index}{numbered}\IndexOption{index~=\textKValue{numbered}} +setting. See also the \DescRef{\LabelBase.option.toc} option with the +\PValue{index} or \PValue{indexnumbered} values in +\autoref{sec:\LabelBase.toc} starting at +\DescPageRef{\LabelBase.option.toc.index}. + +For example, if you create multiple indexes with +\Package{splitidx}\IndexPackage{splitidx} (see \cite{package:splitindex}), +it may be useful to group them under a common heading. To make this possible, +\OptionValue{index}{leveldown}% +\ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}\important{\OptionValue{index}{leveldown}} places the index +one sectioning level deeper than usual. In \Class{scrbook} and +\Class{scrreprt}, it is no longer a chapter but a section; with +\Class{scrartcl}, a subsection. The \OptionValue{index}{standardlevel}% +\ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}\important{\OptionValue{index}{standardlevel}} option is +the counterpart to this and cancels any instance of +\OptionValue{index}{leveldown} used previously. + +You can find a summary of the available values for the \PName{setting} of +\Option{index} in \autoref{tab:maincls.index}. + +\begin{table} + \caption{Available values for the \Option{index} option} + \label{tab:maincls.index} + \begin{desctabular} + \pventry{leveldown}{% + \ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + The index is moved down by one sectioning level.% + \IndexOption{index~=\textKValue{leveldown}}% + }% + \entry{\PValue{notoc}, \PValue{nottotoc}, \PValue{plainheading}}{% + The index does not receive an entry in the table of contents.% + \IndexOption{index~=\textKValue{nottotoc}}}% + \entry{\PValue{numbered}, \PValue{tocnumbered}, \PValue{totocnumbered}, + \PValue{numberedtoc}, \PValue{numberedtotoc}}{% + \ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + The index receives an entry in the table of contents and is numbered.% + \IndexOption{index~=\textKValue{numbered}}}% + \pventry{standardlevel}{% + \ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + The index is at the usual sectioning level.% + \IndexOption{index~=\textKValue{standardlevel}}% + }% + \entry{\PValue{toc}, \PValue{totoc}, \PValue{notnumbered}}{% + The index receives an entry in the table of contents without being + numbered.% + \IndexOption{index~=\textKValue{totoc}}}% + \end{desctabular} +\end{table} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setindexpreamble}\Parameter{preamble} +\end{Declaration}% +As with the bibliography, you can also provide a preamble to the +index. This is often the case if you have more than one index or if +you mark different kinds of references by highlighting the page +numbers in different ways. +\begin{Example} + You have a document in which terms are both defined and used. The + page numbers of definitions are in bold. Of course you want to make + your reader aware of this fact. Thus you insert a preamble for the + index: +\begin{lstcode} + \setindexpreamble{All page numbers printed in \textbf{bold} + refer to definitions of terms. Page numbers printed + normally refer to pages where the term is used.\par\bigskip} +\end{lstcode} +\end{Example} + +Note\textnote{Attention!} that the page style is changed for the first page +of the index. The page style that is applied is defined in the macro +\DescRef{\LabelBase.cmd.indexpagestyle} (see +\autoref{sec:\LabelBase.pagestyle}, +\DescPageRef{\LabelBase.cmd.indexpagestyle}). + +The usual \LaTeX{} packages and additional programs are responsible for +creating, sorting, and outputting the index.% +\iftrue % Umbruchoptimierung + \iffree{}{ % + For example, the \Package{imakeidx}\IndexPackage{imakeidx} package + (see \cite{package:imakeidx}), which among other things automates the + invocation of the \File{makeindex} or \File{xindy} program, is highly + recommended. This eliminates a common source of error, particularly for + \LaTeX{} beginners.% + } + {\KOMAScript}, like the standard classes, provides only the basic macros + and environments for them.% +\fi +% +\EndIndexGroup +% +\EndIndexGroup +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "english" +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrdatetime.tex b/macros/latex/contrib/koma-script/source-doc/english/scrdatetime.tex new file mode 100644 index 0000000000..7acd9f2bf7 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrdatetime.tex @@ -0,0 +1,443 @@ +% ====================================================================== +% scrdatetime.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrdatetime.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrpage2 of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber scrpage2 in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrdatetime.tex} + [$Date: 2018-03-30 11:57:25 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (chapter: scrdate, scrtime)] +\translator{Markus Kohm\and Gernot Hassenpflug\and Karl Hagen} + +% Date of the translated German file: 2018-02-05 + +\chapter{The Day of the Week with \Package{scrdate}} +\labelbase{scrdate} +\BeginIndexGroup +\BeginIndex{Package}{scrdate} + +Originally, the \Package{scrdate} package could only give the day of the week +for the current date. Nowadays, it offers this and more for any date in the +Gregorian calendar. + +\begin{Declaration} + \Macro{CenturyPart}\Parameter{year}\\% + \Macro{DecadePart}\Parameter{year}% +\end{Declaration}% +The\ChangedAt{v3.05a}{\Package{scrdate}} \Macro{CenturyPart} command returns +the value of the century digits\,---\,thousands and hundreds\,---\,of a +\PName{year}. The \Macro{DecadePart} command, on the other hand, gives the +value of the remaining digits, i.\,e. the tens and the units. The +\PName{year} can have any number of digits. You can assign the value directly +to a counter or use it for calculations with +\Macro{numexpr}\IndexCmd{numexpr}. To output\textnote{Attention!} it as an +Arabic number, you should prefix it with \Macro{the}\IndexCmd{the}. + +\begin{Example} + You want to calculate and print the century of the current year. +\begin{lstcode} + The year \the\year\ is year \the\DecadePart{\year} + of the \engord{\numexpr\CenturyPart{\year}+1\relax} century. +\end{lstcode} + The result would be: + \begin{quote} + The year \the\year\ is year \the\DecadePart{\year} + of the \engordnumber{\numexpr\CenturyPart{\year}+1\relax} century. + \end{quote} + This example uses the \Package{engord}\IndexPackage{engord} package. + See \cite{package:engord} for more information. +\end{Example} + +Note\textnote{Attention!} that the counting method used here treats the year +2000 as year~0\,---\,and therefore the first year\,---\,of the 21st~century. +If necessary, however, you can make a correction with \Macro{numexpr}, as +shown for the ordinal number in the example.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DayNumber}\Parameter{year}\Parameter{month}\Parameter{day}\\% + \Macro{ISODayNumber}\Parameter{ISO-date}% +\end{Declaration}% +These\ChangedAt{v3.05a}{\Package{scrdate}} two commands return the value of +the day-of-the-week\Index{day>of the week} number for any date. They differ +only in the method of specifying the date. While the \Macro{DayNumber} command +requires the \PName{year}, \PName{month}, and \PName{day} as separate +parameters, the \Macro{ISODayNumber} command expects an \PName{ISO-date} as a +single argument, \PName{ISO-date}, using the ISO notation +\PName{year}\texttt{-}\PName{month}\texttt{-}\PName{day}. It does not matter +if the \PName{month} or \PName{day} have one or two digits. You can use the +result of both commands to assign directly to a counter or for calculations +using \Macro{numexpr}\IndexCmd{numexpr}. To print\textnote{Attention!} it as +an Arabic number, you should prefix it with \Macro{the}\IndexCmd{the}. + +\begin{Example} + You want to know the number of the day of the week of the 1st~May~2027. +\begin{lstcode} + The 1st~May~2027 has \the\ISODayNumber{2027-5-1} + as the number of the day of the week. +\end{lstcode} + The result will be: + \begin{quote} + The 1st~May~2027 has \the\ISODayNumber{2027-5-1} + as the number of the day of the week. + \end{quote} +\end{Example} + +It is particularly worth noting that you can even step a specified number of +days into the future or or the past from a given date. +\begin{Example} + You want to know the number of the day of the week 12~days from now + and 24~days before the 24th~December~2027. +\begin{lstcode} + In 12~days, the number of the day of the week + will be \the\DayNumber{\year}{\month}{\day+12}, and + 24~days before the 24th~December~2027 it will be + \the\ISODayNumber{2027-12-24-24}. +\end{lstcode} + The result could be, for example: + \begin{quote} + In 12~days, the number of the day of the week + will be \the\DayNumber{\year}{\month}{\day+12}, and + 24~days before the 24th~December~2027 it will be + \the\ISODayNumber{2027-12-24-24}. + \end{quote} +\end{Example} + +The days of the week are numbered as follows: Sunday\,=\,0, Monday\,=\,1, +Tuesday\,=\,2, Wednesday\,=\,3, Thursday\,=\,4, Friday\,=\,5, and +Saturday\,=\,6.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DayNameByNumber}\Parameter{number of the day of the week}\\% + \Macro{DayName}\Parameter{year}\Parameter{month}\Parameter{day}\\% + \Macro{ISODayName}\Parameter{ISO-date}% +\end{Declaration}% +Usually\ChangedAt{v3.05a}{\Package{scrdate}} you are less interested in the +number of the day of the week than in its name. Therefore, the +\Macro{DayNameByNumber} command returns the name of the day of the week +corresponding to a day-of-the-week number. This number can be the result, for +example, of \Macro{DayNumber} or \Macro{ISODayNumber}. The two commands +\Macro{DayName} and \Macro{ISODayName} directly return the name of the day of +the week of a given date. + +\begin{Example} + You want to know the name of the day of the week of the 24th~December~2027. +\begin{lstcode} + Please pay by \ISODayName{2027-12-24}, + 24th~December~2027 the amount of \dots. +\end{lstcode} + The result will be: + \begin{quote} + Please pay by \ISODayName{2027-12-24}, + 24th~December~2027 the amount of \dots. + \end{quote} +\end{Example} + +Once again, it is particularly worth noting that you can perform calculations, +to a certain extent: +\begin{Example} + You want to know the names of the day of the week 12~days from now + and 24~days before the 24th~December~2027. +\begin{lstcode} + In 12~days, the name of the day of the week + will be \DayName{\year}{\month}{\day+12}, and + 24~days before the 24th~December~2027 it will be + \ISODayName{2027-12-24-24}, while two weeks + and three days after a Wednesday will be a + \DayNameByNumber{3+2*7+3}. +\end{lstcode} + The result could be, for example: + \begin{quote} + In 12~days, the name of the day of the week + will be \DayName{\year}{\month}{\day+12}, and + 24~days before the 24th~December~2027 it will be + \ISODayName{2027-12-24-24}, while two weeks + and three days after a Wednesday will be a + \DayNameByNumber{3+2*7+3}. + \end{quote} +\end{Example}% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ISOToday}% + \Macro{IsoToday}% + \Macro{todaysname}% + \Macro{todaysnumber}% +\end{Declaration}% +In the previous examples, the current date was always specified cumbersomely +using the \TeX{} registers \Macro{year}\IndexCmd{year}, +\Macro{month}\IndexCmd{month}, and \Macro{day}\IndexCmd{day}. The +\Macro{ISOToday}\ChangedAt{v3.05a}{\Package{scrdate}} and \Macro{IsoToday} +commands directly return the current date in ISO-notation. These commands +differ only in the fact that \Macro{ISOToday} always outputs a two-digit month +and day, while \Macro{IsoToday} outputs single-digit numbers for values less +than 10. The \Macro{todaysname} command directly returns the name of the +current day of the week, while \Macro{todaysnumber} returns the number of the +current day of the week. You can find more information about using this value +in the explanations of \DescRef{scrdate.cmd.DayNumber} and +\DescRef{scrdate.cmd.ISODayNumber}. + +\begin{Example} + I want to show you on what day of the week this document was typeset: +\begin{lstlisting} + This document was created on a \todaysname. +\end{lstlisting} + This will result, for example, in: + \begin{quote} + This document was created on a \todaysname. + \end{quote} +\end{Example} + +For languages that have a case system for nouns, note that the package cannot +decline words. The terms are given in the form appropriate for displaying a +date in a letter, which is the nominative singular for the currently supported +languages. Given this limitation, the example above will not work correctly if +translated directly into some other languages. + +\begin{Explain} + The\textnote{Hint!} names of the weekdays in \Package{scrdate} all have + initial capital letters. If you need the names completely in lower case, for + example because that is the convention in the relevant language, simply wrap + the command with the \LaTeX{} \Macro{MakeLowercase}\IndexCmd{MakeLowercase}% + \important{\Macro{MakeLowercase}} command: + % Umbruchkorrektur: listings +\begin{lstcode} + \MakeLowercase{\todaysname} +\end{lstcode} + This converts the whole argument into lower-case letters. Of course, you can + also do this for + \DescRef{scrdate.cmd.DayNameByNumber}\IndexCmd{DayNameByNumber}, + \DescRef{scrdate.cmd.DayName}\IndexCmd{DayName}, and + \DescRef{scrdate.cmd.ISODayName}\IndexCmd{ISODayName} commands described + above.% +\end{Explain}% +\EndIndexGroup + + +\begin{Declaration} + \Macro{nameday}\Parameter{name} +\end{Declaration}% +Just as you can directly modify the output of \Macro{today} with +\DescRef{maincls.cmd.date}\IndexCmd{date}, so you can change the output of +\DescRef{scrdate.cmd.todaysname} to \PName{name} with \Macro{nameday}. +\begin{Example} + You change the current date to a fixed value using + \DescRef{maincls.cmd.date}. You are not interested in the actual name of the + day, but want only to show that it is a workday. So you write: +\begin{lstlisting} + \nameday{workday} +\end{lstlisting} + After this, the previous example will result in: + \begin{quote}\nameday{workday} + This document was created on a \todaysname. + \end{quote} +\end{Example} +There's no corresponding command to change the result of +\DescRef{scrdate.cmd.ISOToday}\IndexCmd{ISOToday} or +\DescRef{scrdate.cmd.IsoToday}\IndexCmd{IsoToday}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{newdaylanguage}\Parameter{language}% + \Parameter{Monday}\Parameter{Tuesday}% + \Parameter{Wednesday}\Parameter{Thursday}% + \Parameter{Friday}\Parameter{Saturday} + \Parameter{Sunday}% +\end{Declaration} +Currently the \Package{scrdate} package recognizes the following languages: +\begin{itemize}\setlength{\itemsep}{.5\itemsep} +\item Croatian (\PValue{croatian}), +\item Czech (\PValue{czech}\ChangedAt{v3.13}{\Package{scrdate}}), +\item Danish (\PValue{danish}), +\item Dutch (\PValue{dutch}), +\item English (\PValue{american}\ChangedAt{v3.13}{\Package{scrdate}}, + \PValue{australian}, \PValue{british}, \PValue{canadian}, \PValue{english}, + \PValue{UKenglish}, and USenglish), +\item Finnish (\PValue{finnish}), +\item French (\PValue{acadian}, \PValue{canadien}, + \PValue{francais}\ChangedAt{v3.13}{\Package{scrdate}}, and \PValue{french}), +\item German (\PValue{austrian}\ChangedAt{v3.08b}{\Package{scrdate}}, + \PValue{german}, \PValue{naustrian}, \PValue{ngerman}, + \PValue{nswissgerman}, and + \PValue{swissgerman}\ChangedAt{v3.13}{\Package{scrdate}}), +\item Italian (\PValue{italian}), +\item Norwegian (\PValue{norsk}), +\item Polish (\PValue{polish}\ChangedAt{v3.13}{\Package{scrdate}}), +\item Slovak (\PValue{slovak}), +\item Spanish (\PValue{spanish}), +\item Swedish (\PValue{swedish}). +\end{itemize} +You can also configure it for additional languages. To do so, the first +argument of \Macro{newdaylanguage} is the name of the language, and the other +arguments are the names of the corresponding days of the week. + +In the current implementation, it does not matter whether you load +\Package{scrdate} before or after \Package{ngerman}\IndexPackage{ngerman}, +\Package{babel}\IndexPackage{babel}, or similar packages. In each case the +correct language will be used provided it is supported. + +\begin{Explain} + To be more precise, as long as you select a language in a way that is + compatible with \Package{babel}\IndexPackage{babel}, \Package{scrdate} will + use the correct language. If this is not the case, you will get (US) English + names. +\end{Explain} + +Of course, if you create definitions for a language that was previously +unsupported, please mail them to the author of \KOMAScript{}. There is a good +chance that future versions of \KOMAScript{} will add support for that +language.% +\EndIndexGroup +% +\EndIndexGroup + + +\chapter{The Current Time with \Package{scrtime}} +\labelbase{scrtime} +\BeginIndexGroup +\BeginIndex{Package}{scrtime} + +This package lets you find the current time. Starting with version~3.05, the +package also supports the option interface already familiar from the +\KOMAScript{} classes and various other \KOMAScript{} packages. See, for +example, \autoref{sec:typearea.options} for more information. + +\begin{Declaration}% + \Macro{thistime}\OParameter{delimiter}% + \Macro{thistime*}\OParameter{delimiter} +\end{Declaration}% +\Macro{thistime} returns the current time\Index{time} in hours and minutes. +The delimiter between the values of hour, minutes and seconds can be given in +the optional argument. The default is the character ``\PValue{:}''. + +\Macro{thistime*} works in almost the same way as \Macro{thistime}. The only +difference is that, unlike \Macro{thistime}, \Macro{thistime*} does not add a +leading zero to the minute field when its value is less than 10. Thus, with +\Macro{thistime} the minute field has always two places. +\begin{Example} + The line +\begin{lstlisting} + Your train departs at \thistime. +\end{lstlisting} + results, for example, in: + \begin{quote} + Your train departs at \thistime. + \end{quote} + or: + \begin{quote} + Your train departs at 23:09. + \end{quote} + \bigskip + In contrast to the previous example a line like: +\begin{lstlisting} + This day is already \thistime*[\ hours and\ ] minutes old. +\end{lstlisting} + results in: + \begin{quote} + This day is already \thistime*[\ hours and\ ] minutes old. + \end{quote} + or: + \begin{quote} + This day is already 12 hours and 25 minutes old. + \end{quote} +\end{Example} +\EndIndexGroup + + +\begin{Declaration}% + \Macro{settime}\Parameter{time} +\end{Declaration}% +\Macro{settime} sets the output of \DescRef{scrtime.cmd.thistime} and +\DescRef{scrtime.cmd.thistime*} to a fixed value. In this case, the optional +parameter of \DescRef{scrtime.cmd.thistime} or \DescRef{scrtime.cmd.thistime*} +is ignored, since the complete string returned by +\DescRef{scrtime.cmd.thistime} or \DescRef{scrtime.cmd.thistime*} has been +explicitly defined. \Macro{settime}.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{12h}{simple switch}% +\end{Declaration}% +\BeginIndex{Option}{24h}% +With the \Option{12h}\ChangedAt{v3.05a}{\Package{scrtime}} option, you can +select whether to print the time given by \DescRef{scrtime.cmd.thistime} and +\DescRef{scrtime.cmd.thistime*} in 12- or 24-hour format. The option accepts +the values for simple switches listed in \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch}. Using the option without a value is +equivalent to \OptionValue{12h}{true}, and therefore activates the +12-hour-format. The default, however, is \Option{24h}. + +You can set this option globally in the optional argument of +\DescRef{typearea.cmd.documentclass}, as a package option in the optional +argument of \DescRef{typearea.cmd.usepackage}, or even after loading the +package using \DescRef{typearea.cmd.KOMAoptions} or +\DescRef{typearea.cmd.KOMAoption} (see, e.\,g. \autoref{sec:typearea.options}, +\DescPageRef{typearea.cmd.KOMAoptions}). However the option no longer has any +effect on the if you call \DescRef{scrtime.cmd.settime}. After invoking this +command, the time is output only with the value and in the format specified +there. + +For\textnote{Attention!} the sake of compatibility with earlier versions of +\Package{scrtime}, the option \Option{24h} will switch to 24-hour format if +used in the optional argument of \Macro{documentclass} or \Macro{usepackage}. +However, you should not use this option any longer.% +\EndIndexGroup +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrextend.tex b/macros/latex/contrib/koma-script/source-doc/english/scrextend.tex new file mode 100644 index 0000000000..5504ee4b0d --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrextend.tex @@ -0,0 +1,222 @@ +% ====================================================================== +% scrextend.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrextend.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Package scrextend for Document Writers +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Paket scrextend fuer Dokument-Autoren +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{scrextend.tex} + [$Date: 2018-04-09 10:14:11 +0200 (Mon, 09 Apr 2018) $ + KOMA-Script package scrextend] +\translator{Markus Kohm\and Karl Hagen} + +% Date of the translated German file: 2018-01-24 + +\chapter[{\KOMAScript{} Features for Other Classes with \Package{scrextend}}] + {Using Basic Features of the \KOMAScript{} Classes in Other Classes with the + \Package{scrextend} Package} +\labelbase{scrextend} +\BeginIndexGroup% +\BeginIndex{Package}{scrextend}% + +There are some features that are common to all \KOMAScript{} classes. This +applies not only to the \Class{scrbook}, \Class{scrreprt}, and +\Class{scrartcl} classes, which are intended to replace the standard classes +\Class{book}, \Class{report}, and \Class{article}, but also to a large extend +the \KOMAScript{} class \Class{scrlttr2}, the successor to \Class{scrlettr}, +which is intended for letters. These basic features, which can be found in the +classes mentioned above, are also provided by package \Package{scrextend} from +\KOMAScript{} version~3.00 onward. This\textnote{Attention!} package should +not be used with \KOMAScript{} classes. It is intended for use with other +classes only. If you attempt to load the package with a \KOMAScript{} class, +\Package{scrextend} will detect this and reject loading it with a warning +message. + +The fact that \hyperref[cha:scrlttr2]{\Package{scrletter}}% +\IndexPackage{scrletter} can be used not only with \KOMAScript{} classes but +also with the standard classes is partly due to \Package{scrextend}. If +\hyperref[cha:scrlttr2]{\Package{scrletter}} detects that it is not being used +with a \KOMAScript class, it automatically loads \Package{scrextend}. Doing +so makes all required \KOMAScript{} classes available. + +Of course, there is no guarantee that \Package{scrextend} will work with all +classes. The package has been designed primarily to extend the standard +classes and those derived from them. In any case, before you use +\Package{scrextend}, you should first make sure that the class you are using +does not already provide the feature you need. + +In addition to the features described in this chapter, there are a few more +that are primarily intended for authors of classes and packages. These can be +found in \autoref{cha:scrbase}, starting on \autopageref{cha:scrbase}. The +\hyperref[cha:scrbase]{\Package{scrbase}}% +\important{\hyperref[cha:scrbase]{\Package{scrbase}}}\IndexPackage{scrbase} +package documented there is used by all \KOMAScript{} classes and the +\Package{scrextend} package. + +All \KOMAScript{} classes and the \Package{scrextend} package also load the +\hyperref[cha:scrlfile]{\Package{scrlfile}}% +\important{\hyperref[cha:scrlfile]{\Package{scrlfile}}}\IndexPackage{scrlfile} +package described in \autoref{cha:scrlfile} starting on +\autopageref{cha:scrlfile}. Therefore the features of this package are also +available when using \Package{scrextend}. + +\iftrue % Umbruchkorrekturtext +In contrast, only the \KOMAScript{} classes \Class{scrbook}, \Class{scrreprt}, +and \Class{scrartcl} load the \hyperref[cha:tocbasic]{\Package{tocbasic}} +package (see \autoref{cha:tocbasic} starting on \autopageref{cha:tocbasic}), +which is designed for authors of classes and packages. For this reason, the +features defined there are found only in those classes and not in +\Package{scrextend}. Of course you can still use +\hyperref[cha:tocbasic]{\Package{tocbasic}} together with +\Package{scrextend}.% +\fi + +\LoadCommonFile{options}% \section{Early or late Selection of Options} + +\LoadCommonFile{compatibility}% \section{Compatibility with Earlier Versions of \KOMAScript} + + +\section{Optional, Extended Features} +\seclabel{optionalFeatures} + +The \Package{scrextend} package provides some optional, extended features. +These features are not available by default but can be activated. These +features are optional because, for example, they may conflict with features of +the standard classes of other commonly used packages. + +\begin{Declaration} + \OptionVName{extendedfeature}{feature} +\end{Declaration} +With this option, you can activate an extended \PName{feature} of +\Package{scrextend}. This option is available only while loading +\Package{scrextend}. You must therefore specify this option in the optional +argument of \DescRef{\LabelBase.cmd.usepackage}\PParameter{scrextend}. % +\iffree{% + An overview of all available features is shown in + \autoref{tab:scrextend.optionalFeatures}. + + \begin{table} + \caption[{Available extended features of + \Package{scrextend}}]{Overview of the optional extended + features of \Package{scrextend}} + \label{tab:scrextend.optionalFeatures} + \begin{desctabular} + \entry{\PName{title}}{% + title pages have the additional features of the \KOMAScript{} classes; + this applies not only to the commands for the title page but also to + the \DescRef{\LabelBase.option.titlepage} option (see + \autoref{sec:scrextend.titlepage}, from + \autopageref{sec:scrextend.titlepage})% + }% + \end{desctabular} + \end{table} +}{% + \par% + Currently the only available extended \PName{feature} is + \PValue{title}\IndexOption[indexmain]{extendedfeature~=\textKValue{title}}% + \important{\OptionValue{extendedfeature}{title}}. + This \PName{feature} gives title pages the features of the \KOMAScript{} + classes, as described in \autoref{sec:scrextend.titlepage} starting on + \autopageref{sec:scrextend.titlepage}.% +}% +% +\EndIndexGroup + + +\LoadCommonFile{draftmode}% \section{Draft Mode} + +\LoadCommonFile{fontsize}% + +\LoadCommonFile{textmarkup}% \section{Text Markup} + +\LoadCommonFile{titles}% \section{Document Title Pages} + +\LoadCommonFile{oddorevenpage}% \section{Detection of Odd and Even Pages} + +\section{Choosing a Predefined Page Style} +\seclabel{pagestyle} + +One of the basic features of a document is the page +style\Index[indexmain]{page>style}. In \LaTeX{}, the page style primarily +determines the content of headers and footers. The \Package{scrextend} package +does not define any page styles itself. Instead it uses the page styles of the +\LaTeX{} kernel. + + +\begin{Declaration} + \Macro{titlepagestyle} +\end{Declaration}% +\Index{title>page style}% +On some pages \DescRef{maincls.cmd.thispagestyle}\IndexCmd{thispagestyle} +automatically selects a different page style. Currently, \Package{scrextend} +only does this for title pages, and only if +\OptionValueRef{\LabelBase}{extendedfeature}{title} has been used (see +\autoref{sec:scrextend.optionalFeatures}, +\DescPageRef{scrextend.option.extendedfeature}). In this case the page style +specified in \DescRef{maincls.cmd.thispagestyle} will be used. The default for +\DescRef{maincls.cmd.thispagestyle} is +\PageStyle{plain}\IndexPagestyle{plain}. This page style is defined by the +\LaTeX{} kernel, so it should always be available.% +\EndIndexGroup + +\LoadCommonFile{interleafpage}% \section{Interleaf Pages} + +\LoadCommonFile{footnotes}% \section{Footnotes} + +\LoadCommonFile{dictum}% \section{Dicta} + +\LoadCommonFile{lists}% \section{Lists} + +\LoadCommonFile{marginpar}% \section{Margin Notes} +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% ispell-local-dictionary: "english" +%%% coding: us-ascii +%%% TeX-master: "../guide.tex" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrhack.tex b/macros/latex/contrib/koma-script/source-doc/english/scrhack.tex new file mode 100644 index 0000000000..a7dfac605c --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrhack.tex @@ -0,0 +1,264 @@ +% ====================================================================== +% scrhack.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrhack.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrhack of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------------- +% +% Kapitel ueber scrhack in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrhack.tex} + [$Date: 2018-03-27 11:46:14 +0200 (Tue, 27 Mar 2018) $ + KOMA-Script guide (chapter: scrhack)] +\translator{Markus Kohm\and Karl Hagen} + +% Date of the translated German file: 2018-02-05 +\chapter{Improving Third-Party Packages with \Package{scrhack}} +\labelbase{scrhack} + +\BeginIndexGroup +\BeginIndex{Package}{scrhack} +Some packages from other authors do not work well with \KOMAScript{}. It is +often very tedious for the author of \KOMAScript{} to convince the authors of +these packages to make specific improvements. This also applies to packages +whose development has been discontinued. That's why the \Package{scrhack} was +created. This package alters the commands and definitions of other to work +better with \KOMAScript{}. Some changes are also useful when using other +classes. + +\section{Development Status} +\label{scr:scrhack.draft} + +Although this package has been part of \KOMAScript{} for long time and is used +by many users, there's one problem with it. Redefining macros from third-party +packages depends on knowing the exact definition and use of those macros. This +also means that it depends on specific versions of those packages. If you use +a unknown version of such a package, \Package{scrhack} may not be able to +execute the required patch. In extreme cases, patching an unknown version can +lead to an error. + +Because \Package{scrhack} must be continuously modified to accommodate new +releases of third-party packages, it can never be considered complete. +Therefore \Package{scrhack} will remain permanently in a beta version. +Although its use will generally be a benefit, its correct functioning cannot +be permanently guaranteed. + +\LoadCommonFile{options}% \section{Early or late Selection of Options} + +\section{Using \Package{tocbasic}} +\seclabel{improvement} + +In the early days of \KOMAScript{}, users wanted to handle lists of floating +environments created with the +\Package{float}\IndexPackage{float}\important{\Package{float}} package in the +same way as the list of figures and list of tables created by \KOMAScript{} +itself. At that time the author of \KOMAScript{} contacted the author of +\Package{float} to propose an interface to support such an extension. A +somewhat modified form of that interface was implemented with the +\Macro{float@listhead}\IndexCmd[indexmain]{float@listhead} and +\Macro{float@addtolists}\IndexCmd[indexmain]{float@addtolists} commands. + +Later it became apparent that these two commands were not flexible enough to +fully support all of \KOMAScript's capabilities. Unfortunately, the author of +\Package{float} had already ceased development by that point, so further +changes to this package cannot be expected. + +Other package authors have also adopted these two commands, and it became +apparent that the implementation in some packages, including \Package{float}, +means that all these packages can only be loaded in a specific order, even +though they are otherwise unrelated to each other. + +To overcome all these disadvantages and problems, \KOMAScript{} no longer +officially supports this old interface. Instead, \KOMAScript{} warns if the +old interface is used. At the same time, the +\Package{tocbasic}\IndexPackage{tocbasic}\important{\Package{tocbasic}} +package (see \autoref{cha:tocbasic}) has been designed and implemented as a +central interface for managing of table of contents and similar content lists. +This package provides many more advantages and features than the two old +commands. + +Although the effort to use this package is very small, so far the authors of +most of the packages that use the old interface have not made any adjustments. +Therefore \Package{scrhack} contains appropriate modifications of the +\Package{float}\IndexPackage{float}\important{\Package{float}, +\Package{floatrow}, \Package{listings}}, +\Package{floatrow}\IndexPackage{floatrow}, and +\Package{listings}\IndexPackage{listings} packages. Merely loading +\Package{scrhack} is sufficient to make these packages recognize not only the +setting of the \KOMAScript{} option +\DescRef{maincls.option.listof}\IndexOption{listof~=\PName{setting}}, but also +to react to the language switching features of the +\Package{babel}\IndexPackage{babel} package. You can find more information +about the features available by switching packages to \Package{tocbasic} in +\autoref{sec:tocbasic.toc}. + +If you do not want this modification for any of the packages, or if it causes +problems, you can deactivate it selectively with the +\OptionValue{float}{false}\IndexOption[indexmain]{float~=\textKValue{false}}, +\OptionValue{floatrow}{false}\IndexOption[indexmain]{floatrow~=\textKValue{false}}, +or +\OptionValue{listings}{false}\IndexOption[indexmain]{listings~=\textKValue{false}} +option. Note\textnote{Attention!} that changing these options after loading +the associated package has no effect! + + +\section{Incorrect Assumptions about \Macro{@ptsize}} +\seclabel{ptsize} + +Some packages assume that the class-internal macro +\Macro{@ptsize}\IndexCmd{@ptsize} both is defined and expands to an integer. +For compatibility, \KOMAScript{} defines \Macro{@ptsize} even if the basic +font size is something other than 10\Unit{pt}, 11\Unit{pt}, or 12\Unit{pt}. +\KOMAScript{} also allows non-integer font sizes. So \Macro{@ptsize} can, of +course, also expand to a non-integer number. + +One\ChangedAt{v3.17}{\Package{scrhack}} of the packages that cannot cope with +a non-integer \Macro{@ptsize} is +\Package{setspace}\IndexPackage[indexmain]{setspace}. Additionally, the values +set by this package are always dependent on the basic font size, even if the +setting is made in the context of another font size. The \Package{scrhack} +package solves both problems by redefining \Macro{onehalfspacing} and +\Macro{doublespacing} to set the spacing relative to the actual font size. + +If you do not want this modification for the package, or if it causes +problems, you can deactivate it selectively with the +\OptionValue{setspace}{false}\IndexOption[indexmain]{setspace~=\textKValue{false}} +option. Note\textnote{Attention!} that changing this option after loading +\Package{setspace} has no effect! Likewise, if you use \Package{setspace} with +either the \Option{onehalfspacing} or \Option{doublespacing} option, you must +load \Package{scrhack} first. + + +\section{Older Versions of \Package{hyperref}} +\seclabel{hyperref} + +Versions of \Package{hyperref} before 6.79h set the link +anchors after the heading of the starred versions of commands like +\DescRef{maincls.cmd.part*}, \DescRef{maincls.cmd.chapter*}, etc. instead of +before them. Since then, this problem has been resolved at the suggestion of +\KOMAScript{}'s author. But because the change took more than a year, a patch +was added to \Package{scrhack}. Although this can also be deactivated with +\OptionValue{hyperref}{false}, you should instead use the current +\Package{hyperref} release. In this case \Package{scrhack} automatically +deactivates this unnecessary patch.% + + +\section{Inconsistent Handling of \Length{textwidth} and \Length{textheight}} +\seclabel{lscape} + +The\ChangedAt{v3.18}{\Package{scrhack}} +\Package{lscape}\IndexPackage[indexmain]{lscape} package defines a +\Environment{landscape}\IndexEnv{landscape} environment to set the page +contents, but not the header or footer in landscape mode. Inside this +environment, \Length{textheight}\IndexLength{textheight} is set to the value +of \Length{textwidth}, but \Length{textwidth} is not set to the former value +of \Length{textheight}. This is inconsistent. As far as I know, +\Length{textwidth} is left unchanged because setting it to \Length{textheight} +could interfere with other packages or user commands. But changing +\Length{textheight} also has this potential, and indeed it breaks, for +example, \Package{showframe}\IndexPackage{showframe} and +\Package{scrlayer}\IndexPackage{scrlayer}. Thus it would be best if +\Length{textheight} too remained unchanged. \Package{scrhack} uses the +\Package{xpatch} package (see \cite{package:xpatch}) to modify the +\Macro{landscape} environment's start macro appropriately. + +If you do not want this modification, or if it causes problems, you can +deactivate it with the +\OptionValue{lscape}{false}\IndexOption[indexmain]{lscape~=\textKValue{false}} +option. Note\textnote{Attention!} that changing \Option{lscape} subsequently +with \DescRef{\LabelBase.cmd.KOMAoption}\IndexCmd{KOMAoption} or +\DescRef{\LabelBase.cmd.KOMAoptions}\IndexCmd{KOMAoptions} has an effect only +if it was not \PValue{false} while loading \Package{lscape}. + +Incidentally, the \Package{pdflscape}\IndexPackage[indexmain]{pdflscape} +package also uses \Package{lscape}, so \Package{scrhack} affects the +functioning of this package too.% + + +\section{Special Case \Package{nomencl}} +\label{sec:nomencl} + +The\ChangedAt{v3.23}{\Package{scrhack}} hack for the +\Package{nomencl}\IndexPackage[indexmain]{nomencl} represents a somewhat +special case. First, it ensures that the optional table of contents entry for +the nomenclature observes the \OptionValueRef{maincls}{toc}{indentunnumbered} +option. Somewhat incidentally, it also reserves the file extensions \File{nlo} +and \File{nls} for the owner \PValue{nomencl} (see +\DescRef{tocbasic.cmd.addtotoclist}, \autoref{sec:tocbasic.basics}, +\DescPageRef{tocbasic.cmd.addtotoclist}). + +It also changes the \Environment{thenomenclature}\IndexEnv{thenomenclature} +environment to use +\DescRef{tocbasic.cmd.tocbasic@listhead}\IndexCmd{tocbasic@listhead} for the +heading (see \autoref{sec:tocbasic.internals}, +\DescPageRef{tocbasic.cmd.tocbasic@listhead}). In this way, the hack lets you +set various attribute for the \File{nls} extension using +\DescRef{tocbasic.cmd.setuptoc}\IndexCmd{setuptoc}% +\important{\DescRef{tocbasic.cmd.setuptoc}}. For example, not only can you +enter the nomenclature in the table of contents with +\DescRef{tocbasic.cmd.setuptoc}\PParameter{nls}\PParameter{numbered}, but you +can also number it immediately. You can find more about +\DescRef{tocbasic.cmd.setuptoc} and its available settings in +\autoref{sec:tocbasic.toc}, starting on \DescPageRef{tocbasic.cmd.setuptoc}. +As a small but important side effect, this patch also gives the nomenclature +also matching running head, if automatic running heads are activated, for +example by using the \DescRef{maincls.pagestyle.headings} page style. + +This rather simple patch is an example of how packages that do not define +floating environments can still benefit from \Package{tocbasic}. However, you +do not want this change, or if it causes problems, you can deactivate it with +the \OptionValue{nomencl}{false}% +\IndexOption[indexmain]{nomencl~=\textKValue{false}} option. +The\textnote{Achtung!} setting of the option when \Package{nomencl} is loaded +is crucial! Later changes to the option with +\DescRef{\LabelBase.cmd.KOMAoption} or \DescRef{\LabelBase.cmd.KOMAoptions} +have no influence and will lead to a corresponding warning.% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% ispell-local-dictionary: "english" +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrjura.tex b/macros/latex/contrib/koma-script/source-doc/english/scrjura.tex new file mode 100644 index 0000000000..fb782ca3dc --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrjura.tex @@ -0,0 +1,1165 @@ +% ====================================================================== +% scrjura.tex +% Copyright (c) Markus Kohm, 2011-2019 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrjura.tex +% Copyright (c) Markus Kohm, 2011-2019 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrjura of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber scrjura in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{scrjura.tex}% + [$Date: 2019-01-15 08:29:44 +0100 (Tue, 15 Jan 2019) $ + KOMA-Script guide (chapter: scrjura)] + +\translator{Alexander Willand\and Markus Kohm\and Karl Hagen} + +% Date of the translated German file: 2018-07-20 + +\chapter{Support for the Law Office with \Package{scrjura}} +\labelbase{scrjura} +\BeginIndexGroup +\BeginIndex{Package}{scrjura} + +If you want to write a contract\Index{contract}, the articles of association +for a company or an association, a law, or a legal commentary, the package +\Package{scrjura} will provide typographical support. Although +\Package{scrjura} is intended to provide general help for legal documents, the +contract is the central element of the package. Particular attention is paid +to clauses, titles, and numbered provisions\,---\,if there are several of +them in a clause\,---, numbered sentences, entries in the table of +contents, and cross references according to German standards. + +The package has been developed in cooperation with Dr Alexander Willand of +Karlsruhe. Many of its features go back to constructive inquiries from Prof +Heiner Richter of the Hochschule Stralsund University of Applied Sciences. + +Note\textnote{Attention!} that the package works with +\Package{hyperref}\IndexPackage{hyperref}. Nevertheless, \Package{hyperref} +has to be loaded after \Package{scrjura} as usual. + +\LoadCommonFile{options}% \section{Early or late Selection of Options} + +\LoadCommonFile{textmarkup}% \section{Text Markup} + +\section{Table of Contents} +\label{sec:scrjura.toc} + +The headings of clauses can also be added automatically to the table of +contents, if desired. + +\begin{Declaration} + \OptionVName{juratotoc}{simple switch}% + \OptionVName{juratotoc}{level number} +\end{Declaration} +Clauses\Index{clause} are shown in the table of contents only if their +\PName{level number} is less than or equal to the +\DescRef{maincls.counter.tocdepth}% +\important{\DescRef{maincls.counter.tocdepth}}\IndexCounter{tocdepth} counter +(see \autoref{sec:maincls.toc}, \DescPageRef{maincls.counter.tocdepth}). By +default, the \PName{level number} is 10000, which is also used if the option +is switched off with the \PName{simple +switch}\important{\OptionValue{juratotoc}{false}} (see +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}). Because the +\DescRef{maincls.counter.tocdepth} counter usually has a one-digit value, +clause entries are therefore not normally displayed in the table of contents. + +If you switch on the option using the \PName{simple switch}% +\important{\OptionValue{juratotoc}{true}}, the \PName{level number} 2 is used +so that clauses are shown in the table of contents on the same level as +subsections. For the default setting of \DescRef{maincls.counter.tocdepth}, +clauses are then shown in all \KOMAScript{} classes.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{juratocindent}{indent}% + \OptionVName{juratocnumberwidth}{number width} +\end{Declaration} +These two options can be used to determine the indentation for the clause +entries in the table of contents as well as the space reserved for the numbers +there. The defaults are the same as for subsection entries in +\Class{scrartcl}.% +\EndIndexGroup + + +\section{Environment for Contracts} +\label{sec:scrjura.contract} + +\BeginIndexGroup +\BeginIndex{}{contract} +The essential mechanisms of \Package{scrjura} are available only inside the +contract environment. + +\begin{Declaration} + \begin{Environment}{contract}\end{Environment} +\end{Declaration} +Currently, this is the one and only environment for \Package{scrjura}. Using +it activates automatic numbering of paragraphs and the +\DescRef{\LabelBase.cmd.Clause} and \DescRef{\LabelBase.cmd.SubClause} +commands, which will be documented below, are given concrete form. + +The\textnote{Attention!} \DescRef{\LabelBase.env.contract} environment must +not be nested within itself. Within a document, however, you can use the +environment several times. The clauses within these environments are treated +as if they were within a single environment. As a result, ending the +environment really only temporarily interrupts it, and the old environment is +continued by the beginning of a new environment. However, you cannot end the +environment within a clause.% +\EndIndexGroup + + +\begin{Declaration} + \Option{contract} +\end{Declaration} +The whole document becomes a contract if you use this option while loading the +package with \DescRef{\LabelBase.cmd.usepackage}% +\important{\DescRef{\LabelBase.cmd.usepackage}} or as a global option with +\DescRef{\LabelBase.cmd.documentclass}% +\important{\DescRef{\LabelBase.cmd.documentclass}}. The document then behaves +exactly as if it contained one \DescRef{\LabelBase.env.contract} environment. + +Note\textnote{Attention!} that you cannot set the \Option{contract} option +with \DescRef{\LabelBase.cmd.KOMAoption} or +\DescRef{\LabelBase.cmd.KOMAoptions}. Thus you cannot switch the option off +again. Instead, you should use a \DescRef{\LabelBase.env.contract} environment +directly.% +\EndIndexGroup + + +\subsection{Clauses} +\label{sec:scrjura.clause} +\index{section|seealso{clause}} + +Clauses\footnote{% + In English, a ``clause'' in a legal document is a section, paragraph, or + phrase that relates to a particular point. Although it is common in English + to also use the terms ``article'' or ``section'' for what we here call a + ``clause'', we use the latter term throughout to avoid confusion with the + \Class{article} class and the \DescRef{maincls.cmd.section} and + \DescRef{maincls.cmd.paragraph} sectioning divisions of most document + classes.} in a legal sense are defined in \Package{scrjura} only within +contracts, that is inside the \DescRef{\LabelBase.env.contract} environment or +other environments declared with +\DescRef{\LabelBase.cmd.DeclareNewJuraEnvironment} (see +\autoref{sec:\LabelBase.newenv}, +\DescPageRef{\LabelBase.cmd.DeclareNewJuraEnvironment}). + +\begin{Declaration} + \Macro{Clause}\OParameter{options}% + \Macro{SubClause}\OParameter{options} +\end{Declaration} +These are the most important commands inside of a contract. Without using any +additional \PName{options}, \Macro{Clause} creates the heading of a clause, +which consists of the sign »\S«, followed by its number. In contrast, +\Macro{SubClause} creates the heading of a clause with the last number used by +\Macro{Clause} and adds a lower-case letter. \Macro{SubClause} is mainly +intended for cases where an act or a contract is amended and not only are +clauses changed or deleted but new clauses are inserted between existing ones +without completely changing the numbering. + +Both commands accept a a comma-separated list of \PName{options}. An overview +of the available properties is shown in \autoref{tab:scrjura.Clause.options}. +The most important of them will be discussed in more detail. + +\begin{table} + \caption{Available properties for the optional argument of \Macro{Clause} and + \Macro{SubClause}} + \label{tab:scrjura.Clause.options} + \begin{desctabular} + \entry{\Option{dummy}}{% + The heading will not be printed but is counted in the automatic + numbering.% + }% + \entry{\OptionVName{head}{running head}}{% + If running heads are active, this \PName{running head} is used instead of + the clause \PName{title}.% + }% + \entry{\Option{nohead}}{% + The running head stays unchanged.% + }% + \entry{\Option{notocentry}}{% + Does not make an entry into the table of contents.% + }% + \entry{\OptionVName{number}{number}}{% + Uses \PName{number} for the output of the clause number.% + }% + \entry{\OptionVName{preskip}{skip}}{% + Changes the vertical \PName{skip} before the clause heading.% + }% + \entry{\OptionVName{postskip}{skip}}{% + Changes the vertical \PName{skip} after the clause heading.% + }% + \entry{\OptionVName{title}{title}}{% + The clause \PName{title} will be printed in addition to the clause + number. This is also used as the default for the \PName{running head} + and the \PName{entry} in the table of contents.% + }% + \entry{\OptionVName{tocentry}{entry}}{% + Regardless of the clause \PName{title}, an \PName{entry} into the + table of contents will be made, if such entries are activated.% + }% + \end{desctabular} +\end{table} + +By default, a skip of two lines is inserted before the heading and a skip of +one line afterwards. You can change the size of these skips with the +\Option{preskip}\important[i]{\Option{preskip}, \Option{postskip}} and +\Option{postskip} options. The new values apply not only to the current +clause but from the current clause until the end of the current contract +environment. You can also make the appropriate settings in advance with +\begin{flushleft}\quad\small + \textbf{\Macro{setkeys}}\PParameter{contract}% + \PParameter{preskip=\PName{skip},\\ + \normalsize\quad\small + \hspace{11.5em}postskip=\PName{skip}} +\end{flushleft} +regardless of the specific clause and outside of a contract environment. You +can also set these options inside the preamble after loading +\Package{scrjura}, but you cannot set them while loading the package or by +using \DescRef{\LabelBase.cmd.KOMAoptions} or +\DescRef{\LabelBase.cmd.KOMAoption}. + +\BeginIndex{FontElement}{contract.Clause}\LabelFontElement{contract.Clause}% +\BeginIndex{FontElement}{Clause}\LabelFontElement{Clause}% +By default, clause headings use the font style +\Macro{sffamily}\Macro{bfseries}\Macro{large}. You can change this font style +at any time using the +\FontElement{contract.Clause}\important{\FontElement{contract.Clause}} element +with \DescRef{\LabelBase.cmd.setkomafont}% +\important[i]{\DescRef{\LabelBase.cmd.setkomafont}, +\DescRef{\LabelBase.cmd.addtokomafont}} and +\DescRef{\LabelBase.cmd.addtokomafont} (see \autoref{sec:maincls.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}). Inside the +\DescRef{\LabelBase.env.contract} environment, you can also use +\FontElement{Clause}\important{\FontElement{Clause}} instead of +\FontElement{contract.Clause}.% +\EndIndex{FontElement}{Clause}% +\EndIndex{FontElement}{contract.Clause} + +With the \Option{title}\important[i]{\Option{title}, \Option{head}, + \Option{tocentry}}, \Option{head}, and \Option{tocentry} options, you can +title a clause in addition to the number. You\textnote{Attention!} should put +the value of each options inside curly brackets. Otherwise, for example, +commas which are meant to be part of the value will be confused with the +delimiters between different options. Empty values for \Option{head} and +\Option{tocentry} cause empty entries. If you want to avoid an entry, use the +\Option{nohead}\important[i]{\Option{nohead}, \Option{notocentry}} and +\Option{notocentry} options. + +Instead of consecutive numbers, you can also set a clause number manually with +the \Option{number}\important{\Option{number}} option. However, this does not +affect the numbers of the subsequent clauses. Empty numbers are not possible. +Fragile commands inside \PName{number} have to be protected with +\Macro{protect}. You\textnote{Attention!} should use only numbers and letters +as a \Option{number}. + +With the \Option{dummy}\important{\Option{dummy}} option, you can suppress the +output of the whole heading of a clause. The automatic numbering, however, +will still count this clause. In this way, you can skip an automatically +numbered clause with\textnote{Example} +\begin{lstcode} + \Clause{dummy} +\end{lstcode} +in case the clause corresponding clause has been deleted in a later version of +a contract. + +Note\textnote{Attention!} that the \Option{dummy} option only accepts the +values \PValue{true} and \PValue{false}. All other values are usually ignored, +but can lead to an error message in the worst case scenario.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{Clauseformat}\Parameter{number} +\end{Declaration} +As already mentioned, clauses and subclauses are normally numbered. The number +is formatted with the help of the \Macro{Clauseformat} command, which expects +the number as the only argument. The default is the following: +\begin{lstcode} + \newcommand*{\Clauseformat}[1]{\S~#1} +\end{lstcode} +This produces the section mark, \Macro{S}\IndexCmd{S} (\S), followed by a +non-breaking space and the number. If you redefine this command, be sure it +remains expandable.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{juratitlepagebreak}{simple switch} +\end{Declaration}% +Usually, page breaks are prohibited within heading of all kinds. However, some +lawyers require page breaks within clause headings. You can allow such a break +by using \Option{juratitlepagebreak}\important{\Option{juratitlepagebreak}}. +You can find the available values for \PName{simple switch} in +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}.% +\EndIndexGroup + +\begin{Declaration} + \OptionVName{clausemark}{value} +\end{Declaration}% +Since clauses are a subordinate structure with independent numbering, they do +not produce running heads by default. You can, however, create running heads +with various settings. You can find the available \PName{values} and their +meanings in \autoref{tab:scrjura.clausemark}.% +% +\begin{table} + \caption{Available values for the \Option{clausemark} option to activate + running heads}% + \label{tab:scrjura.clausemark}% + \begin{desctabular} + \entry{\PValue{both}}{% + Clauses generate left and right marks for running heads, if the document + provides automatic running heads.% + \IndexOption{clausemark~=\textKValue{both}}% + }% + \entry{\PValue{false}, \PValue{off}, \PValue{no}}{% + Clauses do not generate marks for running heads and therefore do not + change running heads.% + \IndexOption{clausemark~=\textKValue{false}}% + }% + \entry{\PValue{forceboth}}{% + Clauses use \DescRef{maincls.cmd.markboth} to generate left and right + marks for running heads even if the document does not provide automatic + running heads for the current page style.% + \IndexOption{clausemark~=\textKValue{forceboth}}% + }% + \entry{\PValue{forceright}}{% + Clauses use \DescRef{maincls.cmd.markright} to generate right marks for + running heads even if the document does not provide automatic running + heads for the current page style.% + \IndexOption{clausemark~=\textKValue{forceright}}% + }% + \entry{\PValue{right}}{% + Clauses generate right marks for running heads, if the document provides + automatic running heads.% + \IndexOption{clausemark~=\textKValue{right}}% + }% + \end{desctabular} +\end{table} +% +\EndIndexGroup + + +\subsection{Paragraphs} +\label{sec:scrjura.par} +\BeginIndexGroup +\BeginIndex{}{paragraph>numbering}% +Within clauses, \Package{scrjura} usually numbers paragraphs automatically. +With this, the paragraphs provide a powerful structuring element, similar to +\DescRef{maincls.cmd.paragraph} or \DescRef{maincls.cmd.subparagraph} in +normal documents. For this reason, contracts usually use a vertical skip +between paragraphs. The \Package{scrjura} package does not provide its own +mechanism for this. Instead, it uses the \DescRef{maincls.option.parskip}% +\IndexOption{parskip}\important{\DescRef{maincls.option.parskip}} option of +the \KOMAScript{} classes (see \autoref{sec:maincls.parmarkup}, +\DescPageRef{maincls.option.parskip}). + + +\begin{Declaration} + \OptionVName{parnumber}{value} +\end{Declaration} +The default numbering of paragraphs is \OptionValue{parnumber}{auto} and +\OptionValue{parnumber}{true}. Sometimes you may need to disable the automatic +numbering. You can do this with \OptionValue{parnumber}{false}% +\important{\OptionValue{parnumber}{false}}% +\IndexOption{parnumber~=\textKValue{false}}. In this case, only the sentence +numbering is reset. + +To implement this option, it has been necessary to hook into the +paragraph-building mechanism of \LaTeX. In some rare cases, this can have a +negative effect. If so, you can undo the change with +\OptionValue{parnumber}{manual}% +\important{\OptionValue{parnumber}{manual}}% +\IndexOption{parnumber~=\textKValue{manual}}. On the other hand, \LaTeX{} +itself sometimes undoes the change. In those cases you can activate it again +with \OptionValue{parnumber}{auto}% +\important{\OptionValue{parnumber}{auto}}% +\IndexOption{parnumber~=\textKValue{auto}}. + +Clauses that consist of a single paragraph do not automatically receive a +paragraph number. For this to work, there must not be two clauses with an +identical number in a document. However should you ever need such numbering, +you should switch to another contract environment (see +\DescRef{\LabelBase.cmd.DeclareNewJuraEnvironment}, +\autoref{sec:\LabelBase.newenv}, +\DescPageRef{\LabelBase.cmd.DeclareNewJuraEnvironment}). +Note\textnote{Attention!} that the number of paragraphs in a clause is not +available before the end of the clause. Therefore you need a least two +\LaTeX{} runs before the automatic paragraph numbering is correct.% +\EndIndexGroup + + +\begin{Declaration} + \Counter{par}% + \Macro{thepar}% + \Macro{parformat}% + \Macro{parformatseparation} +\end{Declaration}% +For numbering the paragraphs inside a clause we use the \Counter{par} counter. +The output of \Macro{thepar} will display an Arabic number, because the +default is \Macro{arabic}\PParameter{par}. \Macro{parformat} provides the +format, which is \Macro{thepar} in rounded brackets. When numbering a +paragraph manually, you should also use \Macro{parformat}. It makes sense to +call \Macro{parformat} with a subsequent \Macro{parformatseparation}, or at +least a \Macro{nobreakspace} or tilde. + +With\ChangedAt{v0.7}{\Package{scrjura}} automatic numbering, \Macro{parformat} +is followed by \Macro{parformatseparation}, which currently consists of +\Macro{nonbreakspace}, the non-breakable space. + +\BeginIndex{FontElement}{parnumber}\LabelFontElement{parnumber}% +The paragraph number is usually printed using the currently active font. +However, you can change this default for the \FontElement{parnumber} element +at any time with \DescRef{\LabelBase.cmd.setkomafont}% +\important[i]{\DescRef{\LabelBase.cmd.setkomafont}, +\DescRef{\LabelBase.cmd.addtokomafont}} and +\DescRef{\LabelBase.cmd.addtokomafont} (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}).% +\EndIndex{FontElement}{parnumber}% + +Note\textnote{Attention!} that \Package{scrjura} assumes internally that +\Macro{thepar} is an Arabic number. Therefore you should definitely not +redefine it!% +\EndIndexGroup + + +\begin{Declaration} + \Macro{withoutparnumber} +\end{Declaration} +If the paragraph number is not printed, \Package{scrjura} executes the +\Macro{withoutparnumber} command at the beginning of the new paragraph. The +initial definition of this command is empty. This means it is a kind of dummy +command that does nothing. It has been implemented because of a user request. +Most users can ignore this command.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ellipsispar}\OParameter{number}% + \Macro{parellipsis} +\end{Declaration} +Sometimes\ChangedAt{v0.7}{\Package{scrjura}}\,---\,particularly in comparative +commentaries\,---\,it is desirable to omit paragraphs but to mark the +omission. Those omitted paragraphs\Index{paragraph>omission} should be taken +into account by the paragraph counter. The package \Package{scrjura} provides +the command \Macro{ellipsispar} to do this. + +By default, \Macro{ellipsispar} omits precisely one paragraph. Using the +optional argument, you can omit multiple paragraphs. In any case, the output +shows just one unnumbered paragraph, which consists only of the ellipsis +defined by \Macro{parellipsis}. The automatic numbering of paragraphs takes +the \PName{number} of omitted paragraphs into account. +\begin{Example} + Suppose you are writing a comment on the German\footnote{Please remember, + this translation does not refer to an existing law but is only an example + of how you might realise such a commentary with \Package{scrjura}.} penal + code, but only on paragraph 3 of \S~2. Nevertheless, you'd like to indicate + the omission indirectly. You can do this with: +\begin{lstcode} + \documentclass[parskip=half]{scrartcl} + \usepackage{scrjura} + \begin{document} + \begin{contract} + \Clause{title={Temporal application},number=2} + \ellipsispar[2] + + If the law that applies at the time the criminal act is + committed is changed before the verdict, then the most + lenient law shall be applicable. + + \ellipsispar[3] + \end{contract} + \end{document} +\end{lstcode} + To see the result, just give it a try. +\end{Example} + +The ellipsis is by default \Macro{textellipsis}\IndexCmd{textellipsis}, if +such a command is defined. If not, \Macro{dots} is used. You can redefine +\Macro{parellipsis} at any time with \Macro{renewcommand}.% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Sentences} +\label{sec:scrjura.sentence} + +\BeginIndexGroup% +\BeginIndex{}{sentence>number}% +Paragraphs in contracts consist of one or more sentences, some of which may +also be numbered. However, as automatic numbering is cumbersome and +error-prone, it has not yet been implemented in +\Package{scrjura}. Semi-automatic numbering, however, is supported. + +\begin{Declaration} + \Counter{sentence} + \Macro{thesentence} + \Macro{sentencenumberformat} + \Macro{Sentence} +\end{Declaration} +Manual numbering of sentences is done with the \Macro{Sentence} command. It +adds one to the \Counter{sentence} counter. By default, +\Macro{sentencenumberformat}\ChangedAt{v3.26}{\Package{scrjura}} prints +\Macro{thesentence} as an Arabic number in superscript. + +\BeginIndex{FontElement}{sentencenumber}\LabelFontElement{sentencenumber}% +The\ChangedAt{v3.26}{\Package{scrjura}} sentence number is usually printed +using the currently active font. However, you can change this default for the +\FontElement{parnumber} element at any time with +\DescRef{\LabelBase.cmd.setkomafont}% +\important[i]{\DescRef{\LabelBase.cmd.setkomafont}, + \DescRef{\LabelBase.cmd.addtokomafont}} and +\DescRef{\LabelBase.cmd.addtokomafont} (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}).% +\EndIndex{FontElement}{sentencenumber}% + +Using\textnote{Hint!} \Package{babel}\IndexPackage{babel} offers an easy way +to define a shorthand for \Macro{Sentence}:% +\phantomsection\label{sec:scrjura.shorthandexample}% +\begin{lstcode}[moretexcs={useshorthands,defineshorthand}] + \useshorthands{'} + \defineshorthand{'S}{\Sentence\ignorespaces} +\end{lstcode} +With this definition, any space after \lstinline|'S| will be ignored. You can +even use the dot as an abbreviation for a dot and a new sentence number: +\begin{lstcode}[moretexcs={useshorthands,defineshorthand}] + \defineshorthand{'.}{. \Sentence\ignorespaces} +\end{lstcode} +For details regarding \Macro{useshorthands} and \Macro{defineshorthands}, +please consult the manual of the \Package{babel} package (see +\cite{package:babel}). You can find an example of their application in +\autoref{sec:scrjura.example}, \autopageref{sec:scrjura.example}.% +\EndIndexGroup +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Cross-References} +\label{sec:scrjura.ref} + +The conventional mechanism to set cross-references using +\Macro{label}\IndexCmd{label}\important{\Macro{label}}, \Macro{ref}, and +\Macro{pageref} does not suffice for clauses, paragraphs, and sentences. +Therefore \Package{scrjura} provides additional commands. + +\begin{Declaration} + \Macro{ref}\Parameter{label}% + \Macro{refL}\Parameter{label}% + \Macro{refS}\Parameter{label}% + \Macro{refN}\Parameter{label} +\end{Declaration} +The commands \Macro{refL}, \Macro{refS}, and \Macro{refN} give a full +reference to clause, paragraph and sentence. \Macro{refL} is a long text, +\Macro{refS} a short text, and \Macro{refN} an abbreviated, numeric form. +\Macro{ref} defaults to \Macro{refL}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{refClause}\Parameter{label}% + \Macro{refClauseN}\Parameter{label} +\end{Declaration} +These commands reference a clause without displaying the paragraph or +sentences. \Macro{refClause} puts a section mark (\S) in front of the +reference, while \Macro{refClauseN} does not.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{refPar}\Parameter{label}% + \Macro{refParL}\Parameter{label}% + \Macro{refParS}\Parameter{label}% + \Macro{refParN}\OParameter{number format}\Parameter{label} +\end{Declaration} +You can reference just a paragraph with \Macro{refParL}, \Macro{refParS} and +\Macro{refParN}. The differences between the forms correspond to the +differences between \DescRef{\LabelBase.cmd.refL}, +\DescRef{\LabelBase.cmd.refN} and \DescRef{\LabelBase.cmd.refS}. A feature +worth noting is the optional argument of \Macro{refParN}. Usually the numeric +reference to a paragraph uses a Roman number. You can, however, specify a +different \PName{number format} in the optional argument. This option +primarily makes sense to use Arabic numbers. By default, \Macro{refPar} is +\Macro{refParL}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{refSentence}\Parameter{label}% + \Macro{refSentenceL}\Parameter{label}% + \Macro{refSentenceS}\Parameter{label}% + \Macro{refSentenceN}\Parameter{label} +\end{Declaration} +You can reference a sentence with \Macro{refSentenceL}, \Macro{refSentenceS}, +or \Macro{refSentenceN}. Again, there is a long text form, a short text form, +and a numerical form. By default, \Macro{refSentence} is +\Macro{refSentenceL}.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{ref}{value} +\end{Declaration} +The results of \DescRef{\LabelBase.cmd.ref}, \DescRef{\LabelBase.cmd.refPar}, +and \DescRef{\LabelBase.cmd.refSentence} depend on the \PName{value} of the +\Option{ref} option. The defaults are \DescRef{\LabelBase.cmd.refL}, +\DescRef{\LabelBase.cmd.refParL} and \DescRef{\LabelBase.cmd.refSentenceL}. +You can find the available values and their meaning in +\autoref{tab:scrjura.ref}.% +% +\begin{table} +%\begin{desclist} +% \desccaption + \caption[{% + Available values for the \Option{ref} option to configure the + cross-reference format% + }]{% + Available values for the \Option{ref} option to configure the + cross-reference format of \DescRef{\LabelBase.cmd.ref}, + \DescRef{\LabelBase.cmd.refPar}, and \DescRef{\LabelBase.cmd.refSentence}% + \label{tab:scrjura.ref}% + }% + \begin{desctabular} + \entry{\PValue{long}}{% + A combination of \PValue{parlong} and \PValue{sentencelong}.% + \IndexOption{ref~=\textKValue{long}}% + }% + \entry{\PValue{numeric}}{% + A combination of \PValue{parnumeric} and \PValue{sentencenumeric}.% + \IndexOption{ref~=\textKValue{numeric}}% + }% + \entry{\PValue{clauseonly}, \PValue{onlyclause}, \PValue{ClauseOnly}, + \PValue{OnlyClause}}{% + A combination of \PValue{paroff} and \PValue{sentenceoff}. Note that + \DescRef{\LabelBase.cmd.refPar} and \DescRef{\LabelBase.cmd.refSentence} + produce empty results!% + \IndexOption{ref~=\textKValue{long}}% + }% + \entry{\PValue{parlong}, \PValue{longpar}, \PValue{ParL}}{% + Paragraphs are referenced in long textual form.% + \IndexOption{ref~=\textKValue{parlong}}% + }% + \entry{\PValue{parnumeric}, \PValue{numericpar}, \PValue{ParN}}{% + Paragraphs are referenced in simple numerical form.% + \IndexOption{ref~=\textKValue{parnumeric}}% + }% + \entry{\PValue{paroff}, \PValue{nopar}}{% + Paragraphs have no reference. Note that \DescRef{\LabelBase.cmd.refPar} + produces an empty result!% + \IndexOption{ref~=\textKValue{paroff}}% + }% + \entry{\PValue{parshort}, \PValue{shortpar}, \PValue{ParS}}{% + Paragraphs are referenced in short textual form.% + \IndexOption{ref~=\textKValue{parshort}}% + }% + \entry{\PValue{sentencelong}, \PValue{longsentence}, \PValue{SentenceL}}{% + Sentences are referenced in long textual form.% + \IndexOption{ref~=\textKValue{parlong}}% + }% + \entry{\PValue{sentencenumeric}, \PValue{numericsentence}, + \PValue{SentenceN}}{% + Sentences are referenced in simple numeric form.% + \IndexOption{ref~=\textKValue{sentencenumeric}}% + }% + \entry{\PValue{sentenceoff}, \PValue{nosentence}}{% + Sentences have no reference. Note that + \DescRef{\LabelBase.cmd.refSentence} produces an empty result!% + \IndexOption{ref~=\textKValue{sentenceoff}}% + }% + \entry{\PValue{sentenceshort}, \PValue{shortsentence}, + \PValue{SentenceS}}{% + Sentences are referenced in short textual form.% + \IndexOption{ref~=\textKValue{sentenceshort}}% + }% + \entry{\PValue{short}}{% + A combination of \PValue{parshort} and \PValue{sentenceshort}.% + \IndexOption{ref~=\textKValue{value}}% + }% +\end{desctabular} +\end{table} + +\begin{Example} + Suppose you always want to reference paragraphs in the form ``paragraph 1 + in clause 1''. As there is no predefined command for this, you have + to create your own definition from the available options. You can achieve + this easily with:% +\begin{lstcode} + \newcommand*{\refParM}[1]{% + paragraph~\refParN[arabic]{#1} + in clause~\refClauseN{#1}% + } +\end{lstcode} + This new command can be used in the same way as + \DescRef{\LabelBase.cmd.refParL}.% +\end{Example}% + +You can find examples of results of the basic commands in +\autoref{tab:scrjura.refexamples}.% +% +\begin{table} + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside}{Example outputs of the \Option{ref}-independent + cross-reference commands}[l] + \begin{tabular}[t]{ll} + \toprule + Command & Example output \\ + \midrule + \DescRef{\LabelBase.cmd.refL}\Parameter{label} & § 1 paragraph 1 sentence 1 \\ + \DescRef{\LabelBase.cmd.refS}\Parameter{label} & § 1 par. 1 sent. 1 \\ + \DescRef{\LabelBase.cmd.refN}\Parameter{label} & § 1 I 1. \\ + \DescRef{\LabelBase.cmd.refClause}\Parameter{label} & § 1 \\ + \DescRef{\LabelBase.cmd.refClauseN}\Parameter{label} & 1 \\ + \DescRef{\LabelBase.cmd.refParL}\Parameter{label} & paragraph 1 \\ + \DescRef{\LabelBase.cmd.refParS}\Parameter{label} & par. 1 \\ + \DescRef{\LabelBase.cmd.refParN}\Parameter{label} & I \\ + \DescRef{\LabelBase.cmd.refParN}\POParameter{arabic}\Parameter{label} & 1 \\ + \DescRef{\LabelBase.cmd.refParN}\POParameter{roman}\Parameter{label} & i \\ + \DescRef{\LabelBase.cmd.refSentenceL}\Parameter{label} & sentence 1 \\ + \DescRef{\LabelBase.cmd.refSentenceS}\Parameter{label} & sent. 1 \\ + \DescRef{\LabelBase.cmd.refSentenceN}\Parameter{label} & 1. \\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:scrjura.refexamples} +\end{table} +\EndIndexGroup + + +\section{Additional Environments} +\label{sec:scrjura.newenv} + +Some users do not use \Package{scrjura} to draft contracts or commentaries on +individual laws but to examine different types of laws, which may not +necessarily use the section prefix (\S) before the title of each clause but +perhaps something like ``Art.'' or ``IAS'', and so forth. An independent +counter is also required for each of these different clause types. + +\begin{Declaration} + \Macro{DeclareNewJuraEnvironment}\Parameter{name}\OParameter{options}% + \Parameter{start commands}\Parameter{end commands} +\end{Declaration} +You\ChangedAt{v0.9}{\Package{scrjura}} can use this command to define new and +independent environments for contracts or other legal texts. The argument +\PName{name} is the name of the new environment, of course. The \PName{start +commands} are commands which will be executed at the beginning of the +environment, as if they were added directly after +\Macro{begin}\Parameter{name}. Correspondingly \PName{end commands} will be +executed at the end of the environment, as if added directly before +\Macro{end}\Parameter{name}. Without any \PName{options} the new environment +behaves like the \DescRef{\LabelBase.env.contract} environment, but with its +own counters. It is possible to set \PName{options} in a comma-separated list. +See \autoref{tab:\LabelBase.DeclareNewJuraEnvironment} for the currently +supported \PName{options}. + +\begin{desclist} + \desccaption{Options provided by \Macro{DeclareNewJuraEnvironment} for new + contract environments\label{tab:\LabelBase.DeclareNewJuraEnvironment}}% + {Options of \Macro{DeclareNewJuraEnvironment} (\emph{continued})}% + \entry{\OptionVName{Clause}{command}}{% + Defines the \PName{command} to which the \DescRef{\LabelBase.cmd.Clause} + command is mapped within the environment. This \PName{command}, like the + one documented for \DescRef{\LabelBase.env.contract}, expects exactly one + argument. To use it correctly requires advanced knowledge of the + \Package{scrjura}'s internal functioning. Furthermore, the requirements + for the \PName{command} may change in future versions. Therefore it is + recommended not to use this option!% + }% + \entry{\OptionVName{ClauseFont}{commands}}{% + \leavevmode\BeginIndex{FontElement}{\PName{Name}.Clause}% + \LabelFontElement{\PName{Name}.Clause}% + If this option is used, a new + \FontElement{\PName{Name}.Clause}\IndexFontElement{\PName{Name}.Clause} + element is defined using + \DescRef{maincls-experts.cmd.newkomafont}\IndexCmd{newkomafont}, with the + \PName{commands} used as its default setting. If the element was + previously defined as an alias (see + \DescRef{maincls-experts.cmd.aliaskomafont} in + \autoref{sec:maincls-experts.experts}, + \DescPageRef{maincls-experts.cmd.aliaskomafont}), it will become an + independent element instead. If it has already been defined as an + independent element, \DescRef{\LabelBase.cmd.setkomafont} is used to set + the \PName{commands} a new font settings. Please note the limitations for + font settings in \autoref{sec:\LabelBase.textmarkup}, + \DescPageRef{\LabelBase.cmd.setkomafont}. + \EndIndex{FontElement}{\PName{Name}.Clause}% + }% + \entry{\OptionVName{SubClause}{command}}{% + Defines the \PName{command} to which the + \DescRef{\LabelBase.cmd.SubClause} command is mapped within the + environment. This \PName{command}, like the one documented for + \DescRef{\LabelBase.env.contract}, expects exactly one argument. To use it + correctly requires advanced knowledge of the \Package{scrjura}'s internal + functioning. Furthermore, the requirements for the \PName{command} may + change in future versions. Therefore it is recommended not to use this + option!% + }% + \entry{\OptionVName{Sentence}{command}}{% + Defines the \PName{command} to which the + \DescRef{\LabelBase.cmd.Sentence} is mapped within the environment. This + \PName{command} must not have an argument. Typically it should add one to + the \Counter{sentence}\IndexCounter{sentence} (using + \Macro{refstepcounter}\IndexCmd{refstepcounter}) counter and display it + appropriately. It is particularly important to avoid adding unwanted + spaces.% + }% + \entry{\OptionVName{ClauseNumberFormat}{command}}{% + Formats the numbers of clauses within the environment. The \PName{command} + should expect exactly one argument: the number of the clause. If the + \PName{command} implements a series of commands and the number is the last + argument of a that series, you can directly use the series of commands as + \PName{command}.% + } +\end{desclist} +\begin{Example} + To define the environment for articles we mentioned in the preface of this + section, it is sufficient to write: +\begin{lstcode} + \DeclareNewJuraEnvironment{Article}[ClauseNumberFormat=Art.]{}{} +\end{lstcode} + If we are using a \KOMAScript{} class and want to separate the paragraphs in + this environment with space instead of using paragraph indentation, we can + use: +\begin{lstcode} + \DeclareNewJuraEnvironment{Article}[ClauseNumberFormat=Art.~] + {\KOMAoptions{parskip}}{} +\end{lstcode} + In cross-references, ``Art.'' will of course be used instead of ``\S''.% + + The new environment is used like \DescRef{\LabelBase.env.contract}: +\begin{lstcode} + \begin{Article} + \Clause + Human dignity is inviolable. To respect and protect people is a + duty of all state authority. + \end{Article} +\end{lstcode} +\end{Example}% +\EndIndexGroup + + +\section{Support for Different Languages} +\label{sec:scrjura.babel} + +The \Package{scrjura} package has been developed in cooperation with a German +lawyer. Therefore it initially supported only the languages \PValue{german}, +\PValue{ngerman}, \PValue{austrian}, and \PValue{naustrian}. Nevertheless, it +has been designed to support common language packages like +\Package{babel}\important{\Package{babel}}\IndexPackage{babel}. Users can +easily make changes by using \DescRef{scrbase.cmd.providecaptionname} (see +\autoref{sec:scrbase.languageSupport}, +\DescPageRef{scrbase.cmd.providecaptionname}). If you have definitive +information about the correct legal terms and conventions of a language, +please contact the \KOMAScript{} author. Support for English has been added in +this way, and so \Package{scrjura} now also provides terms for the languages +\PValue{english}, \PValue{american}, \PValue{british}, \PValue{canadian}, +\PValue{USenglish}, and \PValue{UKenglish}. + +\begin{Declaration} + \Macro{parname}% + \Macro{parshortname}% + \Macro{sentencename}% + \Macro{sentenceshortname} +\end{Declaration} +These are the language-dependent terms used by \Package{scrjura}. The meaning +of the terms and their English defaults are shown in +\autoref{tab:scrjura.captionnames}. The package itself defines them by using +\DescRef{scrbase.cmd.providecaptionname} inside +\Macro{begin}\PParameter{document} only if other requirements have not already +been met. If you use \Package{scrjura} with an unsupported language, the +package will throw an error.% +% +\begin{table} + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside} + [{% + Meanings and English defaults of language-dependent terms% + }]{% + Meanings and English defaults of language-dependent terms, if not + already defined% + } [l] + \begin{tabular}[t]{lll} + \toprule + Command & Meaning & Default \\ + \midrule + \Macro{parname} & long form ``paragraph'' & paragraph \\ + \Macro{parshortname} & short form ``paragraph'' & par. \\ + \Macro{sentencename} & long form ``sentence'' & sentence \\ + \Macro{sentenceshortname} & short form ``sentence'' & sent. \\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:scrjura.captionnames} +\end{table} +% +\EndIndexGroup + + +\section{A Detailed Example} +\label{sec:scrjura.example} + +You may remember the letter from \autoref{cha:scrlttr2}, in which a club +member wanted to remind the board about an overdue meeting that was prescribed +by the club's by-laws. Such club by-laws are a kind of contract, and you can +create them using \Package{scrjura}. + +\lstinputcode[{xleftmargin=2em,% + linerange=1-2}]{scrjuraexample.tex}% +We use class \Class{scrartcl}. Because paragraph distance instead of paragraph +indentation is usual in club by-laws, we load the class with option +\OptionValueRef{maincls}{parskip}{half} (see \autoref{sec:maincls.parmarkup}, +\DescPageRef{maincls.option.parskip}). + +\lstinputcode[{xleftmargin=2em,% + linerange=4-4}]{scrjuraexample.tex}% +The club rules are in British English. Therefore we load the \Package{babel} +package with the \Option{british} option too. + +\lstinputcode[{xleftmargin=2em,% + linerange={6-7,9-9}}]{scrjuraexample.tex}% +We make some default font settings and load the \Package{textcomp} package +because it provides an improved section mark (\S) and\,---\,something that may +be useful in other circumstances\,---\,a usable Euro symbol for some fonts. + +%\lstinputcode[{moretexcs=SelectInputMappings,xleftmargin=2em,% +% linerange=11-15}]{scrjuraexample.tex}% +Although it is not relevant for English, if we were writing an another +language, we would want to input non-ASCII characters directly. To do so, we +could let \LaTeX{} detect the input encoding with the \Package{selinput} or +set it with the \Package{inputenc} packages. + +\lstinputcode[{xleftmargin=2em,% + linerange=11-11}]{scrjuraexample.tex}% +Later in the document, we want lists numbered not with Arabic numbers but with +lower-case letters. We can do this easily with the \Package{enumerate} package. + +\lstinputcode[{moretexcs={useshorthands,defineshorthand},% + xleftmargin=2em,% + linerange=13-21}]{scrjuraexample.tex}% +Now it is time for \Package{scrjura}. The +\OptionValueRef{\LabelBase}{clausemark}{forceboth} option forces clauses to +create left and right marks for the running head. On the other hand, we do not +want \DescRef{maincls.cmd.section} to change the marks for the running head. +Therefore we use the \PageStyle{myheadings} page style. This page style +generally does not provide automatic running heads. + +Later, we also want a table of contents with the clauses. This can be achieved +with the \DescRef{\LabelBase.option.juratotoc} option. Doing so we will see +that the default width for these numbers is insufficient for the clause +numbers in the table of contents. With +\OptionValueRef{\LabelBase}{juratocnumberwidth}{2.5em}, we reserve more space. + +The definition of shorthands has already been explained in +\autoref{sec:scrjura.shorthandexample}. In this example we do the same thing +to simplify the input. + +\lstinputcode[{xleftmargin=2em,% + linerange=23-23}]{scrjuraexample.tex}% +It is time to begin the actual document. + +\lstinputcode[{xleftmargin=2em,% + linerange=25-29}]{scrjuraexample.tex}% +Like other documents, the by-laws have a title. We created it with the usual +\KOMAScript{} commands (see \autoref{sec:maincls.titlepage}, starting on +\autopageref{sec:maincls.titlepage}). + +\lstinputcode[{xleftmargin=2em,% + linerange=31-31}]{scrjuraexample.tex}% +As already mentioned, we want to create a table of contents. + +\lstinputcode[{xleftmargin=2em,% + linerange=33-37}]{scrjuraexample.tex}% +Preambles are not unusual in club by-laws. Here we use +\DescRef{maincls.cmd.addsec} to create one because we want it to have an entry +in the table of contents. + +\lstinputcode[{xleftmargin=2em,% + linerange=39-39}]{scrjuraexample.tex}% +Here we use a small trick. The articles of the club by-laws should be numbered +with upper-case letters instead of Arabic numbers, just as +the appendix sections of an article using \Class{scrartcl} are. + +\lstinputcode[{xleftmargin=2em,% + linerange=41-43}]{scrjuraexample.tex}% +We begin the contract with the first article. + +\lstinputcode[{xleftmargin=2em,% + linerange=44-54}]{scrjuraexample.tex}% +The first clause has a number and a title. We will do the same with all +following clauses. + +The first paragraph of the clause contains nothing unusual. Because it is not +the only paragraph, every paragraph will be automatically preceded by a +paragraph number. Note that the numbering the first paragraph requires at +least two \LaTeX{} runs. Since this is the case for the table of contents as +well, this does not create any additional problems. + +In the second paragraph we have two sentences. Here we can see the shorthands +\texttt{'S} and \texttt{'.} in action. The first one only generates the +sentence number. The second one generates not only the full stop but also the +sentence number. With this, both sentences are numbered. + +\lstinputcode[{xleftmargin=2em,% + linerange=55-70}]{scrjuraexample.tex}% +The second clause: again this contains several paragraphs, some of which +include several sentences. The second paragraph also has a numbered list. In +the last paragraph, we set a label, because we want to reference it later. + +\lstinputcode[{xleftmargin=2em,% + linerange=72-78}]{scrjuraexample.tex}% +The third clause contains something special: a cross-reference. Here we use +the long form with clause, paragraph, and sentence. If we decided later that +sentences should not be included in the reference, we could use the +\OptionValueRef{\LabelBase}{ref}{nosentence} option to set this globally. + +\lstinputcode[{xleftmargin=2em,% + linerange=80-81}]{scrjuraexample.tex}% +Here we have a special kind of clause. In earlier versions of the club by-laws, +this was a real clause, but it was later removed. However, the +numbering of the following clauses should not be changed by removing this +one. Therefore the \DescRef{\LabelBase.cmd.Clause} statement has not been +removed but supplemented by option \Option{dummy}. With this, we also can set +a label even though the clause will not be printed. + +\lstinputcode[{xleftmargin=2em,% + linerange=82-86}]{scrjuraexample.tex}% +Another article begins. To avoid problems with the paragraph numbering, we +interrupt the \DescRef{\LabelBase.env.contract} environment. + +\lstinputcode[{xleftmargin=2em,% + linerange=87-87}]{scrjuraexample.tex}% +The first clause of the next article also has been deleted. + +\lstinputcode[{xleftmargin=2em,% + linerange=89-98}]{scrjuraexample.tex}% +Here we have a real clause again. We cross-reference one of the deleted +clauses and also set a label. + +\lstinputcode[{xleftmargin=2em,% + linerange=100-104}]{scrjuraexample.tex}% +Once more, this is a special kind of clause. This time we have not removed a +clause but added one without renumbering the following clauses. To do so, +we use \DescRef{\LabelBase.cmd.SubClause}. Therefore the clause number is the +same like the previous one but with an appended ``a''. + +\lstinputcode[{xleftmargin=2em,% + linerange=106-126}]{scrjuraexample.tex}% +The other clauses of this article are very usual. You already know all the +features used for them. + +\lstinputcode[{xleftmargin=2em,% + linerange=128-141}]{scrjuraexample.tex}% +There follows another article no special features. + +\lstinputcode[{xleftmargin=2em,% + linerange=143-143}]{scrjuraexample.tex}% +Then the \LaTeX{} document ends. You can see first three pages in +\autoref{fig:scrjura.example}.% +% +\begin{figure} + \setcapindent{0pt}% + \iffree{% + {\hfill + \frame{\includegraphics[page=1,width=.482\textwidth,% + height=.49\textheight,keepaspectratio]{scrjuraexample}}\enskip + \frame{\includegraphics[page=2,width=.482\textwidth,% + height=.49\textheight,keepaspectratio]{scrjuraexample}}\par + \smallskip} + \begin{captionbeside}[{% + Example: First three pages of the example club by-laws of + \protect\autoref{sec:scrjura.example}% + }]{% + First three pages of the example club by-laws of + \protect\autoref{sec:scrjura.example}% + }% + [l] + \frame{\includegraphics[page=3,width=.482\textwidth,% + height=.49\textheight,keepaspectratio]{scrjuraexample}}\enskip + \end{captionbeside} + }{% + {\hfill + \frame{\includegraphics[page=1,width=.482\textwidth]{scrjuraexample}}% + \enskip + \frame{\includegraphics[page=2,width=.482\textwidth]{scrjuraexample}}\par + \smallskip} + \begin{captionbeside}[{% + Example: First three pages of the example club by-laws of + \protect\autoref{sec:scrjura.example}% + }]{% + First three pages of the example club by-laws of + \protect\autoref{sec:scrjura.example}% + }% + [l] + \frame{\includegraphics[page=3,width=.482\textwidth]{scrjuraexample}}% + \enskip + \end{captionbeside} + }% + \label{fig:scrjura.example} +\end{figure} + +\section{State of Development} +\label{sec:scrjura.draft} + +Since \KOMAScript~3.24, the \Package{scrjura} package has shared the version +number of the classes and other important packages of \KOMAScript. +Nevertheless, you should note that so far, the interaction of the +\DescRef{\LabelBase.env.contract} environment with the many different settings +possible with other \LaTeX{} environments, packages, or classes has not been +tested. The main reason for this is that \Package{scrjura} is very specialised +and far beyond the author's ordinary practice. So the author mostly relies on +detailed user feedback.% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "en_GB" +%%% TeX-PDF-mode: t +%%% TeX-master: "guide.tex" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrjuraexample.tex b/macros/latex/contrib/koma-script/source-doc/english/scrjuraexample.tex new file mode 100644 index 0000000000..013d1b60bc --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrjuraexample.tex @@ -0,0 +1,143 @@ +\documentclass[fontsize=12pt,pagesize,parskip=half] + {scrartcl} + +\usepackage[british]{babel} + +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage{charter,helvet} +\usepackage{textcomp} + +\usepackage{enumerate} + +\usepackage[clausemark=forceboth, + juratotoc, + juratocnumberwidth=2.5em] + {scrjura} +\useshorthands{'} +\defineshorthand{'S}{\Sentence\ignorespaces} +\defineshorthand{'.}{. \Sentence\ignorespaces} + +\pagestyle{myheadings} + +\begin{document} + +\subject{By-Laws} +\title{CfCH} +\subtitle{Club for Club Hoppers} +\date{11.\,11.\,2011} +\maketitle + +\tableofcontents + +\addsec{Preamble} + +The club landscape in England is diverse. But we have +unfortunately been forced to conclude that it often +suffers seriously when dealing with seriousness. + +\appendix + +\section{Overview} + +\begin{contract} +\Clause{title={Name, Legal Form, Headquarters}} + +The name of this club shall be the ``Club for Club +Hoppers'' and is not registered in any club register. + +'S The club is a non-economic, useless club'. It has no +headquarters because its members heads are in their +hindquarters. + +The fiscal year is from March 31st through April 1st. + +\Clause{title={Purpose of the Club}} + +'S The club is pointless but not useless'. Rather, +it should put the serious handling of seriousness on a +sound footing. + +For this purpose, the club members can +\begin{enumerate}[\qquad a)] +\item pick their noses, +\item crack nuts, +\item such their thumbs. +\end{enumerate} + +The club is selfish and stands by it. + +The club has no financial means.\label{a:mittel} + +\Clause{title={Club Officers}} + +The club officers hold honorary positions. + +'S If the club had resources (see \ref{a:mittel}), it +could afford a full-time manager'. Without the necessary +funds, this is not possible. + +\Clause{title={Club Hopper},dummy} +\label{p.maier} +\end{contract} + +\section{Membership} + +\begin{contract} +\Clause{title={Types of Members},dummy} + +\Clause{title={Becoming a Member}} + +Everyone can purchase a membership from one of the +associations listed in \refClause{p.maier}.\label{a.preis} + +'S To become a member, an informal application is +required'. This application should be submitted in green +ink on pink paper. + +Membership applications cannot be rejected. + +\SubClause{title={Amendment to the Previous Clause}} + +'S With the repeal of \refClause{p.maier}, +\ref{a.preis} has become impractical'. In its place, +memberships can be inherited. + +\Clause{title={Termination of Membership}} + +'S Membership ends with one's life'. For non-living +members, membership does not end. + +\Clause{title={General Meeting}} + +A general meeting shall take place twice per year. + +The interval between two general meetings shall be +no more than 6~months, 1~week, and 2~days. + +The invitation to the next general meeting shall be sent +no earlier than 6~months from the previous general +meeting. + +\SubClause{title={Amendment to the General Meeting}} + +The general meeting may be held at the earliest 2~weeks after +the invitation is received. +\end{contract} + +\section{Validity} + +\begin{contract} +\Clause{title={Effective Date}} + +These articles will enter into force on 11.\,11.\,2011 at +11:11~am. + +'S If any provision of these by-laws is in conflict with +any other, the by-laws will be repealed on +11.\,11.\,2011 at 11:11~am and 11~seconds'. The club is +considered to be dissolved in this case. + +\end{contract} + +\end{document} diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrlayer-notecolumn-example.tex b/macros/latex/contrib/koma-script/source-doc/english/scrlayer-notecolumn-example.tex new file mode 100644 index 0000000000..164c646e1f --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrlayer-notecolumn-example.tex @@ -0,0 +1,121 @@ +% ====================================================================== +% scrlayer-notecolumn-example.tex +% Copyright (c) Markus Kohm, 2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlayer-notecolumn-example.tex +% Copyright (c) Markus Kohm, 2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Example file for the chapter about scrlayer-notecolumn +% of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Beispieldatei für das Kapitel über scrlayer-notecolumn +% in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ +\documentclass{scrartcl} +\usepackage{lmodern} +\usepackage{xcolor} + +\usepackage{scrjura} +\setkomafont{contract.Clause}{\bfseries} +\setkeys{contract}{preskip=-\dp\strutbox} + +\usepackage{scrlayer-scrpage} +\usepackage{scrlayer-notecolumn} + +\newlength{\paragraphscolwidth} +\AfterCalculatingTypearea{% + \setlength{\paragraphscolwidth}{.333\textwidth}% + \addtolength{\paragraphscolwidth}{-\marginparsep}% +} +\recalctypearea +\DeclareNewNoteColumn[% + position=\oddsidemargin+1in + +.667\textwidth + +\marginparsep, + width=\paragraphscolwidth, + font=\raggedright\footnotesize + \color{blue} +]{paragraphs} + +\begin{document} + +\title{Commentary on the SCRACH} +\author{Professor R. O. Tenase} +\date{11/11/2011} +\maketitle +\tableofcontents + +\section{Preamble} +The SCRACH is without doubt the most important law on the manners of humour +that has been passed in the last thousand years. The first reading took place +on 11/11/1111 in the Supreme Manic Fun Congress, but the law was rejected by +the Vizier of Fun. Only after the ludicrous, Manic Fun monarchy was +transformed into a representative, witty monarchy by W. Itzbold, on 9/9/1999 +was the way finally clear for this law. + +\section{Analysis} + +\begin{addmargin}[0pt]{.333\textwidth} + \makenote[paragraphs]{% + \protect\begin{contract} + \protect\Clause{title={No Joke without an Audience}} + A joke can only be funny if is has an audience. + \protect\end{contract} + } + This is one of the most central statements of the law. It is so fundamental + that it is quite appropriate to bow to the wisdom of the authors. + + \syncwithnotecolumn[paragraphs]\bigskip + \makenote[paragraphs]{% + \protect\begin{contract} + \protect\Clause{title={Humor of a Culture}} + \setcounter{par}{0}The humour of a joke can be determined by the + cultural environment in which it is told. + + The humour of a joke can be determined by the cultural environment in + which it acts. + \protect\end{contract} + } + The cultural component of a joke is, in fact, not negligible. Although the + political correctness of using the cultural environment can easily be + disputed, nonetheless the accuracy of such comedy in the appropriate + environment is striking. On the other hand, a supposed joke in the wrong + cultural environment can also be a real danger for the joke teller. +\end{addmargin} + +\end{document} diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrlayer-notecolumn.tex b/macros/latex/contrib/koma-script/source-doc/english/scrlayer-notecolumn.tex new file mode 100644 index 0000000000..47cc29a8aa --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrlayer-notecolumn.tex @@ -0,0 +1,702 @@ +% ====================================================================== +% scrlayer-notecolumn.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlayer-notecolumn.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrlayer-notecolumn of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber scrlayer-notecolumn in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrlayer-notecolumn.tex} + [$Date: 2018-02-05 01:50:56 -0800 (Mon, 05 Feb 2018) $ + KOMA-Script guide (chapter:scrlayer-notecolumn)] + +\translator{Markus Kohm\and Arndt Schubert\and Karl Hagen} + +% Date of the translated German file: 2018-02-05 + +\chapter{Note Columns with \Package{scrlayer-notecolumn}} +\labelbase{scrlayer-notecolumn} + +\BeginIndexGroup +\BeginIndex{Package}{scrlayer-notecolumn}% +Through version~3.11b, \KOMAScript{} supported note columns only in the form +of marginal notes that get their contents from \DescRef{maincls.cmd.marginpar} +and \DescRef{maincls.cmd.marginline} (see \autoref{sec:maincls.marginNotes}, +\DescPageRef{maincls.cmd.marginline}). This kind of note column has several +disadvantages: +\begin{itemize} +\item Marginal notes must be set completely on a single page. Page + breaks\textnote{page break} inside marginal notes are not possible. This + sometimes causes the marginal notes to protrude into the lower margin. +\item Marginal notes near page breaks sometimes float to the next page and + then, in the case of two-sided printing, cause alternate marginal columns to + appear in the wrong margin.\textnote{assignment to the correct margin}. This + problem can be solved with the additional package + \Package{mparhack}\IndexPackage{mparhack} or by using \Macro{marginnote} + from the \Package{marginnote}\IndexPackage{marginnote} package (see + \cite{package:marginnote}). +\item Marginal notes inside floating environments\textnote{floating + environments} or footnotes\textnote{footnotes} are not possible. This + problem can also be solved with \Macro{marginnote} of the + \Package{marginnote}\IndexPackage{marginnote} package. +\item There is only one marginal note column\textnote{several note columns}, + or at most two if you use \Macro{reversemarginpar} and + \Macro{normalmarginpar}. Note that \Macro{reversemarginpar} is of less + utility with two-sided documents. +\end{itemize} +Using \Package{marginnote}\IndexPackage{marginnote} leads to one more problem. +Because the package does not have any collision detection, marginal notes that +are set near to each other can partially or totally overlap. Moreover, +depending on the settings used, \Macro{marginnote} sometimes changes the +baseline distance of the normal text. + +The \Package{scrlayer-notecolumn} package should solve all these problems. To +do so, it relies on the basic functionality of +\hyperref[cha:scrlayer]{\Package{scrlayer}}\IndexPackage{scrlayer}% +\important{\hyperref[cha:scrlayer]{\Package{scrlayer}}}. However, using this +package has a drawback:\textnote{Attention!} you can only output notes on +pages that use a page style based on +\hyperref[cha:scrlayer]{\Package{scrlayer}}. This disadvantage, however, can +easily be resolved, or even turned into an advantage, with the help of +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}}% +\IndexPackage{scrlayer-scrpage}. + +\section{Note about the State of Development} +\seclabel{draft} + +This package was originally developed as a so-called \emph{proof of + concept}\textnote{proof of concept} to demonstrate the potential of +\hyperref[cha:scrlayer]{\Package{scrlayer}}% +\important{\hyperref[cha:scrlayer]{\Package{scrlayer}}}. Although it is still +in its early stages of development, most of its stability is less a question +of \Package{scrlayer-notecolumn} than of +\hyperref[cha:scrlayer]{\Package{scrlayer}}. Nevertheless, you can assume that +there are still bugs in \Package{scrlayer-notecolumn}. Please report such bugs +whenever you find them. Some of the package's shortcomings are caused by the +attempt to minimise complexity. For example, although note columns can break +across several pages, there is no new paragraph break. \TeX{} itself does not +provide this. + +Because the package is rather experimental\textnote{experimental}, its +instructions are found here in the second part of \iffree{the \KOMAScript{} +manual}{this book}. Accordingly, it is primarily directed towards experienced +users. If you are a beginner or a user on the way to become an +expert\textnote{for experts}, some of the following explanations may be +unclear or even incomprehensible. +\iffree{Please understand that I want to keep the effort spent on the manual + to something halfway bearable when it comes to experimental packages.}{% + However, this should be enough to solve simple tasks with + \Package{scrlayer-notecolumn}. At the same time, developers will hopefully + find useful stimulus for their own ideas.} + +\iffalse% Umbruchoptimierung +Note also\textnote{Attention!} that the author of \KOMAScript{} does not +guarantee the further development of this package and offers only limited +support for it. This is the nature of a package written solely for the +purposes of demonstration.% +\fi + +\LoadCommonFile{options}% \section{Early or late Selection of Options} + +\LoadCommonFile{textmarkup}% \section{Text Markup} + +\section{Declaring New Note Columns} +\seclabel{declaration} + +Loading the package automatically declares a note column named +\PValue{marginpar}. As the name implies, this note column is placed in the +area of the normal marginal column used by \DescRef{maincls.cmd.marginpar} and +\DescRef{maincls.cmd.marginline}. The \Macro{reversemarginpar} and +\Macro{normalmarginpar} settings are also taken into account, but only for all +the notes on a page instead of note by note. The relevant setting is the one +that applies at the end of the page, namely during the output of the note +column. If you want to have notes in both the left and right margin of the +same page, you should define a second note column. + +The default settings for all newly declared note columns are the same as the +defaults for \PValue{marginpar}. % +\iftrue% Umbruchoptimierung +But you can easily change them during their initialisation.% +\fi + +Note\textnote{Attention!} that note columns can be output only on pages that +use a page style based on the +\hyperref[cha:scrlayer]{\Package{scrlayer}}\IndexPackage{scrlayer}% +\important{\hyperref[cha:scrlayer]{\Package{scrlayer}}} package. The +\Package{scrlayer-notecolumn} package automatically loads +\hyperref[cha:scrlayer]{\Package{scrlayer}}, which by default provides only +\PageStyle{empty}\IndexPagestyle{empty} page style. If you need additional +page styles, \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} is +recommended. + +\begin{Declaration} + \Macro{DeclareNoteColumn}% + \OParameter{option~list}\Parameter{note~column~name}% + \Macro{DeclareNewNoteColumn}% + \OParameter{option~list}\Parameter{note~column~name}% + \Macro{ProvideNoteColumn}% + \OParameter{option~list}\Parameter{note~column~name}% + \Macro{RedeclareNoteColumn}% + \OParameter{option~list}\Parameter{note~column~name}% +\end{Declaration} +You can use these commands to create note columns. \Macro{DeclareNoteColumn} +creates the note column regardless of whether it already exists. +\Macro{DeclareNewNoteColumn} throws an error if the \PName{note column name} +has already been used for another note column. \Macro{ProvideNoteColumn} +simply does nothing in that case. You can use \Macro{RedeclareNoteColumn} only +to reconfigure an existing note column. + +By the way, when reconfiguring existing note columns with +\Macro{DeclareNoteColumn} or \Macro{RedeclareNoteColumn}, the notes that have +already been generated for this column are retained. + +\BeginIndex{FontElement}{notecolumn.\PName{note column name}}% +\BeginIndex{FontElement}{notecolumn.marginpar}% +Declaring a new note column always defines a new element for changing its font +attributes with \DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont}, if such an element does not yet exist. +The name of the element is \PValue{notecolumn.}\PName{note column name}. For +this reason, the default note column \PValue{marginnote} has the +element\textnote{element name} \FontElement{notecolumn.marginpar}. You can +directly specify the initial setting of the element's font when declaring a +note column by using the \Option{font} option within the \PName{option list}.% +\EndIndex{FontElement}{notecolumn.marginpar}% +\EndIndex{FontElement}{notecolumn.\PName{note column name}}% + +The \PName{option list} is a comma-separated list of keys with or without +values, also known as options. The available options are listed in +\autoref{tab:scrlayer-notecolumn.note.column.options}, +\autopageref{tab:scrlayer-notecolumn.note.column.options}. +The\textnote{default: option \Option{marginpar}} \Option{marginpar} option is +set by default, but you can overwrite this default with your individual +settings. + +Because note columns are implemented using \Package{scrlayer}, a +layer\Index{layer} is created for each note column. The layer +name\textnote{layer name} is the same as the name of the element, +\PValue{notecolumn.}\PName{note column name}. For more information about +layers see \autoref{sec:scrlayer.layers}, starting on +\autopageref{sec:scrlayer.layers}. +% +\begin{Example} + Suppose you are a professor of comedy law and want to write a treatise on + the new ``Statute Concerning the Riotous Airing of Common Humour'', SCRACH + for short. The better part of the work will consist of commentary on + individual paragraphs of the statute. You decide on a two-column layout, + with the comments in the main column and the paragraphs placed in a smaller + note column on the right of the main column using a font that is + smaller\iffree{ and in a different colour}{}. +\begin{lstcode} + \documentclass{scrartcl} + \usepackage{lmodern} + \usepackage{xcolor} + + \usepackage{scrjura} + \setkomafont{contract.Clause}{\bfseries} + \setkeys{contract}{preskip=-\dp\strutbox} + + \usepackage{scrlayer-scrpage} + \usepackage{scrlayer-notecolumn} + + \newlength{\paragraphscolwidth} + \AfterCalculatingTypearea{% + \setlength{\paragraphscolwidth}{% + .333\textwidth}% + \addtolength{\paragraphscolwidth}{% + -\marginparsep}% + } + \recalctypearea + \DeclareNewNoteColumn[% + position=\oddsidemargin+1in + +.667\textwidth + +\marginparsep, + width=\paragraphscolwidth, + font=\raggedright\footnotesize + \color{blue} + ]{paragraphs} +\end{lstcode} + The treatise should be a one-sided article. The font is Latin Modern, and + the colour selection uses the \Package{xcolor}\IndexPackage{xcolor} package. + + For formatting legal texts\textnote{legal texts with + \hyperref[cha:scrjura]{\Package{scrjura}}} with the + \hyperref[cha:scrjura]{\Package{scrjura}}\IndexPackage{scrjura} package, see + \autoref{cha:scrjura}. + + Since this document uses a page style\textnote{page style with + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} with a + page number, the + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + \IndexPackage{scrlayer-scrpage} package is loaded. Thus, note columns can be + output on all pages. + + Next, the \Package{scrlayer-notecolumn}\textnote{note columns with + \Package{scrlayer-notecolumn}} package is loaded. The required width of the + note column is calculated with + \DescRef{typearea-experts.cmd.AfterCalculatingTypearea}% + \IndexPackage{typearea}\IndexCmd{AfterCalculatingTypearea} after any + recalculation\textnote{type area with + \hyperref[cha:typearea]{\Package{typearea}}}% + \IndexPackage{typearea} of the type area. It should be one third of the type + area minus the distance between the main text and the note column. % + + With this information, we define the new note column. For the positions, we + use a simple dimension expression. Note that \Length{oddsidemargin} is not + the total left margin but for historical reasons the left margin minus + 1\Unit{inch}. So we have to add this value. + + This concludes the definition. Note that the note column would currently be + placed inside the type area. This means that the note column would overwrite + the text. + +\begin{lstcode} + \begin{document} + + \title{Commentary on the SCRACH} + \author{Professor R. O. Tenase} + \date{11/11/2011} + \maketitle + \tableofcontents + + \section{Preamble} + The SCRACH is without doubt the most important law + on the manners of humour that has been passed in + the last thousand years. The first reading took + place on 11/11/1111 in the Supreme Manic Fun + Congress, but the law was rejected by the Vizier + of Fun. Only after the ludicrous, Manic Fun + monarchy was transformed into a representative, + witty monarchy by W. Itzbold, on 9/9/1999 was + the way finally clear for this law. +\end{lstcode} + Because\textnote{Attention!} the text area was not reduced, the preamble is + output extending over the whole width of the type area. To test this, you + can temporarily add: +\begin{lstcode} + \end{document} +\end{lstcode} +\end{Example} +% +In the example, the question of how the text for the commentary can be set in +a narrower column remains unresolved. You will discover how to do this by +continuing the example below.% +% +%\begin{table}% Umbruchoptimierung: Tabelle hinter das Beispiel verschoben +\begin{desclist} + \desccaption{% +% \caption[Available settings for declaring note columns]{% + Available settings for declaring note columns% +% }% + \label{tab:scrlayer-notecolumn.note.column.options}% + }{% + Available settings for declaring note columns + (\emph{continued})% + }% +% \begin{desctabular} + \entry{\OptionVName{font}{font attribute}}{% + The font attributes of the note column set with + \DescRef{\LabelBase.cmd.setkomafont}. For possible values, refer to + \autoref{sec:maincls.textmarkup}, + \DescPageRef{maincls.cmd.setkomafont}.\par% + Default: \emph{empty}% + }% + \entry{\Option{marginpar}}{% + Sets \Option{position} and \Option{width} to correspond to the marginal + note column of \DescRef{maincls.cmd.marginpar}. Switching between + \Macro{reversemarginpar}\IndexCmd{reversemarginpar} and + \Macro{normalmarginpar}\IndexCmd{normalmarginpar} is only considered at + the end of the page when the note column is output. Note that this + option does not expect or allow any value.\par% + Default: \emph{yes}% + }% + \entry{\Option{normalmarginpar}}{% + Sets \Option{position} and \Option{width} to use the normal marginal + note column and ignore \Macro{reversemarginpar} and + \Macro{normalmarginpar}. Note that this option does not expect or allow + a value.\par% + Default: \emph{no}% + }% + \entry{\OptionVName{position}{offset}}{% + Sets the horizontal offset of the note column from the left edge of the + paper. The \PName{offset} can be a complex expression as long as it is + fully expandable and expands to a length or a dimensional expression at + the time the note column is output. See \cite[section~3.5]{manual:eTeX} + for more information about dimensional expressions.\par% + Default: \emph{through the \Option{marginpar} option}% + }% + \entry{\Option{reversemarginpar}}{% + Sets \Option{position} and \Option{width} to use the reverse marginal + note column of \DescRef{maincls.cmd.marginpar} with the + \Macro{reversemarginpar} setting. Note that this option does not expect + or allow a value.\par% + Default: \emph{no}% + }% + \entry{\OptionVName{width}{length}}{% + Sets the width of the note column. The \PName{length} can be a complex + expression as long as it is fully expandable and expands to a length or + a dimensional expression at the time the note column is output. See + \cite[section~3.5]{manual:eTeX} for more information about dimensional + expressions.\par% + Default: \emph{through the \Option{marginpar} option}% + }% +% \end{desctabular} +%\end{table} +\end{desclist} +\EndIndexGroup + + +\section{Making a Note} +\seclabel{makenote} + +After you declare a note column, you can create notes for this column. But +these notes are not be output immediately. Initially, they are written to an +auxiliary file with extension ``\File{.slnc}''. Specifically, they are first +written to the \File{aux}-file and, when the \File{aux}-file is read inside +\Macro{end}\PParameter{document}, they are copied to the \File{slnc}-file. If +necessary, the \Macro{nofiles}\IndexCmd{nofiles} setting is also taken into +account. At the next \LaTeX{} run, this auxiliary file will be read piece by +piece, according to the progress of the document, and at the end of the page +the notes for that page will be output. + +Note\textnote{Attention!}, however, that note columns are output only on pages +whose page style is based on the \Package{scrlayer}\IndexPackage{scrlayer} +package. This package is loaded automatically by \Package{scrlayer-notecolumn} +and by default provides only the \PageStyle{empty}\IndexPagestyle{empty} page +style. If you need additional page styles, the +\Package{scrlayer-scrpage}\IndexPackage{scrlayer-scrpage} package is +recommended. + +\begin{Declaration} + \Macro{makenote}\OParameter{note-column name}\Parameter{note}\\ + \Macro{makenote*}\OParameter{note-column name}\Parameter{note}\\ +\end{Declaration} +You can use this command to make a new \PName{note}. The current vertical +position is used as the vertical position for the start of the \PName{note}. +The horizontal position for the note results from the defined position of the +note column. To work correctly, the package relies on +\Macro{pdfsavepos}\IndexCmd{pdfsavepos}, +\Macro{pdflastypos}\IndexCmd{pdflastypos}, and +\Macro{pdfpageheight}\IndexLength{pdfpageheight} or their equivalent in newer +Lua\TeX{} versions. Without these commands, \Package{scrlayer-notecolumn} will +not work. The primitives should act exactly as they would using pdf\TeX. + +However, if the package detects a collision\textnote{collision avoidance} with +a previous \PName{note} in the same note column, the new \PName{note} is moved +below that earlier \PName{note}. If the \PName{note} does not fit on the +page\textnote{page break}\Index{page>break}, it will be moved completely or +partially to the next page. + +The optional argument \PName{note column name} determines which note column +should be used for the \PName{note}. If the optional argument is omitted, the +default note column \PValue{marginpar} is used.% +\begin{Example} + Let's add a commented paragraph to the example of the previous section. The + paragraph itself should be placed in the newly defined note column: +\begin{lstcode} + \section{Analysis} + \begin{addmargin}[0pt]{.333\textwidth} + \makenote[paragraphs]{% + \protect\begin{contract} + \protect\Clause{% + title={No Joke without an Audience}% + } + A joke can only be funny if is has an + audience. + \protect\end{contract}% + } + This is one of the most central statements of + the law. It is so fundamental that it is quite + appropriate to bow to the wisdom of the authors. +\end{lstcode} + The \DescRef{maincls.env.addmargin}\IndexEnv{addmargin}% + \textnote{column width with \DescRef{maincls.env.addmargin}} environment, + which is described in \autoref{sec:maincls.lists}, + \DescPageRef{maincls.env.addmargin}, is used to reduce the width of the main + text by the width of the column for the paragraphs. + + Here you can see one of the few problems of using \Macro{makenote}. Because + the mandatory argument is written to an auxiliary file, + commands\textnote{fragile commands} inside this argument can, unfortunately, + \emph{break}. To avoid this, you should use \Macro{protect} in front of all + commands that should not expand when written to the auxiliary file. + Otherwise, using a command inside this argument could result in error + messages. + + In principle you could now finish this example with +\begin{lstcode} + \end{addmargin} + \end{document} +\end{lstcode} + to see a preliminary result. +\end{Example} +If you test this example, you will see that the column for the legal text is +longer than that of the commentary. If\textnote{Attention!} you add another +section with another paragraph, you may encounter the problem that the +commentary will not continue below the legal text but immediately after the +previous comment. Next you will find a solution to this problem. + +The\ChangedAt{v0.1.2583}{\Package{scrlayer-notecolumn}} problem with fragile +commands mentioned in the example above does not occur with the starred +variant\important{\Macro{makenote*}}. It uses \Macro{detokenize} to prevent +the expansion of commands. But this also means that you should not use +commands in the \PName{note} that change their definition within the +document.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{syncwithnotecolumn}\OParameter{note column name} +\end{Declaration} +This command adds a +synchronisation\textnote{synchronisation}\Index{synchronisation} point in a +note column and in the main text of the document. Whenever a synchronisation +point is reached during the output of a note column or the main text, a mark +will be generated that consists of the current page and the current vertical +position. + +In parallel with the generation of synchronisation points, +\Package{scrlayer-notecolumn} determines whether a mark has been set in the +note column or the main text during the previous \LaTeX{} run. If so, it +compares their values. If the mark of the note column is lower on the current +page or on a later page, the main text will be moved down to the position of +the mark. + +As a rule,\textnote{Hint!} you should not place synchronisation points within +paragraphs of the main text but only between them. If you nonetheless use +\Macro{syncwithnotecolumn} inside a paragraph, the synchronisation point will +be delayed until the current line has been output. This behaviour is similar +to that of, e.\,g., \Macro{vspace}\IndexCmd{vspace} in this respect. + +Because synchronisation points are not recognized until the next \LaTeX{} +run\textnote{several \LaTeX{} runs}, this mechanism requires at least three +\LaTeX{} runs. Any new synchronisation may also result in shifts of later +synchronisation points, which in turn will require additional \LaTeX{} runs. +Such shifts are usually indicated by the message: ``\LaTeX{} Warning: Label(s) +may have changed. Rerun to get cross-references right.'' But reports about +undefined labels may also indicate the need for another \LaTeX{} run. + +If you omit the optional argument, the default note column \PValue{marginpar} +will be used. Note\textnote{Attention!} that an empty optional argument is not +the same as omitting the optional argument! + +You cannot use\textnote{Attention!} \Macro{syncwithnotecolumn} inside a note +itself, that is, inside the mandatory argument of +\Macro{makenote}\IndexCmd{makenote}! Currently the package cannot recognise +such a mistake, and it causes new shifts of the synchronisation point with +each \LaTeX{} run, so the process will never terminate. To synchronise two or +more note columns, you have to synchronise each of them with the main text. +The recommended command for this is described below.% +% +\begin{Example} + Let's extend the example above by first adding a synchronisation point + and then another paragraph with a comment: +\begin{lstcode} + \syncwithnotecolumn[paragraphs]\bigskip + \makenote[paragraphs]{% + \protect\begin{contract} + \protect\Clause{title={Humor of a Culture}} + \setcounter{par}{0}% + The humour of a joke can be determined by the + cultural environment in which it is told. + + The humour of a joke can be determined by the + cultural environment in which it acts. + \protect\end{contract} + } + The cultural component of a joke is, in fact, not + negligible. Although the political correctness of + using the cultural environment can easily be + disputed, nonetheless the accuracy of such comedy + in the appropriate environment is striking. On + the other hand, a supposed joke in the wrong + cultural environment can also be a real danger + for the joke teller. +\end{lstcode} + In addition to the synchronisation point, a vertical skip has been added + with \Macro{bigskip} to better distinguish each paragraph and the + corresponding comments. + + Further\textnote{Attention}, this example illustrates another potential + problem. Because the note columns uses boxes that are assembled and + disassembled, counters\textnote{counter in note column} inside note columns + can sometimes jitter. In the example, therefore, the first paragraph would + be numbered 2 instead of 1. This, however, can easily be fixed by a direct + reset of the corresponding counter. + + The example is almost complete. You just have to close the environments: +\begin{lstcode} + \end{addmargin} + \end{document} +\end{lstcode} + In reality, of course, all the remaining section of the law should also be + commented. But let us focus on the main purpose. +\end{Example} +But stop! What if, in this example, the \PName{paragraphs} would no longer fit +on the page? Would it be printed on the next page? We will answer this +question in the next section.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{syncwithnotecolumns}\OParameter{list of note column names} +\end{Declaration} +This command synchronises the main text with all note columns of the +comma-separated \PName{list of note column names}. The main text +will be synchronised with the note column whose mark is closest to the +end of the document. As a side effect, the note columns will be synchronised +with each other. + +If the optional argument is omitted or empty (or begins with \Macro{relax}), +synchronisation will be done with all currently declared note columns.% +\EndIndexGroup + + +\section{Forced Output of Note Columns} +\seclabel{clearnotes} + +In addition to the normal output of note columns described in the previous +section, you may sometimes need to output all collected notes that have +not yet been output. This is especially useful when large notes cause more and +more notes to be moved down to new pages. A good time to force the +output\textnote{force output} is, for example, the end of a chapter or the end +of the document. + +\begin{Declaration} + \Macro{clearnotecolumn}\OParameter{note column name} +\end{Declaration} +This command prints all notes\textnote{pending notes} of a particular note +column that have not yet been output by the end of the current page but which +were created on that or a previous page. Blank pages are generated as needed +to output these pending notes. During the output of the pending notes of this +note column, notes of other note columns may also be output, but only as +necessary to output the pending notes of the specified note column. + +During the output of the pending notes, notes created in the previous \LaTeX{} +run on the pages that are now replaced by the inserted blank pages may be +output by mistake. This will be corrected automatically in one of the +subsequent \LaTeX{} runs. Such shifts are usually indicated by the message: +``\LaTeX{} Warning: Label(s) may have changed. Rerun to get cross-references +right.'' + +The note column whose pending notes are to be output is indicated by the +optional argument \PName{note column name}. If this argument is omitted, the +notes of the default note column \PValue{marginpar} will be output. + +The attentive reader\textnote{forced output vs. synchronisation} will have +noticed that the forced output of a note column is not unlike synchronisation. +But if the forced output actually results in an output, it will be at the +start of a new page and not just below the previous output. Nonetheless, a +forced output usually results in fewer \LaTeX{} runs.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{clearnotecolumns}\OParameter{list of note column names} +\end{Declaration} +This command is similar to \DescRef{\LabelBase.cmd.clearnotecolumn}, but the +the optional argument here can be not only the name of one note column but a +comma-separated \PName{list of note column names}. The pending notes of all +these note columns are then ouput. + +If you omit the optional argument or leave it empty, all pending notes of all +note columns will be output.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{autoclearnotecolumns}{simple switch} +\end{Declaration} +As a rule, pending notes will always be output if a document +implicitly\,---\,e.\,g. because of a \DescRef{maincls.cmd.chapter} +command\,---\,or explicitly executes \DescRef{maincls.cmd.clearpage}. This is +also the case at the end of the document within +\Macro{end}\PParameter{document}. The \Option{autoclearnotecolumns} option can +be used to control whether \DescRef{\LabelBase.cmd.clearnotecolumns} should be +executed automatically without arguments when running +\DescRef{maincls.cmd.clearpage}. + +Since this is generally the desired behaviour, the option is active by +default. But you can change this with the appropriate value for a simple +switch (see \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}) +at any time. + +Note\textnote{Attention!} that disabling the automatic output of pending notes +can result in lost notes at the end of the document. So in this case you +should insert \DescRef{\LabelBase.cmd.clearnotecolumns} before +\Macro{end}\PParameter{document} fore safety's sake. + +The question from the end of the last section should now be answered. If the +paragraph is to be completely output, it had to be wrapped to the next page. +This is, of course, the default setting. However, since this would happen +after the end of the \DescRef{maincls.env.addmargin} environment, the forced +output could still overlap with subsequent text. So in the example it would +make sense to add another synchronisation point after the +\DescRef{maincls.env.addmargin} environment. + +The result of the example is shown in +\autoref{fig:scrlayer-notecolumn.example}.\iffree{}{ Only the colour has been +changed from blue to grey.} + +\begin{figure} + \KOMAoptions{captions=bottombeside}% + \setcapindent{0pt}% + \begin{captionbeside}[{A sample page for the example in + \autoref{cha:scrlayer-notecolumn}}]{A sample page for the example in + this chapter\label{fig:scrlayer-notecolumn.example}}[l] + \frame{\includegraphics[width=.5\textwidth,keepaspectratio]% + {scrlayer-notecolumn-example}} + \end{captionbeside} +\end{figure} +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrlayer-scrpage-experts.tex b/macros/latex/contrib/koma-script/source-doc/english/scrlayer-scrpage-experts.tex new file mode 100644 index 0000000000..c9cdc98c8a --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrlayer-scrpage-experts.tex @@ -0,0 +1,393 @@ +% ====================================================================== +% scrlayer-scrpage-experts.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlayer-scrpage-experts.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Expert chapter about scrlayer-scrpage of the KOMA-Script guide +% +% ---------------------------------------------------------------------- +% +% Expertenkapitel ueber scrlayer-scrpage in der KOMA-Script-Anleitung +% +% ============================================================================ + +\KOMAProvidesFile{scrlayer-scrpage-experts.tex}% + [$Date: 2018-03-30 11:57:25 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (chapter: scrlayer-scrpage-experts)] +\translator{Markus Kohm\and Karl Hagen} + +% Date version of the translated file: 2018-01-31 + +\chapter[{Additional Features of \Package{scrlayer-scrpage}}] + {Additional Features\ChangedAt{v3.12}{\Package{scrlayer-scrpage}} with + the \Package{scrlayer-scrpage} package} +\labelbase{scrlayer-scrpage-experts} +% +\BeginIndexGroup +\BeginIndex{Package}{scrlayer-scrpage}% +The \Package{scrlayer-scrpage} package offers many features beyond what has +been described in \autoref{cha:scrlayer-scrpage} of \autoref{part:forAuthors} +of this \iffree{guide}{book}. However, the average user will not normally need +these extensions, and some of them are only provided for compatibility with +\Package{scrpage2}. The documentation here in \autoref{part:forExperts} serves +to deepen and broaded your knowledge, and its mastery goes beyond basic +skills. + +\LoadCommonFile{pagestylemanipulation}% \section{Manipulating Defined Page Styles} + +\section{Defining New Pairs of Page Styles} +\seclabel{pagestyle.pairs} + +The two page styles \PageStyle{scrheadings} and \PageStyle{plain.scrheadings} +were described in \autoref{sec:scrlayer-scrpage.predefined.pagestyles}. You +can view them as a kind of pair, with \PageStyle{scrheadings} intended as the +main page style for a running head and \PageStyle{plain.scrheadings} the +corresponding \PageStyle{plain} page style without a running head but +generally with pagination. In addition to configuring this predefined pair, +\Package{scrlayer-scrpage} also lets you define additional pairs of page +styles. The name of the main page style, for example \PageStyle{scrheadings}, +also serves as the name of the page-style pair. + +\iffree{ + The vast majority of users will not need more than the one predefined + page-style pair, \PageStyle{scrheadings}. So the commands documented in this + section are therefore extensions for special cases. Since I have not come + across any suitable applications while writing this manual, there are no + detailed examples. Should I ever run across a particularly nice application + while providing support, I will happily include it in future versions. At + the same time, however, I'm virtually certain that all such cases could also + be solved using the predefined pair only.}{} + +\begin{Declaration} + \Macro{defpairofpagestyles}% + \OParameter{parent pair}\Parameter{name}\Parameter{definition}% + \Macro{newpairofpagestyles}% + \OParameter{parent pair}\Parameter{name}\Parameter{definition}% + \Macro{renewpairofpagestyles}% + \OParameter{parent pair}\Parameter{name}\Parameter{definition}% + \Macro{providepairofpagestyles}% + \OParameter{parent pair}\Parameter{name}\Parameter{definition} +\end{Declaration} +You can use these commands to define pairs of page styles similar to +\PageStyle{scrheadings} and \PageStyle{plain.scrheadings}, where \PName{name} +is the name of the main page style corresponding to \PageStyle{scrheadings}. +The name of the equivalent \PageStyle{plain} page style will be prefixed by +\PValue{plain.} automatically. So \PName{name} is not only the name of the +pair of page styles, but also the name of the main page style of that pair, +while \PValue{plain.}\PName{name} is the name of the \PageStyle{plain} page +style of this pair. + +If you provide the optional \PName{parent pair} argument, this is the name of +a page-style pair whose settings are used to initialise the new page-style +pair. So the new pair inherits the configuration of the \PName{parent pair}. + +Although \autoref{sec:scrlayer-scrpage.predefined.pagestyles} might have +created the impression that the commands described there apply only to +\PageStyle{scrheadings} and \PageStyle{plain.scrheadings} only, this is true +only so long as those two page styles are the only defined page-style pair. As +soon as there are multiple page-style pairs, +\DescRef{scrlayer-scrpage.cmd.lehead}, \DescRef{scrlayer-scrpage.cmd.cehead}, +\DescRef{scrlayer-scrpage.cmd.rehead}, \DescRef{scrlayer-scrpage.cmd.lohead}, +\DescRef{scrlayer-scrpage.cmd.cohead}, \DescRef{scrlayer-scrpage.cmd.rohead}, +\DescRef{scrlayer-scrpage.cmd.lefoot}, \DescRef{scrlayer-scrpage.cmd.cefoot}, +\DescRef{scrlayer-scrpage.cmd.refoot}, \DescRef{scrlayer-scrpage.cmd.lofoot}, +\DescRef{scrlayer-scrpage.cmd.cofoot}, \DescRef{scrlayer-scrpage.cmd.rofoot}, +\DescRef{scrlayer-scrpage.cmd.ihead}, \DescRef{scrlayer-scrpage.cmd.chead}, +\DescRef{scrlayer-scrpage.cmd.ohead}, \DescRef{scrlayer-scrpage.cmd.ifoot}, +\DescRef{scrlayer-scrpage.cmd.cfoot}, and \DescRef{scrlayer-scrpage.cmd.ofoot} +all refer to page-style pair that was most recently activated. + +In addition to those eighteen commands mentioned above, the three commands +described below, \DescRef{\LabelBase.cmd.clearmainofpairofpagestyles}, +\DescRef{\LabelBase.cmd.clearplainofpairofpagestyles}, and +\DescRef{\LabelBase.cmd.clearpairofpagestyles}, are designed to be used inside +the \PName{definition} argument. In this case, they represent a kind of +default configuration of the page-style pair that is executed each time the +pair is activated. You activate a page-style pair by activating either one two +page styles in the pair. Typically, you do so with +\DescRef{maincls.cmd.pagestyle}\IndexCmd{pagestyle}. + +Note that the commands of \autoref{sec:scrlayer-scrpage.pagestyle.content} on +\autopageref{sec:scrlayer-scrpage.pagestyle.content} are general in nature and +apply to all page styles defined with \Package{scrlayer-scrpage}. + +Although \Macro{defpairofpagestyles} defines a page-style pair regardless of +whether the corresponding page styles already exist, +\Macro{newpairofpagestyles} and \Macro{providepairofpagestyles} do so only if +the page styles are currently undefined. If at least one of the page styles is +already defined, the new definition of \Macro{providepairofpagestyles} will be +ignored, whereas using \Macro{newpairofpagestyles} results in an error +message. To redefine existing page-style pairs, you can use +\Macro{renewpairofpagestyles}. With this an is thrown if either one of the two +page styles of the pair does not already exist.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{clearmainofpairofpagestyles}% + \Macro{clearplainofpairofpagestyles}% + \Macro{clearpairofpagestyles} +\end{Declaration} +The \Macro{clearmainofpairofpagestyles} command sets the main page style of +the most recently activated page-style pair to be empty. In contrast, the +\Macro{clearplainofpairofpagestyles} command sets the \PageStyle{plain} page +style of the active page-style pair to be empty. Finally, +\Macro{clearpairofpagestyle} sets both page styles of the activate pair to be +empty. + +But note\textnote{Attention!} that none of these commands removes the +definitions of the \PName{definition} argument that was specified when +defining the page-style pair (see above). So if you activate the pair of page +styles again, those definitions will be used again! + +You can use these commands inside the \PName{definition} of the page-style +pair explained above. But you can also use them outside this definition. In +this case, they refer to the most recently activated page-style pair.% +\EndIndexGroup + + +\section{Defining Complex Page Styles} +\seclabel{pagestyle.experts} + +In addition to the predefined page styles, \Package{scrlayer-scrpage} also +provides a more basic interface for defining new page styles. The page-style +definitions discussed so far use this interface internally, as do the obsolete +commands in \autoref{sec:\LabelBase.pagestyle.triple}. +\Package{scrlayer-scrpage}. Because of its complexity, however, only advanced +users should try to use it directly. Less experienced users can already +achieve almost everything possible with this low-level interface by using the +possibilities described previously. + +\begin{Declaration} + \Macro{defpagestyle}% + \Parameter{name}\Parameter{header specification}\Parameter{footer specification}% + \Macro{newpagestyle}% + \Parameter{name}\Parameter{header specification}\Parameter{footer specification}% + \Macro{providepagestyle}% + \Parameter{name}\Parameter{header specification}\Parameter{footer specification}% + \Macro{renewpagestyle}% + \Parameter{name}\Parameter{header specification}\Parameter{footer specification}% +\end{Declaration} +You can use these commands to define a single page style with maximum +flexibility, where \PName{name} is the name of the page style that you want to +define. + +The parameters \PName{header specification} and \PName{footer specification} +have identical structure: +\begin{quote}\raggedright + \texttt{% + (\PName{length of the line above},\PName{thickness of the line above})\%\\ + \Parameter{specification for the left page in two-side layout}\%\\ + \Parameter{specification for the right page in two-side layout}\%\\ + \Parameter{specification for all pages in one-side laypout}\%\\ + (\PName{length of the line below},\PName{thickness of the line below})% + } +\end{quote} +The arguments in the round brackets are optional. That is, you can omit them +together with the brackets. In that case, the length and thickness of the +corresponding horizontal rules are based on the \KOMAScript{} options +\DescRef{scrlayer-scrpage.option.headtopline}, +\DescRef{scrlayer-scrpage.option.headsepline}, +\DescRef{scrlayer-scrpage.option.footsepline}, and +\DescRef{scrlayer-scrpage.option.footbotline} (see +\autoref{sec:scrlayer-scrpage.pagestyle.content}, +\DescPageRef{scrlayer-scrpage.option.headtopline}). + +All three arguments in curly brackets are mandatory and are used depending on +the page and the layout settings. Their content can be anything you want. For +page styles with running heads, however, you should use +\DescRef{scrlayer-scrpage.cmd.headmark}, +\DescRef{scrlayer-scrpage.cmd.leftmark}, or +\DescRef{scrlayer-scrpage.cmd.rightmark} inside the specification. Under no +circumstances should you directly put the number or text of a sectioning +command here. Because of the \LaTeX{}'s asynchronous page construction, the +wrong numbers or text can appear in the header or footer if you do so. + +The \Macro{defpagestyle} command defines the page style regardless of whether +it already exists or not. In contrast, \Macro{newpagestyle} throws an error if +a page style of the same \PName{name} already exists. On the other hand, +\Macro{providepagestyle} simply ignores the definition if the \PName{name} has +already been used for a page style. Conversely, \Macro{renewpagestyle} can +only redefine an existing page style. For a new \PName{name}, it throws an +error. + +All four commands are based on the +\DescRef{scrlayer.cmd.DeclarePageStyleByLayers}% +\IndexCmd{DeclarePageStyleByLayers} command of the +\hyperref[cha:scrlayer]{\Package{scrlayer}}\IndexPackage{scrlayer} package. +You can find the layers that are defined for a page style \PName{name} in +\autoref{tab:scrlayer-scrpage-experts.layersperstyle}, and more information +about layers and layer-page in \autoref{cha:scrlayer}, starting on +\autopageref{cha:scrlayer}.% + +\begin{table} +% \KOMAoptions{captions=topbeside} +% \setcapindent{0pt} +% \begin{captionbeside} + \caption + [{The layers \Package{scrlayer-scrpage} defines for a page style}] + {The layers \Package{scrlayer-scrpage} defines for a \PName{name} page + style\label{tab:scrlayer-scrpage-experts.layersperstyle}} +% [l] + \begin{tabular}{ll} + \toprule + Name of the layer & Meaning of the layer \\ + \midrule + \PName{name}\PValue{.head.above.line} + & horizontal line above the header\\ + \PName{name}\PValue{.head.odd} + & header of odd pages in two-sided printing\\ + \PName{name}\PValue{.head.even} + & header of even pages in two-sided printing\\ + \PName{name}\PValue{.head.oneside} + & header in one-sided printing\\ + \PName{name}\PValue{.head.below.line} + & horizontal line below the header\\ + \PName{name}\PValue{.foot.above.line} + & horizontal line above the footer\\ + \PName{name}\PValue{.foot.odd} + & footer of odd pages in two-sided printing\\ + \PName{name}\PValue{.foot.even} + & footer of even pages in two-sided printing\\ + \PName{name}\PValue{.foot.oneside} + & footer in one-sided printing\\ + \PName{name}\PValue{.foot.below.line} + & horizontal line below the footer\\ + \bottomrule + \end{tabular} +% \end{captionbeside} +\end{table} + +\begin{Example} + Suppose you want to set a background colour for the header of the + \PageStyle{scrheadings} page style. From the introduction to this chapter + and \autoref{tab:scrlayer-scrpage-experts.layersperstyle}, you know that + \PageStyle{scrheadings} is a layer page style that includes the layers + \PValue{scrheadings.head.even}, \PValue{scrheadings.head.odd}, and + \PValue{scrheadings.head.oneside}. You now define three more layers for + their backgrounds and add them at the beginning of the page style: +\begin{lstcode} + \documentclass{scrartcl} + \usepackage[automark]{scrlayer-scrpage} + \usepackage{xcolor} + \usepackage{blindtext} + \DeclareLayer[clone=scrheadings.head.oneside, + contents={% + \color{yellow}\rule[-\dp\strutbox]{\layerwidth}{\layerheight}% + }% + ]{scrheadings.head.oneside.background} + \DeclareLayer[clone=scrheadings.head.odd, + contents={% + \color{yellow}\rule[-\dp\strutbox]{\layerwidth}{\layerheight}% + }% + ]{scrheadings.head.odd.background} + \DeclareLayer[clone=scrheadings.head.even, + contents={% + \color{yellow}\rule[-\dp\strutbox]{\layerwidth}{\layerheight}% + }% + ]{scrheadings.head.even.background} + \AddLayersAtBeginOfPageStyle{scrheadings}{% + scrheadings.head.oneside.background,% + scrheadings.head.odd.background,% + scrheadings.head.even.background% + } + \pagestyle{scrheadings} + \begin{document} + \blinddocument + \end{document} +\end{lstcode} + As you can see, the example uses three layers so that the position and size + of the background layers could simply be copied from the corresponding + header layer using the \Option{clone} option. This is easier than using only + one background layer and dynamically calculating its position each time. + + The coloured background itself was created using a \Macro{rule} command. The + size arguments of this \Macro{rule} are given by + \DescRef{scrlayer.cmd.layerwidth} and \DescRef{scrlayer.cmd.layerheight} + which contain the current width and height of the layer itself. The optional + argument of \Macro{rule} is used to move the rule down by the height of a + descender. +\end{Example} +% +Instead of using new layers to colour the background in the example above, +\Macro{colorbox} and \DescRef{scrlayer-scrpage.cmd.chead} could have been +used. You can work out a solution using this method as an exercise. Likewise, +you could have added the background layers individually just before the +corresponding content layer. You can implement this as an exercise too.% +\EndIndexGroup + +\section{Defining Simple Page Styles with a Tripartite Header and Footer} +\seclabel{pagestyle.triple} + +\LoadNonFree{scrlayer-scrpage-experts}{1} + +\section{Legacy Features of \Package{scrpage2}} +\seclabel{obsolete} + +\begin{Explain} + The \Package{scrlayer-scrpage} package contains some legacy features that + derive from \Package{scrpage2} and exist only to be as compatible as possible + with that package. Users only need to understand these features if they want + to edit an old document based on \Package{scrpage2}. You\textnote{Attention!} + should not use the items documented here in new documents! +\end{Explain} + +\begin{Declaration} + \KOption{hmode}\PValue{simple switch} +\end{Declaration} +The \Package{scrpage2} package always outputs headers and footers in +horizontal mode. In contrast, \Package{scrlayer-scrpage} in the default +setting only switches into horizontal mode when horizontal material is output. +However, if you activate the \Option{hmode} option, \Package{scrlayer-scrpage} +will behave like \Package{scrpage2} and switch to horizontal mode before any +output. This can affect both the processing of white space at the beginning of +the output and vertical alignment. + +The options recognizes the standard values for simple switches listed in +\autoref{tab:truefalseswitch} on \autopageref{tab:truefalseswitch}. The option +is deactivated by default.% +\EndIndexGroup + +\LoadNonFree{scrlayer-scrpage-experts}{0} +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrlayer-scrpage.tex b/macros/latex/contrib/koma-script/source-doc/english/scrlayer-scrpage.tex new file mode 100644 index 0000000000..d3c50bfef0 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrlayer-scrpage.tex @@ -0,0 +1,1190 @@ +% ====================================================================== +% scrlayer-scrpage.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlayer-scrpage.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrlayer-scrpage of the KOMA-Script guide +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber scrlayer-scrpage in der KOMA-Script-Anleitung +% +% ============================================================================ + +\KOMAProvidesFile{scrlayer-scrpage.tex}% + [$Date: 2018-03-30 11:57:25 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (chapter: scrlayer-scrpage)] +\translator{Markus Kohm\and Jana Schubert\and Jens H\"uhne\and Karl Hagen} + +% Date version of the translated file: 2018-02-13 + +\chapter[{Headers and Footers with \Package{scrlayer-scrpage}}] + {Headers\ChangedAt{v3.12}{\Package{scrlayer-scrpage}} and + Footers with \Package{scrlayer-scrpage}} +\labelbase{scrlayer-scrpage} +% +\BeginIndexGroup +\BeginIndex{Package}{scrlayer-scrpage}% +\begin{Explain} + Until version 3.11b of \KOMAScript, the \Package{scrpage2}% + \IndexPackage[indexmain]{scrpage2}\important{\Package{scrpage2}} package was + the recommended way to customise headers and footers beyond the options + provided by the \PageStyle{headings}, \PageStyle{myheadings}, + \PageStyle{plain}, and \PageStyle{empty} page styles of the \KOMAScript{} + classes. + \iffalse% + The still older \Package{scrpage}\IndexPackage{scrpage} package was marked + obsolete in 2001 and removed from the regular \KOMAScript{} distribution in + 2013.\par + \fi% + Since 2013, the \hyperref[cha:scrlayer]{\Package{scrlayer}}% + \important{\hyperref[cha:scrlayer]{\Package{scrlayer}}}% + \IndexPackage{scrlayer} package has been included as a basic module of + \KOMAScript. This package provides a layer model and a new page-style model + based upon it. However, the package's interface is almost too flexible and + consequently not easy for the average user to comprehend. For more + information about this interface, see \autoref{cha:scrlayer} in + \autoref{part:forExperts}. However, a few of the options that are actually + part of \Package{scrlayer}, and which are therefore taken up again in that + chapter, are also documented here because they are required to use + \Package{scrlayer-scrpage}. + + Many users are already familiar with the commands from \Package{scrpage2}. + For this reason, \Package{scrlayer-scrpage} provides a method for + manipulating headers and footers which is based on \Package{scrlayer}, is + largely compatible with \Package{scrpage2}, and at the same time greatly + expands the user interface. If you are already familiar with + \Package{scrpage2} and refrain from direct calls to its internal commands, + you can usually use \Package{scrlayer-scrpage} as a drop-in replacement. + This also applies to most examples using \Package{scrpage2} found in + \LaTeX{} books or on the Internet.% + \iffalse% + \iffree{}{\par With the release of this book, \Package{scrlayer-scrpage} + for \KOMAScript{} is recommended as the tool of choice when it comes to + changing the predefined page styles. Using the obsolete package + \Package{scrpage2}\IndexPackage[indexmain]{scrpage2}% + \important{\Package{scrpage2}} is now deprecated. Therefore, the + commands for this outdated package are no longer part of this book. If + you encounter older documents that still use \Package{scrpage2}, + consider switching to \Package{scrlayer-scrpage}. Notwithstanding, this + chapter does contain some hints for using \Package{scrpage2}.}% + \fi +\end{Explain} + +In addition to \Package{scrlayer-scrpage}\iffree{ or \Package{scrpage2}}{}, +you could also use \Package{fancyhdr}\IndexPackage{fancyhdr} (see +\cite{package:fancyhdr}) to configure the headers and footers of pages. +However, this package has no support for several \KOMAScript{} features, +for example the element scheme (see \DescRef{\LabelBase.cmd.setkomafont}, +\DescRef{\LabelBase.cmd.addtokomafont}, and +\DescRef{\LabelBase.cmd.usekomafont} in \autoref{sec:maincls.textmarkup}, +\DescPageRef{maincls.cmd.setkomafont}) or the configurable numbering format +for dynamic headers (see the \DescRef{maincls.option.numbers} option and, +for example, \DescRef{\LabelBase.cmd.chaptermarkformat} in +\autoref{sec:maincls.structure}, \DescPageRef{maincls.option.numbers} and +\DescPageRef{maincls.cmd.chaptermarkformat}). Hence, if you are using a +\KOMAScript{} class, you should use the new \Package{scrlayer-scrpage} +package. \iffree{If you have problems, you can still use +\Package{scrpage2}.}{\ignorespaces} Of course, you can also use +\Package{scrlayer-scrpage} with other classes, such as the standard \LaTeX{} +ones. + +Apart from the features described in this chapter, \Package{scrlayer-scrpage} +provides several more functions that are likely only of interest to a very +small number of users and therefore are described in +\autoref{cha:scrlayer-scrpage-experts} of \autoref{part:forExperts}, starting +at \autopageref{cha:scrlayer-scrpage-experts}. Nevertheless, if the options +described in \autoref{part:forAuthors} are insufficient for your purposes, you +should examine \autoref{cha:scrlayer-scrpage-experts}. + +\LoadCommonFile{options} % \section{Early or late Selection of Options} + +\LoadCommonFile{headfootheight} % \section{Header and Footer Height} + +\LoadCommonFile{textmarkup} % \section{Text Markup} + +\section{Using Predefined Page Styles} +\seclabel{predefined.pagestyles} + +The easiest way to create custom headers and footers with +\Package{scrlayer-scrpage} is to use one of the predefined page styles. +% +\iffalse % Umbruchoptimierung + This section introduces the page styles defined by the + \Package{scrlayer-scrpage} package as it loads. It also explains the + commands that you can use to create basic settings for these page + styles. You can find further options, commands, and background information + in the following sections and in + \autoref{sec:scrlayer-scrpage-experts.pagestyle.pairs} in + \autoref{part:forExperts}.% +\fi + +\begin{Declaration} + \PageStyle{scrheadings}% + \PageStyle{plain.scrheadings} +\end{Declaration} +The \Package{scrlayer-scrpage} package provides two page styles that you can +reconfigure to your liking. The first page style is +\PageStyle{scrheadings}\important{\PageStyle{scrheadings}}, which is intended +as a page style with running heads. Its defaults are similar to the page style +\PageStyle{headings}\IndexPagestyle{headings} of the standard \LaTeX{} or +\KOMAScript{} classes. You can configure exactly what appears in the header or +footer with the commands and options described below. + +The second page style is \PageStyle{plain.scrheadings}% +\important{\PageStyle{plain.scrheadings}}, which is intended to be a style +with no running head. Its defaults resemble those of the +\PageStyle{plain}\IndexPagestyle{plain} page style of the standard or +\KOMAScript{} classes. You can configure exactly what appears in the header or +footer with the commands and options described below. + +You could, of course, configure \PageStyle{scrheadings} to be a page style +without a running head and \PageStyle{plain.scrheadings} to be a page style +with a running head. It is, however, advisable to adhere to the conventions +mentioned above. The two page styles mutually influence one another. Once you +apply one of these page styles, \PageStyle{scrheadings} will become accessible +as \PageStyle{headings}\important{\PageStyle{headings}}% +\IndexPagestyle{headings} and the page style \PageStyle{plain.scrheadings} +will become accessible as \PageStyle{plain}\important{\PageStyle{plain}}% +\IndexPagestyle{plain}. Thus, if you use a class or package that automatically +switches between \PageStyle{headings} and \PageStyle{plain}, you only need to +select \PageStyle{scrheadings} or \PageStyle{plain.scrheadings} once. Direct +patches to the corresponding classes or packages are not necessary. This pair +of page styles can thus serve as a drop-in replacement for +\PageStyle{headings} and \PageStyle{plain}. If you need more such pairs, +please refer to \autoref{sec:scrlayer-scrpage-experts.pagestyle.pairs} in +\autoref{part:forExperts}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{lehead}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{cehead}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{rehead}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{lohead}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{cohead}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{rohead}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content} +\end{Declaration} +You can set the contents of the header for the +\DescRef{\LabelBase.pagestyle.plain.scrheadings} and +\DescRef{\LabelBase.pagestyle.scrheadings} page styles with these commands. +The optional argument sets the content of an element of the +\DescRef{\LabelBase.pagestyle.plain.scrheadings} page style, while the +mandatory argument sets the content of the corresponding element of the +\DescRef{\LabelBase.pagestyle.scrheadings} page style. + +The contents of even\,---\,or left-hand\,---\,pages\textnote{left-hand pages} +can be set with \Macro{lehead}, \Macro{cehead}, and \Macro{rehead}. The +``\texttt{e}'' appearing as the second letter of the commands' names stands +for ``\emph{even}''. + +The contents of odd\,---\,or right-hand\,---\,pages\textnote{right-hand pages} +can be set with \Macro{lohead}, \Macro{cohead}, and \Macro{rohead}. The +``\texttt{o}'' appearing as the second letter of the commands' names stands +for ``\emph{odd}''. + +Note\textnote{Attention!} that in one-sided printing, only right-hand pages +exist, and \LaTeX{} designates these as odd pages regardless of their page +number. + +Each header consists of a left-aligned\textnote{left aligned} element that can +be set with \Macro{lehead} or \Macro{lohead}. The ``\texttt{l}'' appearing as +the first letter of the commands' names stands for ``\emph{left aligned}''. + +Similarly, each header has a centred\textnote{centred} element that can be set +with \Macro{cehead} or \Macro{cohead}. The ``\texttt{c}'' appearing as the +first letter of the command' names stands for ``\emph{centred}''. + +Likewise, each header has a right-aligned\textnote{right aligned} element that +can be set with \Macro{rehead} or \Macro{rohead}. The ``\texttt{r}'' appearing +as the first letter of the commands' names stands for ``\emph{right +aligned}''. + +\BeginIndexGroup +\BeginIndex{FontElement}{pagehead}\LabelFontElement{pagehead}% +\BeginIndex{FontElement}{pageheadfoot}\LabelFontElement{pageheadfoot}% +These elements do not have individual font attributes that you can +change using the commands \DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont} (see \autoref{sec:maincls.textmarkup}, +\DescPageRef{maincls.cmd.setkomafont}). Instead, they use an element named +\FontElement{pagehead}. Before this element is applied, the +\FontElement{pageheadfoot} element will also be applied. See +\autoref{tab:scrlayer-scrpage.fontelements} for the defaults of these +elements.% +\EndIndexGroup + +The meaning of each command for headers in two-sided printing is illustrated +in \autoref{fig:scrlayer-scrpage.head}.% +% +\begin{figure}[tp] + \centering + \begin{picture}(\textwidth,30mm)(0,-10mm) + \thinlines + \small\ttfamily + % left/even page + \put(0,20mm){\line(1,0){.49\textwidth}}% + \put(0,0){\line(0,1){20mm}}% + \multiput(0,0)(0,-1mm){10}{\line(0,-1){.5mm}}% + \put(.49\textwidth,5mm){\line(0,1){15mm}}% + \put(.05\textwidth,10mm){% + \color{ImageRed}% + \put(-.5em,0){\line(1,0){4em}}% + \multiput(3.5em,0)(.25em,0){5}{\line(1,0){.125em}}% + \put(-.5em,0){\line(0,1){\baselineskip}}% + \put(-.5em,\baselineskip){\line(1,0){4em}}% + \multiput(3.5em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \makebox(4em,5mm)[l]{\Macro{lehead}}% + }% + \put(.465\textwidth,10mm){% + \color{ImageBlue}% + \put(-4em,0){\line(1,0){4em}}% + \multiput(-4em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(0,0){\line(0,1){\baselineskip}}% + \put(-4em,\baselineskip){\line(1,0){4em}}% + \multiput(-4em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-4.5em,0){\makebox(4em,5mm)[r]{\Macro{rehead}}}% + }% + \put(.2525\textwidth,10mm){% + \color{ImageGreen}% + \put(-2em,0){\line(1,0){4em}}% + \multiput(2em,0)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,\baselineskip){\line(1,0){4em}}% + \multiput(2em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,0){\makebox(4em,5mm)[c]{\Macro{cehead}}}% + }% + % right/odd page + \put(.51\textwidth,20mm){\line(1,0){.49\textwidth}}% + \put(.51\textwidth,5mm){\line(0,1){15mm}}% + \put(\textwidth,0){\line(0,1){20mm}}% + \multiput(\textwidth,0)(0,-1mm){10}{\line(0,-1){.5mm}}% + \put(.5325\textwidth,10mm){% + \color{ImageBlue}% + \put(0,0){\line(1,0){4em}}% + \multiput(4em,0)(.25em,0){5}{\line(1,0){.125em}}% + \put(0,0){\line(0,1){\baselineskip}}% + \put(0em,\baselineskip){\line(1,0){4em}}% + \multiput(4em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \put(.5em,0){\makebox(4em,5mm)[l]{\Macro{lohead}}}% + }% + \put(.965\textwidth,10mm){% + \color{ImageRed}% + \put(-4em,0){\line(1,0){4em}}% + \multiput(-4em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(0,0){\line(0,1){\baselineskip}}% + \put(-4em,\baselineskip){\line(1,0){4em}}% + \multiput(-4em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-4.5em,0){\makebox(4em,5mm)[r]{\Macro{rohead}}}% + }% + \put(.75\textwidth,10mm){% + \color{ImageGreen}% + \put(-2em,0){\line(1,0){4em}}% + \multiput(2em,0)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,\baselineskip){\line(1,0){4em}}% + \multiput(2em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,0){\makebox(4em,5mm)[c]{\Macro{cohead}}}% + }% + % commands for both pages + \color{ImageBlue}% + \put(.5\textwidth,0){\makebox(0,\baselineskip)[c]{\Macro{ihead}}}% + \color{ImageGreen}% + \put(.5\textwidth,-5mm){\makebox(0,\baselineskip)[c]{\Macro{chead}}} + \color{ImageRed}% + \put(.5\textwidth,-10mm){\makebox(0,\baselineskip)[c]{\Macro{ohead}}} + \put(\dimexpr.5\textwidth-2em,.5\baselineskip){% + \color{ImageBlue}% + \put(0,0){\line(-1,0){1.5em}}% + \put(-1.5em,0){\vector(0,1){5mm}}% + \color{ImageGreen}% + \put(0,-1.25\baselineskip){\line(-1,0){\dimexpr .25\textwidth-2em\relax}}% + \put(-\dimexpr + .25\textwidth-2em\relax,-1.25\baselineskip){\vector(0,1){\dimexpr + 5mm+1.25\baselineskip\relax}} + \color{ImageRed}% + \put(0,-2.5\baselineskip){\line(-1,0){\dimexpr .45\textwidth-4em\relax}}% + \put(-\dimexpr + .45\textwidth-4em\relax,-2.5\baselineskip){\vector(0,1){\dimexpr + 5mm+2.5\baselineskip\relax}} + }% + \put(\dimexpr.5\textwidth+2em,.5\baselineskip){% + \color{ImageBlue}% + \put(0,0){\line(1,0){1.5em}}% + \put(1.5em,0){\vector(0,1){5mm}}% + \color{ImageGreen}% + \put(0,-1.25\baselineskip){\line(1,0){\dimexpr .25\textwidth-2em\relax}} + \put(\dimexpr + .25\textwidth-2em\relax,-1.25\baselineskip){\vector(0,1){\dimexpr + 5mm+1.25\baselineskip\relax}} + \color{ImageRed}% + \put(0,-2.5\baselineskip){\line(1,0){\dimexpr .45\textwidth-4em\relax}} + \put(\dimexpr + .45\textwidth-4em\relax,-2.5\baselineskip){\vector(0,1){\dimexpr + 5mm+2.5\baselineskip\relax}} + }% + \end{picture} + \caption[Commands for setting the page header]% + {The meaning of the commands for setting the contents of page headers + shown on a two-page schematic} + \label{fig:scrlayer-scrpage.head} +\end{figure} +% +\begin{Example} + Suppose you're writing a short article and you want the author's name to + appear on the left side of the page and the article's title to appear + right. You can write, for example: +\begin{lstcode} + \documentclass{scrartcl} + \usepackage{scrlayer-scrpage} + \lohead{John Doe} + \rohead{Page style with \KOMAScript} + \pagestyle{scrheadings} + \begin{document} + \title{Page styles with \KOMAScript} + \author{John Doe} + \maketitle + \end{document} +\end{lstcode} + But what happens? On the first page there's only a page number in the + footer, while the header remains empty! + + The explanation is simple: The \Class{scrartcl} class, like the default + \Class{article} class, switches to the \PageStyle{plain} page style for the + page which contains the title. After the command + \DescRef{maincls.cmd.pagestyle}\PParameter{scrheadings} in the preamble of + our example, this actually refers to the + \DescRef{\LabelBase.pagestyle.plain.scrheadings} page style. The default for + this page style when using a \KOMAScript{} class is an empty page header and + a page number in the footer. In the example, the optional arguments of + \Macro{lohead} and \Macro{rohead} are omitted, so the + \DescRef{\LabelBase.pagestyle.plain.scrheadings} page style remains + unchanged and the result for the first page is actually correct. + + Now add enough text to the example after \DescRef{maincls.cmd.maketitle} + so that a second page is printed. You can simply add + \Macro{usepackage}\PParameter{lipsum}\IndexPackage{lipsum} to the document + preamble and \Macro{lipsum}\IndexCmd{lipsum} below + \DescRef{maincls.cmd.maketitle}. You will see that the header of the second + page now contains the author and the document title as we wanted. + + For comparison, you should also add the optional argument to + \Macro{lohead} and \Macro{rohead}. Change the example as follows: +\begin{lstcode} + \documentclass{scrartcl} + \usepackage{scrlayer-scrpage} + \lohead[John Doe] + {John Doe} + \rohead[Page style with \KOMAScript] + {Page style with \KOMAScript} + \pagestyle{scrheadings} + \begin{document} + \title{Page styles with \KOMAScript} + \author{John Doe} + \maketitle + \end{document} +\end{lstcode} + Now you have a header on the first page just above the title itself. + That is because you have reconfigured page style + \DescRef{\LabelBase.pagestyle.plain.scrheadings} with the two optional + arguments. As you probably appreciate, it would be better to leave this page + style unchanged, as a running head above the document title is rather + annoying. + + By the way, as an alternative to configuring + \DescRef{\LabelBase.pagestyle.plain.scrheadings} you could, if you were + using a \KOMAScript{} class, have changed the page style for pages that + contain title headers. See \DescRef{maincls.cmd.titlepagestyle}% + \important{\DescRef{maincls.cmd.titlepagestyle}}% + \IndexCmd{titlepagestyle} in \autoref{sec:maincls.pagestyle}, + \DescPageRef{maincls.cmd.titlepagestyle}. +\end{Example} + +Note\textnote{Attention!} that you should never put a section +heading or section number directly into the header using one of these +commands. Because of the asynchronous way that \TeX{} lays out and outputs +pages, doing so can easily result in the wrong number or heading text in the +running head. Instead you should use the mark mechanism, ideally in +conjunction with the procedures explained in the next section.% +\EndIndexGroup + +\begin{Declaration} + \Macro{lehead*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{cehead*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{rehead*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{lohead*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{cohead*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{rohead*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content} +\end{Declaration} +The starred versions\ChangedAt{v3.14}{\Package{scrlayer-scrpage}} of the +previously described commands differ from the ordinary versions only if you +omit the optional argument \PName{plain.scrheadings content}. In this case, +the version without the star does not change the contents of +\DescRef{\LabelBase.pagestyle.plain.scrheadings}. The starred version, on the +other hand, uses the mandatory argument \PName{scrheading content} +for \DescRef{\LabelBase.pagestyle.plain.scrheadings} as well. So if both +arguments should be the same, you can simply use the starred version with only +the mandatory argument.% + +\begin{Example} + You can shorten the previous example using the starred versions of + \DescRef{\LabelBase.cmd.lohead} and \DescRef{\LabelBase.cmd.rohead}: +\begin{lstcode} + \documentclass{scrartcl} + \usepackage{scrlayer-scrpage} + \lohead*{John Doe} + \rohead*{Page style with \KOMAScript} + \pagestyle{scrheadings} + \begin{document} + \title{Page styles with \KOMAScript} + \author{John Doe} + \maketitle + \end{document} +\end{lstcode}% +\end{Example}% +\EndIndexGroup + + +\begin{Declaration} + \Macro{lefoot}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{cefoot}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{refoot}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{lofoot}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{cofoot}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{rofoot}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content} +\end{Declaration} +You can define the contents of the footer for +\DescRef{\LabelBase.pagestyle.scrheadings} and +\DescRef{\LabelBase.pagestyle.plain.scrheadings} with these commands. The +optional argument defines the content of an element of +\DescRef{\LabelBase.pagestyle.plain.scrheadings}, while the mandatory argument +sets the content of the corresponding element of +\DescRef{\LabelBase.pagestyle.scrheadings}. + +The contents of even\,---\,or left-hand\,---\,pages\textnote{left-hand page} +are set with \Macro{lefoot}, \Macro{cefoot}, and \Macro{refoot}. The +``\texttt{e}'' appearing as the second letter of the commands' names stands +for ``\emph{even}''. + +The contents of odd\,---\,or right-hand\,---\,pages\textnote{right-hand page} +are set with \Macro{lofoot}, \Macro{cofoot}, and \Macro{rofoot}. The +``\texttt{o}'' appearing as the second letter of the commands' names stands +for ``\emph{odd}''. + +Note\textnote{Attention!} that in one-sided printing, only right-hand pages +exist, and \LaTeX{} designates these as odd pages regardless of their page +number. + +Each footer consists of a left-aligned\textnote{left aligned} element that can +be set with \Macro{lefoot} or \Macro{lofoot}. The ``\texttt{l}'' appearing as +the first letter of the commands' names stands for ``\emph{left aligned}''. + +Similarly, each footer has a centred\textnote{centred} element that can be set +with \Macro{cefoot} or \Macro{cofoot}. The ``\texttt{c}'' in the first letter +of the command' names stands for ``\emph{centred}''. + +Likewise, each footer has a right-aligned\textnote{right aligned} element that +can be set with \Macro{refoot} or \Macro{rofoot}. The ``\texttt{r}'' in the +first letter of the commands' names stands for ``\emph{right aligned}''. + +\BeginIndexGroup +\BeginIndex{FontElement}{pagefoot}\LabelFontElement{pagefoot}% +\BeginIndex{FontElement}{pageheadfoot}\LabelFontElement[foot]{pageheadfoot}% +However, these elements do not have individual font attributes that can be +changed with the \DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont} commands (see +\autoref{sec:maincls.textmarkup}, \DescPageRef{maincls.cmd.setkomafont}). +Instead, they use an element named +\FontElement{pagefoot}\important{\FontElement{pagefoot}}. Before this element +is applied, the font element +\FontElement{pageheadfoot}\important{\FontElement{pageheadfoot}} is also +applied. See \autoref{tab:scrlayer-scrpage.fontelements} for the defaults of +the fonts of these elements.% +\EndIndexGroup + +The meaning of each command for footers in two-sided printing is illustrated +in \autoref{fig:scrlayer-scrpage.foot}.% +% +\begin{figure}[bp] + \centering + \begin{picture}(\textwidth,30mm) + \thinlines + \small\ttfamily + % left page + \put(0,0){\line(1,0){.49\textwidth}}% + \put(0,0){\line(0,1){20mm}}% + \multiput(0,20mm)(0,1mm){10}{\line(0,1){.5mm}}% + \put(.49\textwidth,0){\line(0,1){15mm}}% + \put(.05\textwidth,5mm){% + \color{ImageRed}% + \put(-.5em,0){\line(1,0){4em}}% + \multiput(3.5em,0)(.25em,0){5}{\line(1,0){.125em}}% + \put(-.5em,0){\line(0,1){\baselineskip}}% + \put(-.5em,\baselineskip){\line(1,0){4em}}% + \multiput(3.5em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \makebox(4em,5mm)[l]{\Macro{lefoot}}% + }% + \put(.465\textwidth,5mm){% + \color{ImageBlue}% + \put(-4em,0){\line(1,0){4em}}% + \multiput(-4em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(0,0){\line(0,1){\baselineskip}}% + \put(-4em,\baselineskip){\line(1,0){4em}}% + \multiput(-4em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-4.5em,0){\makebox(4em,5mm)[r]{\Macro{refoot}}}% + }% + \put(.2525\textwidth,5mm){% + \color{ImageGreen}% + \put(-2em,0){\line(1,0){4em}}% + \multiput(2em,0)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,\baselineskip){\line(1,0){4em}}% + \multiput(2em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,0){\makebox(4em,5mm)[c]{\Macro{cefoot}}}% + }% + % right page + \put(.51\textwidth,0){\line(1,0){.49\textwidth}}% + \put(.51\textwidth,0){\line(0,1){15mm}}% + \put(\textwidth,0){\line(0,1){20mm}}% + \multiput(\textwidth,20mm)(0,1mm){10}{\line(0,1){.5mm}}% + \put(.5325\textwidth,5mm){% + \color{ImageBlue}% + \put(0,0){\line(1,0){4em}}% + \multiput(4em,0)(.25em,0){5}{\line(1,0){.125em}}% + \put(0,0){\line(0,1){\baselineskip}}% + \put(0em,\baselineskip){\line(1,0){4em}}% + \multiput(4em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \put(.5em,0){\makebox(4em,5mm)[l]{\Macro{lofoot}}}% + }% + \put(.965\textwidth,5mm){% + \color{ImageRed}% + \put(-4em,0){\line(1,0){4em}}% + \multiput(-4em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(0,0){\line(0,1){\baselineskip}}% + \put(-4em,\baselineskip){\line(1,0){4em}}% + \multiput(-4em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-4.5em,0){\makebox(4em,5mm)[r]{\Macro{rofoot}}}% + }% + \put(.75\textwidth,5mm){% + \color{ImageGreen}% + \put(-2em,0){\line(1,0){4em}}% + \multiput(2em,0)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,\baselineskip){\line(1,0){4em}}% + \multiput(2em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,0){\makebox(4em,5mm)[c]{\Macro{cofoot}}}% + }% + % both pages + \color{ImageBlue}% + \put(.5\textwidth,15mm){\makebox(0,\baselineskip)[c]{\Macro{ifoot}}}% + \color{ImageGreen}% + \put(.5\textwidth,20mm){\makebox(0,\baselineskip)[c]{\Macro{cfoot}}} + \color{ImageRed}% + \put(.5\textwidth,25mm){\makebox(0,\baselineskip)[c]{\Macro{ofoot}}} + \put(\dimexpr.5\textwidth-2em,.5\baselineskip){% + \color{ImageBlue}% + \put(0,15mm){\line(-1,0){1.5em}}% + \put(-1.5em,15mm){\vector(0,-1){5mm}}% + \color{ImageGreen}% + \put(0,20mm){\line(-1,0){\dimexpr .25\textwidth-2em\relax}}% + \put(-\dimexpr .25\textwidth-2em\relax,20mm){\vector(0,-1){10mm}}% + \color{ImageRed}% + \put(0,25mm){\line(-1,0){\dimexpr .45\textwidth-4em\relax}}% + \put(-\dimexpr .45\textwidth-4em\relax,25mm){\vector(0,-1){15mm}}% + }% + \put(\dimexpr.5\textwidth+2em,.5\baselineskip){% + \color{ImageBlue}% + \put(0,15mm){\line(1,0){1.5em}}% + \put(1.5em,15mm){\vector(0,-1){5mm}}% + \color{ImageGreen}% + \put(0,20mm){\line(1,0){\dimexpr .25\textwidth-2em\relax}}% + \put(\dimexpr .25\textwidth-2em\relax,20mm){\vector(0,-1){10mm}}% + \color{ImageRed}% + \put(0,25mm){\line(1,0){\dimexpr .45\textwidth-4em\relax}}% + \put(\dimexpr .45\textwidth-4em\relax,25mm){\vector(0,-1){15mm}}% + }% + \end{picture} + \caption[Commands for setting the page footer]% + {The meaning of the commands for setting the contents of page + footers shown on a two-page schematic}% + \label{fig:scrlayer-scrpage.foot} +\end{figure} +% +\begin{Example} + Let's return to the example of the short article. Let's say you want to + specify the publisher in the left side of the footer. You would change the + example above to: +\begin{lstcode} + \documentclass{scrartcl} + \usepackage{scrlayer-scrpage} + \lohead{John Doe} + \rohead{Page style with \KOMAScript} + \lofoot{Smart Alec Publishing} + \pagestyle{scrheadings} + \usepackage{lipsum} + \begin{document} + \title{Page styles with \KOMAScript} + \author{John Doe} + \maketitle + \lipsum + \end{document} +\end{lstcode} + Once again the publisher is not printed on the first page with the title. + The reason is the same as in the example with + \DescRef{\LabelBase.cmd.lohead} above. And the solution for getting the + publisher on the first page is similar: +\begin{lstcode} + \lofoot[Smart Alec Publishing] + {Smart Alec Publishing} +\end{lstcode} + Now you decide\textnote{font change}\important{\FontElement{pageheadfoot}}% + \IndexFontElement{pageheadfoot} that the header and footer should use an + upright but smaller font in place of the default slanted font: +\begin{lstcode} + \setkomafont{pageheadfoot}{\small} +\end{lstcode} + In addition, the header, but not the footer, should be bold: +\begin{lstcode} + \setkomafont{pagehead}{\bfseries} +\end{lstcode} + It is important\textnote{Attention!} that this command does not occur until + after \Package{scrpage-scrlayer} has been loaded because the \KOMAScript{} + class defines \DescRef{\LabelBase.fontelement.pagehead} as an alias for + \DescRef{\LabelBase.fontelement.pageheadfoot}. Only by loading + \Package{scrpage-scrlayer} will \DescRef{\LabelBase.fontelement.pagehead} + become an element independent of + \DescRef{\LabelBase.fontelement.pageheadfoot}. + + Now add one more \Macro{lipsum} and the + \Option{twoside}\IndexOption{twoside}\important{\Option{twoside}} option + when loading \Class{scrartcl}. First of all, you will see the page number + moves from the centre to the outer margin of the page footer, due to the + changed defaults of \DescRef{\LabelBase.pagestyle.scrheadings} and + \DescRef{\LabelBase.pagestyle.plain.scrheadings} for two-sided printing with + a \KOMAScript{} class. + + Simultaneously, the author, document title, and publisher will vanish from + page~2. They only appear on page~3. That's because we've only used + commands for odd pages. You can recognise this by the ``\texttt{o}'' in the + second position of the command names. + + Now, we could simply copy those commands and replace the ``\texttt{o}'' with + an ``\texttt{e}'' to define the contents of \emph{even} pages. But with + two-sided printing, it makes more sense to use mirror-inverted elements, + i.\,e. the left element of an even page should become the right element of + the odd page and visa versa. To achieve this, we also replace the first + letter ``\texttt{l}'' with ``\texttt{r}'': +\begin{lstcode} + \documentclass[twoside]{scrartcl} + \usepackage{scrlayer-scrpage} + \lohead{John Doe} + \rohead{Page style with \KOMAScript} + \lofoot[Smart Alec Publishing] + {Smart Alec Publishing} + \rehead{John Doe} + \lohead{Page style with \KOMAScript} + \refoot[Smart Alec Publishing] + {Smart Alec Publishing} + \pagestyle{scrheadings} + \usepackage{lipsum} + \begin{document} + \title{Page styles with \KOMAScript} + \author{John Doe} + \maketitle + \lipsum\lipsum + \end{document} +\end{lstcode} +\end{Example} +% +Since it is a bit cumbersome to define left and right pages separately in +cases such as the previous example, a simpler solution for this common case is +introduced below. + +Allow me once again an important note:\textnote{Attention!} you should +never put a section heading or section number directly into the footer using +one of these commands. Because of the asynchronous way that \TeX{} lays out and +outputs pages, doing so can easily result in the wrong number or heading text +in the running head. Instead you should use the mark mechanism, ideally in +conjunction with the procedures explained in the next section.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{lefoot*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{cefoot*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{refoot*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{lofoot*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{cofoot*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{rofoot*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content} +\end{Declaration} +The starred versions\ChangedAt{v3.14}{\Package{scrlayer-scrpage}} of the +previously described commands differ only if you omit the optional argument +\OParameter{plain.scrheadings content}. In this case, the version without the +star does not change the contents of +\DescRef{\LabelBase.pagestyle.plain.scrheadings}. The starred version, on the +other hand, uses the mandatory argument \PName{scrheading content} for +\DescRef{\LabelBase.pagestyle.plain.scrheadings} as well. So if both arguments +should be the same, you can simply use the starred version with just the +mandatory argument.% + +\begin{Example} + You can shorten the previous example using the star versions of + \DescRef{\LabelBase.cmd.lofoot} and \DescRef{\LabelBase.cmd.refoot}: +\begin{lstcode} + \documentclass[twoside]{scrartcl} + \usepackage{scrlayer-scrpage} + \lohead{John Doe} + \rohead{Page style with \KOMAScript} + \lofoot*{Smart Alec Publishing} + \rehead{John Doe} + \lohead{Page style with \KOMAScript} + \refoot*{Smart Alec Publishing} + \pagestyle{scrheadings} + \usepackage{lipsum} + \begin{document} + \title{Page styles with \KOMAScript} + \author{John Doe} + \maketitle + \lipsum\lipsum + \end{document} +\end{lstcode} +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ohead}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{chead}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{ihead}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{ofoot}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{cfoot}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{ifoot}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content} +\end{Declaration} +To configure the headers and footers for two-sided printing with the +previously described commands, you would have to configure the left and right +sides separately from one another. In most cases, however, the left and right +sides are more or less symmetrical. An item that appears on the left of an +even page should appear on the right of an odd page and vice versa. Centred +elements are usually centred on both sides. + +To simplify the definition of such symmetric page styles, +\Package{scrlayer-scrpage} has shortcuts. The \Macro{ohead} command +corresponds to a call to both \DescRef{\LabelBase.cmd.lehead} and +\DescRef{\LabelBase.cmd.rohead}. The \Macro{chead} command corresponds to a +call to both \DescRef{\LabelBase.cmd.cehead} and +\DescRef{\LabelBase.cmd.cohead}. And the \Macro{ihead} command corresponds to +a call to both \DescRef{\LabelBase.cmd.rehead} and +\DescRef{\LabelBase.cmd.lohead}. The same applies to the equivalent commands +for the page footer. An outline of these relationships can also be found in +\autoref{fig:scrlayer-scrpage.head} on \autopageref{fig:scrlayer-scrpage.head} +and \autoref{fig:scrlayer-scrpage.foot} on +\autopageref{fig:scrlayer-scrpage.foot}. +% +\begin{Example} + You can simplify the previous example using the new commands: +\begin{lstcode} + \documentclass[twoside]{scrartcl} + \usepackage{scrlayer-scrpage} + \ihead{John Doe} + \ohead{Page style with \KOMAScript} + \ifoot[Smart Alec Publishing] + {Smart Alec Publishing} + \pagestyle{scrheadings} + \usepackage{lipsum} + \begin{document} + \title{Page styles with \KOMAScript} + \author{John Doe} + \maketitle + \lipsum\lipsum + \end{document} +\end{lstcode} +\iffalse% + As you can see, you can use half the number of commands but get the same + result. % +\fi% +\end{Example}% +Because one-sided printing treats all pages as odd pages, these commands are +synonymous with the corresponding right-side commands when in one-sided mode. +Therefore in most cases you will only need these six commands instead of the +twelve described before. + +Allow me once again an important note:\textnote{Attention!} you should never +put a section heading or section number directly into the footer using one of +these commands. Because of the asynchronous way that \TeX{} lays out and +outputs pages, doing so can easily result in the wrong number or heading text +in the running head. Instead you should use the mark mechanism, ideally in +conjunction with the procedures explained in the next section.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ohead*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{chead*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{ihead*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{ofoot*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{cfoot*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content}% + \Macro{ifoot*}\OParameter{plain.scrheadings content}% + \Parameter{scrheadings content} +\end{Declaration} +The previously described commands also have starred +versions\ChangedAt{v3.14}{\Package{scrlayer-scrpage}} that differ only if you +omit the optional argument \OParameter{plain.scrheadings content}. In this +case, the version without a star does not change the content of +\DescRef{\LabelBase.pagestyle.plain.scrheadings}. The version with the star, +on the other hand, also uses the mandatory argument \PName{scrheadings +content} for \DescRef{\LabelBase.pagestyle.plain.scrheadings}. So if both +arguments should be the same, you can simply use the starred version with only +the mandatory argument.% + +\begin{Example} + You can shorten the previous example using the star version of + \DescRef{\LabelBase.cmd.ifoot}: +\begin{lstcode} + \documentclass[twoside]{scrartcl} + \usepackage{scrlayer-scrpage} + \ihead{John Doe} + \ohead{Page style with \KOMAScript} + \ifoot*{Smart Alec Publishing} + \pagestyle{scrheadings} + \usepackage{lipsum} + \begin{document} + \title{Page styles with \KOMAScript} + \author{John Doe} + \maketitle + \lipsum\lipsum + \end{document} +\end{lstcode}% +\end{Example}% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{pagestyleset}{setting} +\end{Declaration} +\BeginIndex{Option}{pagestyleset~=KOMA-Script}% +\BeginIndex{Option}{pagestyleset~=standard}% +The examples above refer several times to the default settings of the page +styles \DescRef{\LabelBase.pagestyle.scrheadings}\IndexPagestyle{scrheadings} +and \DescRef{\LabelBase.pagestyle.plain.scrheadings}% +\IndexPagestyle{plain.scrheadings}. In fact, \Package{scrlayer-scrpage} +currently provides two different defaults for these page styles. You can +select them manually with the \Option{pagestyleset} option. + +The +\PValue{KOMA-Script}\important{\OptionValue{pagestyleset}{KOMA-Script}} +\PName{setting} selects the defaults, which are also set automatically if the +option is not specified and a \KOMAScript{} class is detected. In two-sided +printing, \DescRef{\LabelBase.pagestyle.scrheadings} uses outer-aligned +running heads in the header and outer-aligned page numbers in the footer. +In one-sided printing, the running head will be printed in the +middle of the header and the page number in the middle of the footer. Upper- +and lower-case letters are used in the automatic running heads as they +actually appear in the sectioning headings. This corresponds to the +\OptionValueRef{\LabelBase}{markcase}{used}\IndexOption{markcase~=used}% +\important{\OptionValueRef{\LabelBase}{markcase}{used}} option. The +\DescRef{\LabelBase.pagestyle.plain.scrheadings} page style has no running +heads, but the page numbers are printed in the same manner. + +However, if the \hyperref[cha:scrlttr2]{\Class{scrlttr2}}% +\important{\hyperref[cha:scrlttr2]{\Class{scrlttr2}}}% +\IndexClass{scrlttr2} class is detected, the default settings are based on the +page styles of that class. See \autoref{sec:scrlttr2.pagestyle}, +\autopageref{sec:scrlttr2.pagestyle}. + +The +\PValue{standard}\important{\OptionValue{pagestyleset}{standard}} +\PName{setting} selects defaults that match the page styles of the standard +classes. This is also activated automatically if the option has not been +specified and no \KOMAScript{} class is detected. In this case, for two-sided +printing \DescRef{\LabelBase.pagestyle.scrheadings} uses running heads +inner-aligned in the header, and the page numbers will be printed\,---\,also +in the header\,---\,outer-aligned. One-sided printing uses the same settings, +but since only right-hand pages exist in this mode, the running head will +always be left-aligned and the page number right-aligned. The automatic +running heads\,---\,despite considerable typographic objections\,---\,are +converted to capital letters, as they would be with +\OptionValueRef{\LabelBase}{markcase}{upper}\IndexOption{markcase~=upper}% +\important{\OptionValueRef{\LabelBase}{markcase}{upper}}. In one-sided +printing, the \DescRef{\LabelBase.pagestyle.plain.scrheadings} page style +differs considerably from \DescRef{\LabelBase.pagestyle.scrheadings} because +the page number is printed in the middle of the footer. +Unlike\textnote{\KOMAScript{} vs. standard classes} the \PageStyle{plain} page +style in the standard classes, +\DescRef{\LabelBase.pagestyle.plain.scrheadings} omits the page number in +two-sided printing. The standard classes print the page number in the middle +of the footer, which does not match the rest of the page styles in two-sided +printing. +\iffalse % Umbruchkorrekturtext + If you want the page number back +\begin{lstcode} + \cfoot[\pagemark]{} +\end{lstcode} + will restore it. % +\fi% +The running head is omitted in \DescRef{\LabelBase.pagestyle.plain.scrheadings}. + +Note\textnote{Attention!} that using this option activates the +\DescRef{\LabelBase.pagestyle.scrheadings}\IndexPagestyle{scrheadings}% +\important{\DescRef{\LabelBase.pagestyle.scrheadings}} page style. +\iffalse% Umbruchkorrektur + This also applies if you use the option within the document.% +\fi +% +\EndIndexGroup + + +\LoadCommonFile{pagestylemanipulation} % \section{Manipulating Defined Page Styles} + +\begin{Declaration} + \OptionVName{headwidth}{width\textup{:}offset\textup{:}offset}% + \OptionVName{footwidth}{width\textup{:}offset\textup{:}offset} +\end{Declaration} +By default the header\Index{header>width} and footer\Index{footer>width} are +as wide as the type area. However, you can change this using these +\KOMAScript{} options. The value \PName{width} is the desired width of the +header or footer. The \PName{offset} defines how far the header or footer +should be moved towards the outer\,---\,in one-sided printing to the +right\,---\,margin. All three\ChangedAt{v3.14}{\Package{scrlayer-scrpage}} +values are optional and can be omitted. If you omit a value, you can also omit +the associated colon to the left of it. If only one \PName{offset} is +specified, it is used for both odd and even pages. Otherwise, the first +\PName{offset} is used for odd and the second \PName{offset} for even pages in +two-sided mode. If you only use one value without a colon, this will be the +\PName{width}. + +For both the \PName{width} and the \PName{offset} you can use any valid length +value, \LaTeX{} length, \TeX{} dimension, or \TeX{} skip. In addition, you can +use an \eTeX{} dimension expression with the basic arithmetic operations +\texttt{+}, \texttt{-}, \texttt{*}, \texttt{/}, and parentheses. See +\cite[section~3.5]{manual:eTeX} for more information on such expressions. See +\autoref{sec:scrlayer-scrpage.options} for more information on using a +\LaTeX{} length as an option value. The \PName{width} can also be one of the +symbolic values shown in \autoref{tab:scrlayer-scrpage.symbolic.values}. + +By default the header and the footer are the width of the text area. The +default \PName{offset} depends on the selected \PName{width}. One-sided +printing typically uses half the difference between \PName{width} and the +width of the text area. This centres the header horizontally above the text +area. Two-sided printing, on the other hand, uses only a third of the +difference between \PName{width} and the width of the text area. However, if +\PName{width} is the width of the whole text area and the marginal note +column, the default \PName{offset} will be zero. If this is too complicated +for you, you should simply specify the desired \PName{offset} yourself. +% +\begin{table} + \centering + \caption[Symbolic values for the \Option{headwidth} and \Option{footwidth} + options]{Available symbolic values for the \PName{width} value of options + \Option{headwidth} and \Option{footwidth}} + \label{tab:scrlayer-scrpage.symbolic.values} + \begin{desctabular} + \entry{\PValue{foot}}{% + the current width of the footer% + }% + \entry{\PValue{footbotline}}{% + the current length of the horizontal line below the footer% + }% + \entry{\PValue{footsepline}}{% + the current length of the horizontal line above the footer% + } \entry{\PValue{head}}{% + the current width of the header% + }% + \entry{\PValue{headsepline}}{% + the current length of the horizontal line below the header% + }% + \entry{\PValue{headtopline}}{% + the current length of the horizontal line above the header% + }% + \entry{\PValue{marginpar}}{% + the width of the marginal note column including the distance + between the text area and the marginal note column% + }% + \entry{\PValue{page}}{% + the width of the page taking into account any binding correction defined + with the help of the \Package{typearea} package (see the + \DescRef{typearea.option.BCOR} option in + \autoref{sec:typearea.typearea}, \DescPageRef{typearea.option.BCOR})% + }% + \entry{\PValue{paper}}{% + the width of the paper without considering any binding correction% + }% + \entry{\PValue{text}}{% + the width of the text area% + }% + \entry{\PValue{textwithmarginpar}}{% + the width of the text area including the marginal note column and + the distance between the two (Note: only in this case is + the default for \PName{offset} zero)% + }% + \end{desctabular} +\end{table} +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{headtopline}{thickness\textup{:}length}% + \OptionVName{headsepline}{thickness\textup{:}length}% + \OptionVName{footsepline}{thickness\textup{:}length}% + \OptionVName{footbotline}{thickness\textup{:}length} +\end{Declaration} +\BeginIndex{Option}{headtopline~=\PName{thickness\textup{:}length}}% +\BeginIndex{Option}{headsepline~=\PName{thickness\textup{:}length}}% +\BeginIndex{Option}{footsepline~=\PName{thickness\textup{:}length}}% +\BeginIndex{Option}{footbotline~=\PName{thickness\textup{:}length}}% +The \KOMAScript{} classes provide only one separation line below the header +and another above the footer, and you can only switch these lines on or off. +But the \Package{scrlayer-scrpage} package also lets you place lines above the +header and below the footer. And for all four lines, you can not only switch +them on an off but also configure their \PName{length} and \PName{thickness}. + +Both values are optional. If you omit the \PName{thickness}, a default value +of 0.4\Unit{pt} is used, producing a so-called \emph{hairline}. If you omit +the \PName{length}, the width of the header or footer will be used. If you +omit both, you can also omit the colon. If you use only one value without +colon, this is the \PName{thickness}. + +Of course, the \PName{length} can be not just shorter than the current width +of the header or footer but also longer. See also the options +\DescRef{\LabelBase.option.ilines}\IndexOption{ilines}% +\important{\DescRef{\LabelBase.option.ilines}, +\DescRef{\LabelBase.option.clines}, \DescRef{\LabelBase.option.olines}}, +\DescRef{\LabelBase.option.clines}\IndexOption{clines} and +\DescRef{\LabelBase.option.olines}\IndexOption{olines} later in this section. + +\BeginIndexGroup +\BeginIndex{FontElement}{headtopline}\LabelFontElement{headtopline}% +\BeginIndex{FontElement}{headsepline}\LabelFontElement{headsepline}% +\BeginIndex{FontElement}{footsepline}\LabelFontElement{footsepline}% +\BeginIndex{FontElement}{footbotline}\LabelFontElement{footbotline}% +In addition to the length and thickness, you can also change the colour of the +lines. Initially the colour depends on the colour of the header or footer. In +addition to this, however, the settings of the corresponding elements +\important[i]{\FontElement{headtopline}\\ + \FontElement{headsepline}\\ + \FontElement{footsepline}\\ + \FontElement{footbotline}} \FontElement{headtopline}, +\FontElement{headsepline}, \FontElement{footsepline} and +\FontElement{footbotline} are applied. You can +change these using the \DescRef{\LabelBase.cmd.setkomafont} or +\DescRef{\LabelBase.cmd.addtokomafont} commands (see +\autoref{sec:maincls.textmarkup}, \DescPageRef{maincls.cmd.setkomafont}). +By default these elements are empty, so they do not change the current font or +colour. Font changes at this point, unlike colour changes, make little sense +anyway and are therefore not recommended for these elements.% +\EndIndexGroup +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{plainheadtopline}{simple switch}% + \OptionVName{plainheadsepline}{simple switch}% + \OptionVName{plainfootsepline}{simple switch}% + \OptionVName{plainfootbotline}{simple switch} +\end{Declaration} +You can use these options to apply the settings for the lines to the +\PageStyle{plain} page style. You can find the available values for +\PName{simple switch} in \autoref{tab:truefalseswitch} on +\autopageref{tab:truefalseswitch}. If one of these options is activated, the +\PageStyle{plain} page style will use the line settings given by the options +and commands described above. If the option is deactivated, the +\PageStyle{plain} will not show the corresponding line.% +\EndIndexGroup + + +\begin{Declaration} + \Option{ilines}% + \Option{clines}% + \Option{olines} +\end{Declaration} +As previously explained, dividing lines for the header or footer can be longer +or shorter than the width of the header or footer respectively. But the +question remains how these lines are aligned. By default, all lines are +aligned to the left margin in one-sided printing and to the inner margin in +two-sided printing. This corresponds to using the \Option{ilines} option. +Alternatively, you can use the \Option{clines} option to centre the lines with +respect to the width of the header or footer, or the \Option{olines} option to +align them to the outer (or right) margin.% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrlayer.tex b/macros/latex/contrib/koma-script/source-doc/english/scrlayer.tex new file mode 100644 index 0000000000..5488fe2cb0 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrlayer.tex @@ -0,0 +1,1596 @@ +% ====================================================================== +% scrlayer.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlayer.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrlayer of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber scrlayer in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrlayer.tex} + [$Date: 2018-12-15 15:01:34 +0100 (Sat, 15 Dec 2018) $ + KOMA-Script guide (chapter:scrlayer)] + +\translator{Markus Kohm\and Karl Hagen} + +% Date of the translated German file: 2018-12-15 + +\chapter[{Defining Layers and Page Styles with \Package{scrlayer}}] + {Defining\ChangedAt{v3.12}{\Package{scrlayer}} Layers and Page Styles with + \Package{scrlayer}} +\labelbase{scrlayer} + +\BeginIndexGroup +\BeginIndex{Package}{scrlayer}% +\BeginIndex{}{layer}% +Most users of graphics software are already familiar with the layer model for +a page. Such a model is rather alien to \LaTeX{} itself, but some packages, +like \Package{eso-pic} or \Package{textpos}, provide a kind of +background or foreground layer. \Package{scrlayer} is another package that +provides such background and foreground layers, but unlike the packages +mentioned above, these layers are part of the page style. As a result, you can +switch between different layers simply by switching the page style. + +To do so, the package also supports a low-level interface for defining page +styles that are based on a stack or list of layers, for adding layers to such +a layer stack, either at the top or the bottom, or before or after a specific +layer, and for removing individual layers and duplicates from a stack. In a +nutshell, the page style interface of \Package{scrlayer} provides commands to +define page styles based on a stack of layers and to manage those stacks. + +Nevertheless, using the layers directly is recommended for advanced users +only. Interfaces for beginners and average users are provided by additional +packages that in turn load \Package{scrlayer}. See +\autoref{cha:scrlayer-scrpage} in \autoref{part:forAuthors} of this +\iffree{manual}{book}. + + +\LoadCommonFile{options} % \section{Early or Late Selection of Options} + +\section{Generic Information} +\seclabel{generic.information} + +The package needs some generic information about the class being used. Class +authors can help \Package{scrlayer} by providing the appropriate information. +Otherwise the package will try to determine this information for itself. This +works, for example, for the standard and the \KOMAScript{} classes. It may +work with other classes, or it may fail in whole or in part. + +This section describes some of the information that class authors can provide. +Normally, users should not have to worry about it. + +\begin{Declaration} + \Macro{if@chapter}\ \PName{then code}\ \textMacro{else}\ % + \PName{else code}\ \textMacro{fi}% +\end{Declaration} +If \Macro{if@chapter} is defined and corresponds to +\Macro{iftrue}\IndexCmd{iftrue}, \Package{scrlayer} takes the chapter level +into account when, for example, processing the +\DescRef{\LabelBase.option.automark} option. If it is defined but is not +\Macro{iftrue}, \Package{scrlayer} handles only the +\DescRef{maincls.cmd.part}, \DescRef{maincls.cmd.section}, +\DescRef{maincls.cmd.subsection}, \Macro{sub\dots subsection}, +\DescRef{maincls.cmd.paragraph}, \DescRef{maincls.cmd.subparagraph}, +\Macro{sub\dots subparagraph} sectioning units. If the macro is undefined, +\Package{scrlayer} searches for \DescRef{maincls.cmd.chapter}. If +\DescRef{maincls.cmd.chapter} is defined and does not correspond to +\Macro{relax}, \Package{scrlayer} defines \Macro{if@chapter} to +\Macro{iftrue}. Otherwise \Macro{if@chapter} becomes +\Macro{iffalse}\IndexCmd{iffalse}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{if@mainmatter}\ \PName{then code}\ % + \textMacro{else}\ \PName{else code}\ \textMacro{fi}% +\end{Declaration} +Classes like \Class{book} or \Class{scrbook} provide +\DescRef{maincls.cmd.frontmatter}\IndexCmd{frontmatter}, +\DescRef{maincls.cmd.mainmatter}\IndexCmd{mainmatter}, and +\DescRef{maincls.cmd.backmatter}\IndexCmd{backmatter} to switch between the +front, main, and end parts of a book. Typically, these classes also use +\Macro{if@mainmatter} internally to decide whether the current text is part of +the main body of the document or not. Classes like \Class{report} and +\Class{article} have no \DescRef{maincls.cmd.frontmatter}, +\DescRef{maincls.cmd.mainmatter}, or \DescRef{maincls.cmd.backmatter} and +therefore also lack \Macro{if@mainmatter}. + +It is easier for \Package{scrlayer} to avoid constantly testing for the +existence of these commands to decide whether to work in the main matter or +not, and instead to use \Macro{if@mainmatter}\IndexCmd{iftrue} with classes +like \Class{report} and \Class{article}. So if \Macro{if@mainmatter} is not +defined, \Package{scrlayer} defines it as a synonym for \Macro{iftrue}. + +Some classes, however, define \DescRef{maincls.cmd.frontmatter}, +\DescRef{maincls.cmd.mainmatter}, or \DescRef{maincls.cmd.backmatter} but not +\Macro{if@mainmatter}. In this case, \Package{scrlayer} also defines +\Macro{if@mainmatter} to be \Macro{iftrue} and it extends definition of +\DescRef{maincls.cmd.frontmatter}, \DescRef{maincls.cmd.mainmatter}, and +\DescRef{maincls.cmd.backmatter} to set \Macro{if@mainmatter} properly. +However, if there are other, comparable commands for switching between +different document parts. \Package{scrlayer} will not recognize them, does not +test for them, and therefore cannot extend them appropriately. In this case, +\Package{scrlayer} needs help of the class author to set \Macro{if@mainmatter} +correctly.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DeclareSectionNumberDepth}\Parameter{level name}% + \Parameter{level depth} +\end{Declaration} +Generally each section level is assigned an integer number indicating its +depth in the document structure. \LaTeX{} needs this to manage the hierarchy +of the section levels. But normally these values are known only to the +particular class that defines the section commands. This class then uses the +appropriate numbers inside the corresponding commands. + +The \Package{scrlayer} package also needs information about the section +hierarchy. With the help of \Macro{DeclareSectionNumberDepth}, you can map the +name of a heading level to a corresponding \PName{level depth}. For example, +for the standard \Class{book} class, the \PName{level name}s would be +\PValue{part}, \PValue{chapter}, \PValue{section}, \PValue{subsection}, +\PValue{subsubsection}, \PValue{paragraph}, and \PValue{subparagraph}, and the +corresponding \PName{level depth}s would be -1, 0, 1, 2, 3, 4, and 5. + +The \Package{scrlayer} package tries to determine the \PName{level depth}s on +its own while loading and again during \Macro{begin}\PParameter{document}. But +if this fails, for example because you use completely different sectioning +commands, you can define the relationship explicitly with +\Macro{DeclareSectionNumberDepth}.% +\EndIndexGroup + + +\section{Declaring Layers} +\seclabel{layers} + +A layer is an abstract model of a page. Unlike a real, physical sheet of +paper, this page is completely transparent. Typically, multiple layers are +stacked atop one another and opaque material on one layer hides material on +the layers below. The stack of layers is then merged to form the physical +page. The \Package{scrlayer} package provides two such stacks for each page: a +background stack and a foreground stack. The background stack is printed +beneath the normal page content, while the foreground stack is printed above +it. The normal page content is therefore a kind of a dividing layer between +the two layer stacks. + +A layer has several attributes that can be understood as answers to some basic +questions: +\iffree{\begin{description}}{% + \begingroup + \RedeclareSectionCommand[beforeskip=.5\baselineskip plus .25\baselineskip + minus .1\baselineskip]{paragraph}% + \renewcommand*\item[4][]{\paragraph*{#3{#4}#1}}% + }% +\item[Does the layer belong to the foreground or the background?]% + \leavevmode\textnote{foreground or background}\hskip 0pt + Background layers are output before the normal content of the page. + Therefore they appear behind or beneath the normal content of the page. + Foreground layers are then output after the normal content. Therefore they + appear on top of the normal content of the page. By default, a layer is both + a background layer \emph{and} a foreground layer and therefore is printed + twice. Usually it makes sense to limit the layer explicitly to either the + foreground or the background. +\item[What is the position of the layer?]% + \leavevmode\textnote{horizontal and vertical position}\hskip 0pt + To answer this question, there are attributes to define the layer's + horizontal and vertical position. +\item[How big is the layer?\textnote{horizontal and vertical size}]% + As with the position, there are also attributes to define the width and + height of a layer. Thus a layer can be smaller or larger than the paper + and it can be placed at different positions on the paper. +\item[How are the horizontal and vertical positions measured?]% + \leavevmode\textnote{alignment}\hskip 0pt + This question is answered by the alignment attribute. The horizontal + position can be measured from the left edge of the paper to the left edge of + the layer, to the centre of the layer, to the right edge of the layer. + Similarly, the vertical position can be measured from the top edge of the + paper to the top edge of the layer, the centre of the layer, or the bottom + edge of the layer. +\item[Is the layer intended for text or picture output?]% + \leavevmode\textnote{text or picture}\hskip 0pt + This question is closely related to the position. For example, users often + expect the origin for a picture to be at the lower left corner of the layer. + But this would not be suitable for text output. Therefore the origin of a + text layer is the height of a standard text line below the top left corner + of the layer. Picture layers, on the other hand, create a + \Environment{picture}\IndexEnv{picture} environment in which additional + positioning commands are available. +\item[Should the layer be printed on left or right pages?]% + \leavevmode\textnote{left or right page}\hskip 0pt + By default a layer will be printed on all pages. Note that \LaTeX{} treats + even pages as left-side pages and odd pages as right-side pages, but in + one-sided printing, only right-hand pages exist regardless of the page + number. +\item[Should the layer be printed in one-sided or two-sided mode?]% + \leavevmode\textnote{one-sided or two-sided}\hskip 0pt + By default a layer will be printed in both one-sided and two-sided + printing. Nonetheless, a layer that is restricted to even pages will never + be printed in one-sided printing and therefore is not a one-sided layer. +\item[Should the layer be printed on float pages or normal pages?]% + \leavevmode\textnote{float page or normal page}\hskip 0pt + \LaTeX{} produces float pages for objects from environments like tables or + figures if they are allowed to appear on a page without normal page contents + (see option \PValue{p} for \Environment{figure} or \Environment{table}). In + effect, the entire page is allowed to float within the document. Normal + pages in this sense are all pages that are not float pages. Normal pages can + also contain floats at the top, in the middle, or at the bottom of the page. + Very large floats can give the impression of being page floats, while in + reality they are floating environments placed at the top of a normal page. +\item[What are the contents of the layer?]% + \leavevmode\textnote{contents}\hskip 0pt + The corresponding attribute simply contains what should be printed whenever + the layer is output. +\iffree{\end{description}}{% + \endgroup\par\bigskip\noindent\ignorespaces +}% +These eight questions immediately give rise to a number of attributes. Later +\iffree{in this guide}, we will describe additional attributes. However, they +are only defined for convenience and can be expressed by a combination of +these primary attributes. + + +\begin{Declaration} + \Macro{DeclareLayer}\OParameter{option list}\Parameter{layer name}% + \Macro{DeclareNewLayer}\OParameter{option list}\Parameter{layer name}% + \Macro{ProvideLayer}\OParameter{option list}\Parameter{layer name}% + \Macro{RedeclareLayer}\OParameter{option list}\Parameter{layer name}% + \Macro{ModifyLayer}\OParameter{option list}\Parameter{layer name} +\end{Declaration} +These commands can be used to define layers. The \PName{layer name} must be +fully expandable and should expand to ASCII letters only. Some additional +characters are accepted, but their use is only recommended for advanced users. + +The \Macro{DeclareLayer} command does not care whether or not a layer with the +given \PName{layer name} already exists. It will under all circumstances +define the layer with the attributes specified in the \PName{option list}. An +\PName{option} can be either a key or a key followed by an equal sign and +a value. Multiple options are separated by commas. To use a comma or a white +space within the value of an option, you must put the value inside curly +brackets. See \autoref{tab:scrlayer.layerkeys} for more information on keys, +values, and the corresponding attributes. + +Unlike \Macro{DeclareLayer}, \Macro{DeclareNewLayer} reports an error if a +layer with the same \PName{layer name} already exists. This prevents the user +from accidentally using the same \PName{layer name} more than once. This +is especially useful when classes or packages also define layers internally. + +In contrast, \Macro{ProvideLayer} only defines a layer if there is no layer +with the same name already. If the name is in use for another layer, the new +definition is ignored. Therefore this command has the meaning, \emph{define + the layer only if it does not already exist.} + +If you want to redefine an existing layer, you can use \Macro{RedeclareLayer} +or \Macro{ModifyLayer}. With \Macro{RedeclareLayer}, the layer is first reset +to the default settings and then completely redefined via the specified +options list. In contrast, \Macro{ModifyLayer} does not reset the layer. +Only those attributes which are explicitly set in the \PName{option list} will +be changed. Applying either command to a previously undefined \PName{layer + name} results in an error. + +\begin{desclist} + \desccaption{% + Options for defining page layers and the meaning of the + corresponding layer attribute\label{tab:scrlayer.layerkeys}% + }{% + Options for defining layers (\emph{continued})% + }% + \entry{% + \ChangedAt{v3.16}{\Package{scrlayer}}% + \OptionVName{addcontents}{Code}}{% + The specified \PName{code} will be appended to the current value of the + \Option{contents} attribute, so the new content will appear at the end of + the existing content. For more information about the handling of + \PName{code} see the \Option{contents} option.% + }% + \entry{% + \ChangedAt{v3.16}{\Package{scrlayer}}% + \OptionVName{addheight}{additional height}}{% + The current value of the \Option{height} attribute will be increased by + the value of this option. You can use the same kind of values as for + \Option{height}.% + }% + \entry{% + \ChangedAt{v3.16}{\Package{scrlayer}}% + \OptionVName{addhoffset}{additional horizontal offset}}{% + The current value of the \Option{hoffset} attribute will be increased by + the value of this option. You can use the same kind of values as for + \Option{hoffset}.% + }% + \entry{% + \ChangedAt{v3.16}{\Package{scrlayer}}% + \OptionVName{addvoffset}{additional vertical offset}}{% + The current value of the \Option{voffset} attribute will be increased by + the value of this option. You can use the same kind of values as for + \Option{voffset}.% + }% + \entry{% + \ChangedAt{v3.16}{\Package{scrlayer}}% + \OptionVName{addwidth}{additional width}}{% + The current value of the \Option{width} attribute will be increased by + the value of this option. You can use the same kind of values as for + \Option{width}.% + }% + \nentry{\KOption{align}{\PName{alignment characters}}}{% + The \PName{alignment characters} define the desired alignment of the + layer. Each \PName{alignment character} determines how the \PName{length} + of either the \Option{hoffset} or the \Option{voffset} option is + interpreted. Multiple \PName{alignment character}s can be used together + (without spaces or commas) and are evaluated in the order they occur. + Macros are not permitted in the value of the option. Valid + \PName{alignment character}s are: + \begin{description} + \item[\PValue{b} --] align the layer at its bottom edge; the value of + \Option{voffset} is the distance from the top edge of the paper to the + bottom of the layer. + \item[\PValue{c} --] align the layer at its centre; the values of + \Option{voffset} and \Option{hoffset} are interpreted as the distance + from the top left corner of the paper to the centre of the layer. + \item[\PValue{l} --] align the layer at its left edge; the value of + \Option{hoffset} is interpreted as the distance from the left edge of + the paper to the left edge of the layer. + \item[\PValue{r} --] align the layer at its right edge; the value of + \Option{hoffset} is interpreted as the distance from the left edge of + the paper to the right edge of the layer. + \item[\PValue{t} --] align the layer at its top edge; the value of + \Option{voffset} is interpreted as the distance from the top edge of the + paper to the top edge of the layer. + \end{description}% + }% + \entry{\KOption{area}{% + \Parameter{hoffset}\Parameter{voffset}% + \Parameter{width}\Parameter{height}}}{% + This composite option sets the primary attributes + \OptionValue{hoffset}{horizontal offset}, \OptionValue{voffset}{vertical + offset}, \OptionValue{width}{width}, \OptionValue{height}{height}.% + }% + \entry{\ChangedAt{v3.18}{\Package{scrlayer}}% + \Option{backandforeground}}{% + This option removes the restriction of a layer to the foreground or the + background. In general, this option makes little sense, but it is provided + for the sake of a complete user interface. This option does not expect or + allow a value.% + }% + \entry{\Option{background}}{% + This option displays the layer in the background only. The default is to + display layers in both the background and the foreground. This option does + not expect or allow a value.% + }% + \entry{\Option{bottommargin}}{% + This composite option sets the primary attributes \Option{hoffset}, + \Option{voffset}, \Option{width}, \Option{height}, and \Option{align} so + that the layer spans the paper horizontally from the left edge to the + right and vertically from immediately beneath the footer to the bottom + edge of the paper.% + }% + \entry{\KOption{clone}{\PName{layer name}}}{% + This composite option sets all primary attributes of the layer to the same + values as the primary attributes of the layer with the given \PName{layer + name}. See the notes on the \PName{layer name} at the beginning of the + explanation for \Macro{DeclareLayer}. The layer to be cloned must also + already exist.% + }% + \entry{\KOption{contents}{\PName{code}}}{% + The specified \PName{code} will be expanded whenever the layer is printed. + This \PName{code} defines what you see for the layer. No tests are made to + see if the code is valid. Errors in the \PName{code} can therefore lead to + multiple error messages on each page that prints the layer.% + }% + \entry{\Option{evenpage}}{% + This option causes the layer to appear on even pages only, unlike the + default, where a layer will appear on both even and odd pages. Since even + pages only appear in two-sided printing, this option implies + \Option{twoside}. This option does not expect or allow a value.% + }% + \entry{\ChangedAt{v3.18}{\Package{scrlayer}}% + \Option{everypage}}{% + This option is a combination of \Option{oddorevenpage} and + \Option{floatornonfloatpage}. This option does not expect or allow a + value.% + }% + \entry{\Option{everyside}}{% + This option removes any restriction of the layer to one-sided or two-sided + printing. This is the default setting. This option does not expect or + allow a value.% + }% + \entry{\ChangedAt{v3.18}{\Package{scrlayer}}% + \Option{floatornonfloatpage}}{% + This option removes any restriction of the layer to float or non-float + pages and restores the default setting. This option does not expect or + allow a value.% + }% + \entry{\Option{floatpage}}{% + This option restricts the layer to appearing on float pages only. The + default setting is for layers to appear on both float and non-float pages. + This option does not expect or allow a value.% + }% + \entry{\Option{foot}}{% + This composite option sets \Option{hoffset}, \Option{voffset}, + \Option{width}, \Option{height}, and \Option{align} so that the layer + spans the page footer over the width of the text area. This option does + not expect or allow a value.% + }% + \entry{\Option{footskip}}{% + This composite option sets \Option{hoffset}, \Option{voffset}, + \Option{width}, \Option{height}, and \Option{align} so that the layer + spans the vertical distance between the text area and the page footer over + the width of the text area. Note, however, that although the height of + this area depends on \Length{footskip}, it is not the same. This option + does not expect or allow a value.% + }% + \entry{\Option{foreground}}{% + This option displays the layer in the foreground only. The default is to + display layers in both the background and the foreground. The option does + not expect or allow a value.% + }% + \entry{\Option{head}}{% + This composite option sets \Option{hoffset}, \Option{voffset}, + \Option{width}, \Option{height}, and \Option{align} so that the layer + spans the vertical area of the page header for the width of the text area. + The height corresponds to the length \Length{headheight}. This option does + not expect or allow a value.% + }% + \entry{\Option{headsep}}{% + This composite option sets \Option{hoffset}, \Option{voffset}, + \Option{width}, \Option{height}, and \Option{align} so that the layer + spans the vertical distance between the page header and the text area for + the width of the text area. The height corresponds to the length + \Length{headsep}. This option does not expect or allow a value.% + }% + \entry{\KOption{height}{\PName{length}}}{% + Sets the height of the layer. Note that the \PName{length} can be a + \LaTeX{} length declared with \Macro{newlength}, a \TeX{} length declared + with \Macro{newdimen} or \Macro{newskip}, a length value like 10\,pt, or a + dimensional expression using +, -, /, *, (, and ). For more information + about valid dimensional expressions see \cite[section~3.5]{manual:eTeX}.% + }% + \entry{\KOption{hoffset}{\PName{length}}}{% + Sets the distance of the layer from the left edge of the paper. How the + distance is measured depends on the \Option{align} option. See the + \Option{height} option for more information about valid expressions for + \PName{length}.% + }% + \entry{\Option{innermargin}}{% + This composite option sets \Option{hoffset}, \Option{voffset}, + \Option{width}, \Option{height}, and \Option{align} so that the layer + spans the inner margin, from the edge of the page to the edge of the text + area and from the top to the bottom of the page. In one-sided printing, + the inner margin corresponds to the left margin. This option does not + expect or allow a value.% + }% + \entry{\Option{leftmargin}}{% + This composite option sets \Option{hoffset}, \Option{voffset}, + \Option{width}, \Option{height}, and \Option{align} so that the layer + spans the left margin, from the left edge of the paper to the left edge of + the text area and from the top of the paper to the bottom. This option + does not expect or allow a value.% + }% + \entry{\ChangedAt{v3.19}{\Package{scrlayer}}% + \OptionVName{mode}{mode}}{% + This primary option defines the \PName{mode} in which the layer's content + is output. The default is \OptionValue{mode}{text}. The baseline of the + first text line is placed the height of one standard text line below the + top edge of the layer, so the text is usually neatly aligned with the top + of the layer. In \PValue{picture} \PName{mode}, on the other hand, the + layer spans a \Environment{picture} environment with the origin at the + bottom left corner of the layer. The \PValue{raw} \PName{mode} is also + also defined. By default it corresponds to \PValue{text} \PName{mode}. + Changing\textnote{Attention!} the \PName{mode} of a layer usually results + the contents shifting. Furthermore, the \PValue{picture} \PName{mode} + provides additional commands that result in errors with another + \PName{mode}. Therefore it usually makes no sense to change the + \PName{mode} of a layer after its initial declaration!% + }% + \entry{\Option{nonfloatpage}}{% + This option restricts the layer to pages that are not float pages. The + default is for the layer to appear on both float and non-float pages. This + option does not expect or allow a value.% + }% + \entry{\ChangedAt{v3.18}{\Package{scrlayer}}% + \Option{oddorevenpage}}{% + This option removes any restriction of the layer to odd or even pages, + restoring the default behaviour that the layer should appear on both odd + and even pages. The option does not expect or allow a value.% + }% + \entry{\Option{oddpage}}{% + This option restricts the layer to odd pages only. The default is for + layers to appear on both odd pages and on even pages. Note that in + one-sided printing, all pages are odd, regardless of the page number. This + option does not expect or allow a value.% + }% + \entry{\Option{oneside}}{% + This option restricts the layer to one-sided printing only. The default is + for layers to appear in both one-sided and two-sided printing. This option + does not expect or allow a value.% + }% + \entry{\Option{outermargin}}{% + The composite option sets \Option{hoffset}, \Option{voffset}, + \Option{width}, \Option{height}, and \Option{align} so that the layer + spans the outer margin of the page, from the top to the bottom of the + paper. The outer margin corresponds to the right margin in one-sided + printing. This option does not expect or allow a value.% + }% + \entry{\Option{page}}{% + This composite option sets \Option{hoffset}, \Option{voffset}, + \Option{width}, \Option{height}, and \Option{align} so that the layer + spans the the whole paper. This option does not expect or allow a value.% + }% + \entry{\ChangedAt{v3.16}{\Package{scrlayer}}% + \OptionVName{pretocontents}{code}}{% + The value of \PName{code} is prefixed the current value of the + \Option{contents} attribute, so the new content will appear before the + existing content. For more information about the handling of \PName{code}, + see the \Option{contents} option.% + }% + \entry{\Option{rightmargin}}{% + This composite option sets \Option{hoffset}, \Option{voffset}, + \Option{width}, \Option{height}, and \Option{align} so that the layer + spans the right margin, from the right edge of the text area to the right + edge of the paper and from the top to the bottom edge of the paper. This + option does not expect or allow a value.% + }% + \entry{\Option{textarea}}{% + This composite option sets \Option{hoffset}, \Option{voffset}, + \Option{width}, \Option{height}, and \Option{align} so that the layer + spans the entire text area. This option does not expect or allow a value.% + }% + \entry{\Option{topmargin}}{% + This composite option sets \Option{hoffset}, \Option{voffset}, + \Option{width}, \Option{height}, and \Option{align} so that the layer + spans the vertical distance between the top edge of the paper to the + header for the entire width of the paper. This option does not expect or + allow a value.% + }% + \entry{\Option{twoside}}{% + This option restricts the layer to two-sided printing. The default is for + layers to appear in both one-sided and two-sided printing. This option + does not expect or allow a value.% + }% + \entry{\ChangedAt{v3.18}{\Package{scrlayer}}% + \Option{unrestricted}}{% + This option removes all output restrictions. It is a combination of + \Option{backandforeground}, \Option{everyside}, and + \Option{floatornonfloatpage}. This option does not expect or allow a + value.% + }% + \entry{\KOption{voffset}{\PName{length}}}{% + Sets the distance of the layer from the top of the paper. How the distance + is measured depends on the \Option{align} option. See the \Option{height} + option for more information about valid expressions for \PName{length}.% + }% + \entry{\KOption{width}{\PName{length}}}{% + Sets the width of the layer. See the \Option{height} option for more + information about valid expressions for \PName{length}.% + }% +\end{desclist} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{layerhalign}% + \Macro{layervalign}% + \Macro{layerxoffset}% + \Macro{layeryoffset}% + \Macro{layerwidth}% + \Macro{layerheight}% +\end{Declaration} +These commands are only valid in the \PName{code} specified with +\Option{contents}, \Option{addcontents}, or \Option{pretocontents}. In this +case, they contain the layer's actual alignment, position, and dimensions that +will be used for the output. However, this is not necessarily the actual +dimensions of the layer's contents, e.\,g., if the contents are oversized or +do not fill the layer completely. + +The primary layer attribute \PValue{align} is mapped to +\Macro{layerhalign}\ChangedAt{v3.19}{\Package{scrlayer}} and +\Macro{layervalign}. The horizontal values \PValue{l} and \PValue{r} are +copied to \Macro{layerhalign}. The vertical values \PValue{t} and \PValue{b} +are copied to \Macro{layervalign}. The value \PValue{c}, which is both +horizontal and vertical, is copied to both commands. If there are several +conflicting values for \PValue{align}, only the last one is copied. Thus the +resulting \Macro{layerhalign} is either \PValue{l}, \PValue{c}, or \PValue{r}, +and the resulting \Macro{layervalign} is either \PValue{t}, \PValue{c}, or +\PValue{b}. + +Redefining\textnote{Attention!} these instructions to change the values stored +in them is not permitted, as it would lead to unpredictable results.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{LenToUnit}\Parameter{length} +\end{Declaration} +This\ChangedAt{v3.19}{\Package{scrlayer}} command originally came from +\Package{eso-pic}\IndexPackage{eso-pic}~2.0f. It converts lengths into +multiples of \Length{unit length} and can therefore be used everywhere \LaTeX{} +expects \Environment{picture} coordinates or \Length{unit length}-dependent +values. For more information, see \cite{package:eso-pic} and the descriptions +of \Macro{putUR}, \Macro{putLL}, and \Macro{putLR} below. If the command is +already defined, e.\,g., by loading \Package{eso-pic} before +\Package{scrlayer}, the package does not define it again.% +\iffalse% Umbruchkorrekturtext +\par +It should be noted at this point that using package +\Package{picture}\IndexPackage{picture}\textnote{\Package{picture}} (see +\cite{package:picture}) supersedes \Macro{LenToUnit} more or less. The package +extends environment \Environment{picture} and the picture commands so that you +can use \LaTeX{} lengths directly for coordinates.% +\fi +\EndIndexGroup + + +\begin{Declaration} + \Macro{putUL}\Parameter{content}% + \Macro{putUR}\Parameter{content}% + \Macro{putLL}\Parameter{content}% + \Macro{putLR}\Parameter{content}% + \Macro{putC}\Parameter{content} +\end{Declaration} +You\ChangedAt{v3.19}{\Package{scrlayer}} can use these commands inside the +value of \PValue{contents} layer option if the layer is declared with +\OptionValue{mode}{picture}. In this case, \Macro{putUL} places the +\PName{content} relative to the upper left corner of the layer and therefore +is the same as +\lstinline[breaklines=false]|\put(0,\LenToUnit{\layerheight})|. \Macro{putUR} +places the \PName{content} relative to the upper right corner of the layer and +therefore is the same as +\lstinline[breaklines=false] +|\put(\LenToUnit{\layerwidth},\LenToUnit{\layerheight})|. +\Macro{putLL} places the \PName{content} relative to the lower left corner of +the layer and therefore is the same as +\lstinline[breaklines=false]|\put(0,0)|. \Macro{putLR} places the +\PName{content} relative to the lower right corner and therefore is the same +as \lstinline[breaklines=false]|\put(\LenToUnit{\layerwidth},0)|. Last but +not least, \Macro{putC} places the \PName{content} relative to the centre of +the layer.% +\begin{Example} + You want to determine exactly how accurately + \OptionValueRef{typearea}{DIV}{classic} sets the height of the text area to + the width of the page size. You declare a layer that both borders the text + area and places a circle with a diameter of the paper width in the centre of + the text area: +\begin{lstcode} + \documentclass[DIV=classic]{scrartcl} + \usepackage{pict2e} + \usepackage{scrlayer} + \DeclareNewLayer[% + textarea,background,mode=picture, + contents={% + \putLL{\line(1,0){\LenToUnit{\layerwidth}}}% + \putLR{\line(0,1){\LenToUnit{\layerheight}}}% + \putUR{\line(-1,0){\LenToUnit{\layerwidth}}}% + \putUL{\line(0,-1){\LenToUnit{\layerheight}}}% + \putC{\circle{\LenToUnit{\paperwidth}}}% + } + ]{showtextarea} + \DeclareNewPageStyleByLayers{test}{showtextarea} + \pagestyle{test} + \begin{document} + \null + \end{document} +\end{lstcode} + You will notice that \Package{typearea}'s mapping to an integer \PName{DIV} + value is very accurate in this example. +\end{Example} +Incidentally, you will find more information about late medieval book-page +canon sketched in the example in \autoref{sec:typearea.circleConstruction}, +\autopageref{sec:typearea.circleConstruction}. + +The \Macro{DeclareNewPageStyleByLayers}\IndexCmd{DeclareNewPageStyleByLayers} +command just used in the example defines a new page style using the newly +declared layer. It will be explained in \autoref{sec:scrlayer.pagestyles}, +\DescPageRef{scrlayer.cmd.DeclareNewPageStyleByLayers}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{GetLayerContents}\Parameter{layer~name} +\end{Declaration} +This\ChangedAt{v3.16}{\Package{scrlayer}} command returns the whole contents +of a layer. It is important to note\textnote{Attention!} that using this +command inside the \PName{code} of the layer attributes \Option{contents}, +\Option{addcontents}, or \Option{pretocontents} can result in +infinite recursion when referencing the contents of the current layer. You +are responsible for avoiding such situations!% +\EndIndexGroup + + +\begin{Declaration} + \Macro{IfLayerExists}\Parameter{layer~name} + \Parameter{then-code}\Parameter{else-code} +\end{Declaration} +This command can be used to execute code depending on whether or not a layer +with the specified \PName{layer name} exists. If the layer exists, the +\PName{then-code} will be executed; otherwise, the \PName{else-code} will be +executed. Note that the command cannot really test whether a layer exists. +Instead it uses a heuristic which will never yield a false negative but which, +in extreme cases, could yield a false positive. +\iffalse% Umbruchvarianten +Nevertheless, if the test yields a false positive, something has gone wrong. +For example, this could indicate an incompatible package or that the user is +doing something he or she should not.% +\else +False positives indicate a problem, such as the use of an incompatible package +or a bad choice of internal macro names by the user. +\fi +\EndIndexGroup + + +\begin{Declaration} + \Macro{DestroyLayer}\Parameter{layer~name} +\end{Declaration} +If a layer with the given \PName{layer name} exists, all macros belonging to +it will be set to \Macro{relax}. In page styles already defined with +\Package{scrlayer}, such destroyed layers are ignored. Destroyed layers can be +redefined using \DescRef{\LabelBase.cmd.DeclareNewLayer} or +\DescRef{\LabelBase.cmd.ProvideLayer}, but they can no longer be changed using +\DescRef{\LabelBase.cmd.RedeclareLayer} or +\DescRef{\LabelBase.cmd.ModifyLayer}. + +The command is intended to be used inside +\DescRef{\LabelBase.cmd.scrlayerOnAutoRemoveInterface} (see +\autoref{sec:scrlayer.enduserinterfaces}, +\DescPageRef{scrlayer.cmd.scrlayerOnAutoRemoveInterface}) +to remove layers defined using removable macros of an interface along with +that interface.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{layercontentsmeasure}% +\end{Declaration} +The \Macro{layercontentsmeasure} command prints a ruler at each layer edge, of +which the top and left one is labelled in centimetres and the right and bottom +one in inches. This command is used internally if the +\DescRef{\LabelBase.option.draft}\IndexOption{draft} option is enabled. The +rulers are drawn behind the content of each layer. This command can also be +used as exclusive content of a layer.% +\EndIndexGroup + + +\section{Declaring and Managing Page Styles} +\seclabel{pagestyles} + +\BeginIndexGroup +\BeginIndex{}{page>style}% +We now understand how to define and manage layers, but so far we do not know +how they are used. The possibly surprising answer is, with page styles. In +\LaTeX{}, page styles usually define headers and footers of the page. + +The header and footer of odd or right-hand pages\textnote{even or odd page} +are printed on pages with odd page numbers in two-sided printing or on all +pages in one-sided printing. This is directly comparable to the layer +options\important[i]{\Option{evenpage}\\\Option{oddpage}} \Option{oddpage} and +\Option{evenpage}. + +The page header\textnote{header or footer} is output before the main page +contents. The page footer is output after the main page contents. This +corresponds directly to the layer +options\important[i]{\Option{background}\\\Option{foreground}} +\Option{background} and \Option{foreground}. + +Therefore it makes sense to define page styles as lists of layers. But instead +of just the four options mentioned above, you can use all the properties +explained in \autoref{sec:scrlayer.layers}, \autoref{tab:scrlayer.layerkeys}, +on \autopageref{tab:scrlayer.layerkeys}. + +As a result of these considerations, layer page +styles\textnote{layer page style}\Index{page style>layer}% +\Index{layer>page style}\Index{page>style} are one type of page style that +\Package{scrlayer} provides. A layer page style consists of layers as well as +several hooks. The layers have already been described in +\autoref{sec:scrlayer.layers}. The hooks\Index[indexmain]{hooks}% +\textnote{hooks} are points in the expansion or execution of page styles to +which you can add code. Experienced users already know this concept from +commands like \Macro{AtBeginDocument} (see \cite{latex:usrguide}) or +\DescRef{scrlfile.cmd.BeforeClosingMainAux} (see +\DescPageRef{scrlfile.cmd.BeforeClosingMainAux}). + +Page-style aliases are another type of page style which \Package{scrlayer} +provides. A page-style alias is actually a different page style. In other +words, the name of a page-style alias is an alternative name for another +page-style alias or for a page style. As a result, manipulating a page-style +alias results in manipulating the original page style. If the original page +style is itself an alias, its manipulation again results in the manipulation +of the alias's original page style, and so on until a real page style is +finally changed. The term \emph{real page style}\textnote{real page style} is +used to distinguish it from a page-style alias. All page styles that are not +page-style aliases are real page styles. Aliases can be defined for all page +styles, not just those defined with \Package{scrlayer}. + +\begin{Declaration} + \Macro{currentpagestyle} + \Macro{toplevelpagestyle} +\end{Declaration} +The \Package{scrlayer} package patches the \DescRef{maincls.cmd.pagestyle} +command so that it sets \Macro{currentpagestyle} to the currently active page +style. Note that \DescRef{maincls.cmd.thispagestyle} does not change +\Macro{currentpagestyle}. If you use \DescRef{maincls.cmd.thispagestyle}, +however, \Macro{currentpagestyle} can change within the \LaTeX{} output +routine. However, this change will only occur if \Macro{currentpagestyle} has +been actively protected from expansion until the execution of the output +routine. + +Note that the layer page styles described later in this section do not rely on +this \DescRef{maincls.cmd.pagestyle} extension because they redefine +\Macro{currentpagestyle} themselves. This patch was made so that other, +non-\Package{scrlayer} page styles can use \Macro{currentpagestyle}. +Additionally, \Macro{currentpagestyle} is empty after loading +\Package{scrlayer} and before using \DescRef{maincls.cmd.pagestyle} for the +first time. Therefore, when defining an end-user interface, you may find it +useful to set the current page style to a default with an implicit +\DescRef{maincls.cmd.pagestyle} statement. + +% Todo: New translation by Markus Kohm (please fix it!) +For page-style aliases activated using \DescRef{maincls.cmd.pagestyle} +\Macro{currentpagestyle} does not show the alternative name but the name of +the real page style. You\ChangedAt{v3.16}{\Package{scrlayer}} can get the +alternative name using \Macro{toplevelpagestyle}. However, it is not +recommended to define page styles, that have different results depending on +\Macro{toplevelpagestyle}, e.\,g., using \DescRef{scrbase.cmd.ifstr}. If you +would activate such a page style using \DescRef{maincls.cmd.thispagestyle} you +could get the wrong result.% +% End of new translation. +\EndIndexGroup + + +\begin{Declaration} + \Macro{BeforeSelectAnyPageStyle}\Parameter{code}% + \Macro{AfterSelectAnyPageStyle}\Parameter{code}% +\end{Declaration} +The \Macro{BeforeSelectAnyPageStyle} command adds \PName{code} to the hook% +\textnote{hook} that will be executed inside \DescRef{maincls.cmd.pagestyle}, +just before the page style is selected. Within the \PName{code}, you can use +\texttt{\#1} as a place-holder for the argument of +\DescRef{maincls.cmd.pagestyle}. + +The \Macro{AfterSelectAnyPageStyle} command works similarly, but the +\PName{code} will be executed just after the page style has been selected and +after \DescRef{\LabelBase.cmd.currentpagestyle} has been set to the name of +the real page style. + +Note\textnote{Attention!} that the \PName{code} of both commands is executed +only if a page style is selected with \DescRef{maincls.cmd.pagestyle} and not +if it is chosen in a different way, e.\,g., using +\DescRef{maincls.cmd.thispagestyle}. Note also that you cannot remove +\PName{code} from the hook after adding it. But the \PName{code} will be added +locally, so you can use a group to limit the scope of the \PName{code}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DeclarePageStyleAlias}\Parameter{page~style~alias~name} + \Parameter{original~page~style~name} + \Macro{DeclareNewPageStyleAlias}\Parameter{page~style~alias~name} + \Parameter{original~page~style~name} + \Macro{ProvidePageStyleAlias}\Parameter{page~style~alias~name} + \Parameter{original~page~style~name} + \Macro{RedeclarePageStyleAlias}\Parameter{page~style~alias~name} + \Parameter{original page style name} +\end{Declaration} +\BeginIndex{}{page style>alias}% +\BeginIndex{}{alias>page style}% +These commands can be used to define a page style with name \PName{page style + alias name} that is simply an alias for an existing page style with the +name \PName{original page style name}. If there is already a page style +\PName{page style alias name}, using \Macro{DeclarePageStyleAlias} or +\Macro{RedeclarePageStyleAlias} will destroy the alias before recreating it. + +\Macro{DeclareNewPageStyleAlias} will throw an error message if a page style +\PName{page style alias name} has already been defined. It does not matter if +the previously defined page style is a layer-page style, a page style alias, +or another page style. + +\Macro{ProvidePageStyleAlias} will define the alias only if the +\PName{page style alias name} page style has not been defined before. If the +\PName{page style alias name} page style already exists, nothing will be done. + +\Macro{RedeclarePageStyleAlias} expects an existing +\PName{page style alias name} page style. It will destroy that page style and +afterwards define the alias. If the \PName{page style alias name} page style +does not exist, you will get an error.% +\iffree{\csname @tempswafalse\endcsname}{\csname @tempswatrue\endcsname}% +\csname if@tempswa\endcsname% Umbruchkorrekturtext + \begin{Example} + Suppose you write a class and use the \PageStyle{chapter} page style for the + first page of each chapter. By default, this page style should match the + \PageStyle{plain} page style. Therefore, you can use the \Package{scrlayer} + package and use +\begin{lstcode} + \DeclareNewPageStyleAlias{chapter}{plain} +\end{lstcode} + to define the \PageStyle{chapter} page style as an alias for the + \PageStyle{plain} page style. If, on the other hand, you later decide that + the \PageStyle{chapter} plage style should correspond to the + \PageStyle{empty} page style, you can achieve this with: +\begin{lstcode} + \RedeclarePageStyleAlias{chapter}{empty} +\end{lstcode}% + \end{Example}% +\fi +\EndIndexGroup + + +\begin{Declaration} + \Macro{DestroyPageStyleAlias}\Parameter{page~style~name}% +\end{Declaration} +\BeginIndex{}{page style>alias}% +\BeginIndex{}{alias>page style}% +This command renders the page style named \PName{page style name} undefined +for \LaTeX{} if it is an alias for another page style. Afterwards, the page +style can be newly defined with +\DescRef{\LabelBase.cmd.DeclareNewPageStyleAlias} or +\DescRef{\LabelBase.cmd.ProvidePageStyleAlias}. + +This command is intended to be used inside the argument code of +\DescRef{\LabelBase.cmd.scrlayerOnAutoRemoveInterface} to remove page styles +that have been declared as part of an end-user interface when removing this +interface automatically.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{GetRealPageStyle}\Parameter{page~style~name}% +\end{Declaration} +\BeginIndex{}{page style>alias}% +\BeginIndex{}{alias>page style}% +This command will result in the (recursive) real page name of the page style +if \PName{page style name} is an alias of another page style. In all other +cases, even if there's no alias and no page style named \PName{page style + name}, the result is simply \PName{page style name}. The command is fully +expandable and may be used, e.g., in the second argument of \Macro{edef}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DeclarePageStyleByLayers}\OParameter{option list} + \Parameter{page style name} + \Parameter{layer list} + \Macro{DeclareNewPageStyleByLayers}\OParameter{option list} + \Parameter{page style name} + \Parameter{layer list} + \Macro{ProvidePageStyleByLayers}\OParameter{option list} + \Parameter{page style name} + \Parameter{layer list} + \Macro{RedeclarePageStyleByLayers}\OParameter{option list} + \Parameter{page style name} + \Parameter{layer list} +\end{Declaration} +\BeginIndex{}{page style>layers}% +\BeginIndex{}{layers>page style}% +These commands declare a page style named \PName{page style name}. The page +style will consist of the layers given in \PName{layer list}, a comma +separated list of layer names. Note\textnote{Attention!} that the \PName{page + style name} and the layer names in the \PName{layer list} must be fully +expandable and should expand to letters. Several other characters are also +accepted, but their use is recommended only for experienced users. + +The \PName{option list} is a comma-separated list of options in the form +\texttt{\PName{key}=\PName{value}}. These options may be used to set +additional features. Currently they are used to set the code that should be +expanded or executed at several hooks\Index{hooks}. See the introduction to +this section for more general information about hooks. See +\autoref{tab:scrlayer.pagestyle.hooks} for detailed information on specific +hooks. + +\begin{desclist} + \desccaption{% + Hook options for page styles (in order of + execution)\label{tab:scrlayer.pagestyle.hooks}% + }{% + Hook options for page styles (\emph{continued})% + }% + \entry{\OptionVName{onselect}{code}}{% + The \PName{code} of this hook\Index{hook} is executed whenever the page + style is selected, for example with \DescRef{maincls.cmd.pagestyle}. Note + that \DescRef{maincls.cmd.thispagestyle} itself does not directly select a + page style. In this case, the page style is only activated within \LaTeX's + output routine.% + }% + \entry{\OptionVName{oninit}{code}}{% + The \PName{code} of this hook\Index{hook} is executed whenever the output + of the page style's layers is initialised. Note that this happens twice + for each page: once for background layers and once for foreground layers.% + }% + \entry{\OptionVName{ononeside}{code}}{% + The \PName{code} of this hook\Index{hook} is executed whenever the output + of the page style's layers in one-sided printing is initialised. Note that + this happens twice for each page: once for background layers and once for + foreground layers.% + }% + \entry{\OptionVName{ontwoside}{code}}{% + The \PName{code} of this hook\Index{hook} is executed whenever the output + of the page style's layers in two-sided printing is initialised. Note that + this happens twice for each page: once for background layers and once for + foreground layers.% + }% + \entry{\OptionVName{onoddpage}{code}}{% + The \PName{code} of this hook\Index{hook} is executed whenever the output + of the page style's layers on an odd page is initialised. Note that this + happens twice for each page: once for background layers and once for + foreground layers. Note also that in one-sided printing all pages are odd + pages, not just those with odd page numbers.% + }% + \entry{\OptionVName{onevenpage}{code}}{% + The \PName{code} of this hook\Index{hook} is executed whenever the output + of the page style's layers on an even page is initialised. Note that this + happens twice for each page: once for background layers and once for + foreground layers. Note also that in one-sided printing there are no even + pages. Instead, all pages are treated as odd pages, not just those with + odd page numbers.% + }% + \entry{\OptionVName{onfloatpage}{code}}{% + The \PName{code} of this hook\Index{hook} is executed whenever the output + of the page style's layers on a float page is initialised. Note that this + happens twice for each page: once for background layers and once for + foreground layers. Note also that float pages are only those pages with + one or more p-placed floating environments.% + }% + \entry{\OptionVName{onnonfloatpage}{code}}{% + The \PName{code} of this hook\Index{hook} is executed whenever the output + of the page style's layers on a non-float page is initialised. Note that + this happens twice for each page: once for background layers and once for + foreground layers. Note also that float pages are only the pages on which + one or more p-placed floating environments are output. Other pages may + well have t-, h-, or b-placed floating environments.% + }% + \entry{\OptionVName{onbackground}{code}}{% + The \PName{code} of this hook\Index{hook} is executed whenever the output + of the page style's background layers is initialised. Note that this + happens once each page.% + }% + \entry{\OptionVName{onforeground}{code}}{% + The \PName{code} of this hook\Index{hook} is executed whenever the output + of the page style's foreground layers is initialised. Note that this + happens once each page.% + }% +\end{desclist} + +\iffalse% Umbruchvarianten + While the \Macro{DeclarePageStyleByLayers} command always defines the page + style, \Macro{DeclareNewPageStyleByLayers} generates an error message if a + page style with the same name already exists. Note\textnote{Attention!} that + the declaration of a page style that is already an alias for another page + style (see, for example, \Macro{DeclareAliasPageStyle} earlier in this + section) will redefine not the specified page style alias but the real page + style (see \DescRef{\LabelBase.cmd.GetRealPageStyle} earlier in this + section).% +\else% + The \Macro{DeclarePageStyleByLayers} command defines the page style + regardless of whether a page style of \PName{page style name} already + exists. If necessary, the existing page style is completely + redefined. However, if a page style alias \PName{page style name} already + exists, the associated real page style, not the page style alias itself, is + redefined (see \DescRef{\LabelBase.cmd.GetRealPageStyle} earlier in this + section). + + The \Macro{DeclareNewPageStyleByLayers} command differs if a page style of + the same name already exists. Regardless of whether it is a real or an alias + page style, an error will be reported in this case. +\fi + +In contrast, \Macro{ProvidePageStyleByLayers} preserves the page style +unchanged if a page style with name \PName{page style name} already exists. If +no such page style exists, it is defined as in +\Macro{DeclarePageStyleByLayers}. + +The \Macro{RedeclarePageStyleByLayers} in turn expects that a page style of +of the name \PName{page style name} already exists and then redefines its real +page style. However, if no page style of the specified name exists, an error +message results. + +Also note the remarks below about the pseudo-page style +\PageStyle{@everystyle@}.% +\EndIndexGroup + + +\begin{Declaration} + \PageStyle{@everystyle@}% + \PageStyle{empty} +\end{Declaration} +\BeginIndex{}{page style>layers}% +\BeginIndex{}{layers>page style}% +The \Package{scrlayer} package defines two specific page styles worth noting. +The first of these is \PageStyle{@everystyle@}% +\important{\PageStyle{@everystyle@}}. This page style should never be used +like a normal page style, for example with \DescRef{maincls.cmd.pagestyle} or +\DescRef{maincls.cmd.thispagestyle}, or as the target of a page-style alias. +Instead, the layers and hooks\Index{hooks} of this page style are used by all +other layer page styles. The hooks of \PageStyle{@everystyle@} are placed in +front of their respective hooks, and the layers in front of the respective +layers, of the active page style. + +Thus adding a layer to the pseudo-page style \PageStyle{@everystyle@} or code +to a hook of this page style is like adding a layer or hook code to all layer +page styles, even the empty one. There's one crucial difference: commands that +reference the layers of a page style which include +\DescRef{\LabelBase.cmd.ForEachLayerOfPageStyle}, e.\,g., the commands +\DescRef{\LabelBase.cmd.AddLayersToPageStyleBeforeLayer} or +\DescRef{\LabelBase.cmd.AddLayersToPageStyleAfterLayer}, disregard the layers +of the page style \PageStyle{@everystyle@} when applied to a different layer +page style. + +The second, slightly different page style is \PageStyle{empty}. Normally the +\LaTeX{} kernel defines the \PageStyle{empty} page style to have an empty +header and footer. The \Package{scrlayer} package redefines this page style as +a layerless page style. Nonetheless, you can use it like any other layer page +style. The main advantage of the layer page style over the original page +style from the \LaTeX{} kernel is that it also executes the hooks and layers +of the psuedo-layer page style \PageStyle{@everystyle@}.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{onpsselect}{code}% + \OptionVName{onpsinit}{code}% + \OptionVName{onpsoneside}{code}% + \OptionVName{onpstwoside}{code}% + \OptionVName{onpsoddpage}{code}% + \OptionVName{onpsevenpage}{code}% + \OptionVName{onpsfloatpage}{code}% + \OptionVName{onpsnonfloatpage}{code}% + \OptionVName{onpsbackground}{code}% + \OptionVName{onpsforeground}{code} +\end{Declaration} +\BeginIndex{}{page style>layers}% +\BeginIndex{}{layers>page style}% +There is also a \KOMAScript{} option for each of the hooks\Index{hooks} in +\autoref{tab:scrlayer.pagestyle.hooks}% +\iftrue +. The names of the \KOMAScript{} options are similar to those for declaring +page style layers, except that a ``\texttt{ps}'' is inserted after +``\texttt{on}'' at the beginning of the name +\else +, into the names of which a ``\texttt{ps}'' is inserted +\fi +. The values of these \KOMAScript{} options are used as the initial values for +the corresponding hooks. These initial values are then extended by all the +values assigned to the corresponding hooks in the \PName{option list} of the +declaration commands. You can remove the default with +\DescRef{\LabelBase.cmd.ModifyLayerPageStyleOptions}, which is explained later +in this section.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{singlespacing}{simple switch} +\end{Declaration} +If\ChangedAt{v3.24}{\Package{scrlayer}\and \Package{scrlayer-scrpage}} a +document is printed with increased line spacing, e.\,g., using the +\Package{setspace}\IndexPackage{setspace}\important{\Package{setspace}} +package, it is often undesirable for the header and footer to be printed with +this increased spacing. This is particularly true if the header and footer +consist of only a single line. In this case you can use \KOMAScript{} option +\Option{singlespacing}. However, the default\textnote{default} is +\OptionValue{singlespacing}{false}! The option generally applies to all layer +page styles. If you want single-spacing for only some page styles, use +\OptionValue{oninit}{\Macro{linespread}\PParameter{1}\Macro{selectfont}} for +those page styles.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{deactivatepagestylelayers}{simple switch}% + \Macro{ForEachLayerOfPageStyle}\Parameter{page style name}\Parameter{code}% + \Macro{ForEachLayerOfPageStyle*}\Parameter{page style name}\Parameter{code} +\end{Declaration} +\BeginIndex{}{page style>layers}% +\BeginIndex{}{layers>page style}% +As long as the \KOMAScript{} option \Option{deactivatepagestylelayers} is not +enabled, the \Macro{ForEachLayerOfPageStyle} command can execute arbitrary +\PName{code} for each layer of the page style named \PName{page style name}. +Inside of \PName{code}, the place holder \PValue{\#1} serves as a +reference to the name of the current layer. +\begin{Example} + If you want to print the names of all layers of the \PValue{scrheadings} + page style as a comma-separated list, you can use: +\begin{lstcode} + \let\commaatlist\empty + \ForEachLayerOfPageStyle{scrheadings}{% + \commaatlist#1\gdef\commaatlist{, }} +\end{lstcode} +\end{Example} +In\textnote{Attention!} the example above, we had to use \Macro{gdef} instead +of \Macro{def} because \Macro{ForEachLayerOfPageStyle} executes the +\PName{code} inside a group to minimise side effects. However, \Macro{gdef} +redefines \Macro{commaatlist} globally so the change will persist when the +\PName{code} for the next layer is executed. + +Alternatively,\ChangedAt{v3.18}{\Package{scrlayer}} you can use \Macro{def} +with the starred variant \Macro{ForEachLayerOfPageStyle*}. This form dispenses +with the extra group when executing \PName{code}. However, the user then has +to take make sure that the \PName{code} has no unwanted side effects. In +particular, deactivating all layers using +\OptionValue{deactivatepagestylelayers}{true} within \PName{code} would +persist beyond the call to \Macro{ForEachLayerOfPageStyle*}. + +Various \Package{scrlayer} commands also use \Macro{ForEachLayerOfPageStyle} +internally. Their behaviour can therefore also be changed using the +\KOMAScript{} option \Option{deactivatepagestylelayers}. With this option, +you can temporarily disable and thus hide all layers of all layer page +styles.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AddLayersToPageStyle}% + \Parameter{page style name}\Parameter{layer list}% + \Macro{AddLayersAtBeginOfPageStyle}% + \Parameter{page style name}\Parameter{layer list}% + \Macro{AddLayersAtEndOfPageStyle}% + \Parameter{page style name}\Parameter{layer list}% + \Macro{RemoveLayersFromPageStyle}% + \Parameter{page style name}\Parameter{layer list}% +\end{Declaration} +\BeginIndex{}{page style>layers}% +\BeginIndex{}{layers>page style}% +You can use these commands to add layers to a layer page style or to remove +layers from a layer page style. The page style is referenced by its +\PName{page style name}. The layers are given by a comma-separated +\PName{layer list}. + +Both the \Macro{AddLayersToPageStyle} and the +\Macro{AddLayersAtEndOfPageStyle}\textnote{add at the end} commands insert the +new layers at the bottom of the page style's layer list. Logically, the newly +added layers lie above or in front of the old layers. Background layers, of +course, still are logically behind the text layer and thus behind all +foreground layers. + +In contrast, the \Macro{AddLayersAtBeginOfPageStyle}\textnote{add at the + beginning} command inserts the new layers at the top of the page style's +layer list. The layers are separately inserted to the top of the list in the +same order they appear in the \PName{layer list} parameter. This means that +the last layer in the \PName{layer list} parameter will become the first, and +thus the lowest, layer of the page style. + +\iffalse% Umbruchkorrekturtext (beim Aktiveren muss unten \textnote{remove} +% entfernt werden!) +The \Macro{RemoveLayersFromPageStyle} command is exactly the opposite. It +removes\textnote{remove} the specified page-style levels.% +\fi + +The \Macro{RemoveLayersFromPageStyle}\textnote{remove} command removes layers +from the layer list of the page style named \PName{page style name}. +Attempting to remove layers which are not part of the page style's layer list +will be ignored. But attempting to add layers to or remove layers from a page +style that is neither a layer page style nor a page-style alias is an error +and will be reported as such.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AddLayersToPageStyleBeforeLayer}% + \Parameter{page style name}\Parameter{layer list}% + \Parameter{reference layer name}% + \Macro{AddLayersToPageStyleAfterLayer}% + \Parameter{page style name}\Parameter{layer list}% + \Parameter{reference layer name} +\end{Declaration} +\BeginIndex{}{page style>layers}% +\BeginIndex{}{layers>page style}% +\iffalse% Umbruchvarianten +These two commands are similar to the previous ones, but they take an +additional parameter, \Parameter{reference layer name}. The layer list of +the page style named in \Parameter{page style name} is searched for this +reference layer. % +\else% +These commands are similar to the previous ones. The existing layers of the +page style, however, are searched for the \PName{reference layer name}. % +\fi% +The layers in the \Parameter{layer list} parameter are then inserted +before\textnote{add before/after layer} or after this reference layer% +\iffalse% Umbruchkorrekturtext +in the layers of the page style% +\fi% +. The order of the layers in the \PName{layer list} is retained. + +If the reference layer named \PName{reference layer name} is not part of the +given page style, nothing is inserted. On the other hand, if the page style is +neither a layer page style nor a page-style alias, an error will be reported.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{UnifyLayersAtPageStyle}\Parameter{page style name} +\end{Declaration} +\BeginIndex{}{page style>layers}% +\BeginIndex{}{layers>page style}% +The commands for defining page styles or adding layers to a page style do not +care how many times a layer appears in a page style, so it is quite +permissible for a layer to appear multiple times. In most cases, however, it +does not make sense to use the same layer several times in one page style. +Therefore, you can use \Macro{UnifyLayersAtPageStyle} to remove all layer +duplicates from the layer page style of the specified \Parameter{page style + name}. + +Note\textnote{Attention!} that this function can change the order of layers. +So if you need a specific order, you should remove all layers and add the +layers in the order you want instead of using \Macro{UnifyLayersAtPageStyle}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ModifyLayerPageStyleOptions}% + \Parameter{page style name}\Parameter{option list}% + \Macro{AddToLayerPageStyleOptions}% + \Parameter{page style name}\Parameter{option list} +\end{Declaration} +\BeginIndex{}{page style>layers}% +\BeginIndex{}{layers>page style}% +These two commands can be used to modify the options, and thus the +hooks\Index{hooks}, of a layer page style. With +\Macro{ModifyLayerPageStyleOptions}\textnote{change page-style options}, only +the options in the comma-separated \PName{option list} will be set to the new +values given there. The previous values are lost. All options from +\autoref{tab:scrlayer.pagestyle.hooks}, +\autopageref{tab:scrlayer.pagestyle.hooks} are allowed. Options or hooks that +are not specified in the \PName{option list} will remain unchanged. If you +want to set an option to do nothing you can set it to the value \Macro{relax}. +Setting an option to a new value using \Macro{ModifyLayerPageStyleOptions} +will remove the previous value, including the global default value. This +statement is the only way to remove the global defaults of the \KOMAScript{} +options from a page style. + +\Macro{AddToLayerPageStyleOptions}\textnote{extend page-style options}, on the +other hand, does not overwrite the previous values. Instead it adds\,---\,or, +more precisely, concatenates\,---\, the new values to old ones.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{IfLayerPageStyleExists}% + \Parameter{page style name}\Parameter{then code}\Parameter{else code}% + \Macro{IfRealLayerPageStyleExists}%^ + \Parameter{page style name}\Parameter{then code}\Parameter{else code}% +\end{Declaration} +\BeginIndex{}{page style>layers}% +\BeginIndex{}{layers>page style}% +With these commands, you can execute code depending on whether a page style is +a layer page style or not. The \Macro{IfLayerPageStyleExists} command executes +the \PName{then code} if \PName{page style name} is the name of a layer page +style or a page-style alias that results in a layer page style. Otherwise, the +command executes the \PName{else code}. Internally, this command is often used +to throw an error message if you use one of the layer page style commands with +an \PName{page style name} that does not correspond to a layer page style. + +The \Macro{IfRealLayerPageStyleExists} command goes one step further and +executes the \PName{then code} only if the page style specified by \PName{page + style name} is itself a layer page style. So if \PName{page style name} is a +page-style alias, this command executes the \PName{else code} even if the +alias resolves to a real layer page style.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{IfLayerAtPageStyle}% + \Parameter{page style name}\Parameter{layer name}% + \Parameter{then code}\Parameter{else code}% + \Macro{IfSomeLayerAtPageStyle}% + \Parameter{page style name}\Parameter{layer list}%^ + \Parameter{then code}\Parameter{else code}% + \Macro{IfLayersAtPageStyle}% + \Parameter{page style name}\Parameter{layer list}% + \Parameter{then code}\Parameter{else code}% +\end{Declaration} +\BeginIndex{}{page style>layers}% +\BeginIndex{}{layers>page style}% +These commands can be used to test whether one or more layers are part of a +page style. The \Macro{IfLayerAtPageStyle} command expects exactly one +\PName{layer name}\textnote{exactly one layer} as the second argument. If this +layer is part of the page style specified in \PName{page style name}, the +\PName{then code} will be executed. Otherwise, the \PName{else code} will be +executed. + +The \Macro{IfSomeLayerAtPageStyle} and \Macro{IfLayersAtPageStyle} commands +allow a comma-separated \PName{layer list}. \Macro{IfSomeLayerAtPageStyle} +will execute the \PName{then code} if \emph{at least one} of the layers in the +\PName{layer list} parameter is part of the layer list of \PName{page style + name}. In contrast, \Macro{IfLayersAtPageStyle} executes the \PName{then + code} only if \emph{all} the layers in the \PName{layer list} parameter are +part of the page style. If the condition is not met, the \PName{else code} +will be executed. + +With suitable nesting of these commands, you can construct complex conditions. +If you use only one \PName{layer name} in the \PName{layer list}, all three +statements are synonymous.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DestroyRealLayerPageStyle}\Parameter{page style name} +\end{Declaration} +\BeginIndex{}{page style>layers}% +\BeginIndex{}{layers>page style}% +\iftrue +This statement makes a layer page style undefined. If a page-style alias or +ordinary page style is specified, the command is ignored. +\else +With this command you can remove a the definition of a layer page style. +However, this only occurs if a layer page style named \PName{page style name} +exists. If, instead, it is a page-style alias, a different (non-layer) page +style, or not a page style at all, nothing happens; the command is ignored.% +\fi + +If \PName{page style name} is the name of the current page style, the current +page style will becomes a kind of empty page style. If the page style set with +\DescRef{maincls.cmd.thispagestyle} is \PName{page style name}, it will simply +be reset. The previous \DescRef{maincls.cmd.thispagestyle} command loses its +current effect. + +Note\textnote{Attention!} that the layers of the page style are not destroyed +automatically. If you want to destroy the layers too, you can do this with: +\begin{lstcode} + \ForEachLayerOfPageStyle{...}{\DestroyLayer{#1}} +\end{lstcode} +before destroying the layer page style itself. + +The command is intended to be used within the \PName{code} argument of +\DescRef{\LabelBase.cmd.scrlayerOnAutoRemoveInterface} to remove page styles +that are defined as part of an end-user interface. See +\autoref{sec:scrlayer.enduserinterfaces} below for more information about +auto-removal code.% +\EndIndexGroup +\EndIndexGroup + +\LoadCommonFile{headfootheight}% \section{Height of Page Head and Foot} + +\LoadCommonFile{pagestylemanipulation}% \section{Manipulation of Defined Page Styles} + +\section{Defining and Managing Interfaces for End Users} +\seclabel{enduserinterfaces} + +The \Package{scrlayer} package provides an experimental interface to define +and manage (concurrent) interfaces for end users. \iffree{In the long run, + this interface may disappear from \Package{scrlayer} and be taken over by + \Package{scrbase} instead.}{} Currently, this interface is highly +experimental% +\iffree{ and therefore \Package{scrlayer} provides these interface commands + only for the use of subpackages of \Package{scrlayer}}{}% +. Given the current state of development, you should not depend on automatic +removal of a concurrent interface to work. Instead, you should avoid using +concurrent end-user interfaces. + +This section only describes the interface commands for defining an end-user +interface. For end users themselves, it is of little interest. Rather, this +section is intended for authors of packages and classes that build on +\Package{scrlayer}. End users will find information about specific end-user +interfaces in \autoref{cha:scrlayer-scrpage}, +\autoref{cha:scrlayer-scrpage-experts}, and \autoref{cha:scrlayer-notecolumn}. + +\begin{Declaration} + \Macro{scrlayerInitInterface}\OParameter{interface name} +\end{Declaration} +The \Macro{scrlayerInitInterface} command registers a new interface named +\PName{interface name}. The \PName{interface name} must be unique. If an +interface with the same name has already been registered, an error will occur. + +This command should always appear as the first command when defining an +end-user interface and therefore is described here first. If the optional +argument\,---\,including the square brackets\,---\,is omitted, +\PValue{\Macro{@currname}.\Macro{@currext}} will be used instead. For classes +and packages, this is the file name of the class or package. But of course you +can use any other sequence of characters with a category of \emph{letter} or +\emph{other}. This is useful, for example, when a class or package defines +multiple end-user interfaces% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{forceoverwrite}{simple switch}% + \OptionVName{autoremoveinterfaces}{simple switch}% + \Macro{scrlayerAddToInterface}% + \OParameter{interface name}\Parameter{command}\Parameter{code}% + \Macro{scrlayerAddCsToInterface}% + \OParameter{interface name}\Parameter{command sequence}\Parameter{code} +\end{Declaration} +One of the special features of \Package{scrlayer}'s end user interfaces is +that they should register all interface-dependent commands (also known as +\emph{macros}). You can do this using \Macro{scrlayerAddToInterface}. The +optional argument \PName{interface name} must be an interface name previously +registered with \DescRef{\LabelBase.cmd.scrlayerInitInterface}. An error will +occur if the interface has not been initialised. + +If\textnote{Attention!} your interface defines macros not just when the class +or package is being loaded but also at runtime, you must provide the interface +name in the optional argument even if it corresponds to the file name of the +class or package, since the values of \Macro{@currname} and \Macro{@currext} +are only valid while the class or package is being loaded. + +The first mandatory argument is the \PName{command}\footnote{The + \PName{command} consists of a backslash followed by a \PName{command + sequence} that consists of characters of the category code \emph{letter}, + or of exactly one character of the category \emph{other}, or of a character + of the category \emph{active} (without the backslash).} to be added to the +interface. If the command can be defined, this will be done. In addition, it +will set to \Macro{relax} and \PName{code} will be executed. Within +\PName{code}, you can then define \PName{command}, e.\,g., using +\Macro{newcommand}. + +But when can a command be defined? If a command is undefined or \Macro{relax}, +it can always be defined. If a command has already been defined \emph{and} +registered for another interface \emph{and} if the \KOMAScript{} option +\Option{autoremoveinterfaces} has been activated, the other interface will be +removed automatically, and the \PName{command} will be set to \Macro{relax} +and registered for the new interface specified. If a \PName{command} is +already defined but is \emph{not} part of another interface, \emph{and} if the +\KOMAScript{} option \Option{forceoverwrite} has been activated, the +\PName{command} is also set to \Macro{relax} and registered for the specified +interface. In all other cases, however, the command is not definable, in +particular if it is already defined and the \KOMAScript{} options +\Option{autoremoveinterfaces} and \Option{forceoverwrite} are deactivated. + +The \Macro{scrlayerAddCsToInterface} command is similar to +\Macro{scrlayerAddToInterface} but it expects the first argument to be not a +\PName{command} but a command sequence\footnote{A command sequence must be + fully expandable and its expansion must result in characters of the category + code \emph{letter}, \emph{other}, or \emph{space}.}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scrlayerOnAutoRemoveInterface}% + \OParameter{interface name}\Parameter{code} +\end{Declaration} +The \Macro{scrlayerOnAutoRemoveInterface} command registers \PName{code} to be +executed in the event that the end-user interface with the specified +\PName{interface name} is automatically removed (see +\DescRef{\LabelBase.option.autoremoveinterfaces} earlier in this section). +This can be used, for example, to automatically destroy layers or page styles +that rely on commands from the end-user interface (see +\DescRef{\LabelBase.cmd.DestroyLayer}, +\DescRef{\LabelBase.cmd.DestroyPageStyleAlias}, and +\DescRef{\LabelBase.cmd.DestroyRealLayerPageStyle}). Regarding the default for +the optional argument, please refer to the explanation for +\DescRef{\LabelBase.cmd.scrlayerInitInterface}.% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: + + diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrlfile.tex b/macros/latex/contrib/koma-script/source-doc/english/scrlfile.tex new file mode 100644 index 0000000000..a01a4a0035 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrlfile.tex @@ -0,0 +1,722 @@ +% ====================================================================== +% scrlfile.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlfile.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrlfile of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------------- +% +% Kapitel ueber scrlfile in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrlfile.tex} + [$Date: 2018-03-30 11:57:25 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (chapter: scrlfile)] +\translator{Gernot Hassenpflug\and Markus Kohm\and Karl Hagen} + +% Date of the translated German file: 2018-02-15 + +\chapter{Controlling Package Dependencies with \Package{scrlfile}} +\labelbase{scrlfile} +\BeginIndexGroup +\BeginIndex{Package}{scrlfile} + +The introduction of \LaTeXe{} in 1994 brought many changes in the handling of +\LaTeX{} extensions. The package author today has a whole series of macros +available to determine if another package or class has been loaded and whether +specific options are being used. The package author can even load other +packages or specify certain options in case the package is loaded later. This +has led to the expectation that the order in which package are loaded would +not be important. Sadly, this hope has not been fulfilled. + +\section{About Package Dependencies} +\seclabel{dependency} +%\begin{Explain} +More and more often, different packages either newly define or redefine the +same macro. In such a case, the order in which a package is loaded becomes +very important. Sometimes, users find it very difficult to understand the +resulting behaviour. Sometimes it is necessary to react in a specific way when +another package is loaded. + +As a simple example, consider loading the \Package{longtable} package with a +\KOMAScript{} document class. The \Package{longtable} package defines its own +table captions. These are perfectly suited to the standard classes, but they +do not match the default settings for \KOMAScript{} captions, nor do they +react to the relevant configuration options. To solve this problem, the +\Package{longtable} package commands which are responsible for the table +captions need to be redefined. However, by the time the \Package{longtable} +package is loaded, the \KOMAScript{} class has already been processed. + +Previously, the only way to solve this problem was to delay the redefinition +until the beginning of the document using \Macro{AtBeginDocument}. However, if +users want to change the relevant commands themselves, they should do so in +the preamble of the document. But this is impossible because \KOMAScript{} +will overwrite the users' definitions at \Macro{begin}\PParameter{document}. +They would also need to perform the redefinition with \Macro{AtBeginDocument}. + +But \KOMAScript{} does not actually need to wait for +\Macro{begin}\PParameter{document} to redefine the macros. It would be +sufficient to postpone the redefinition until after the \Package{longtable} +package has been loaded. Unfortunately, the \LaTeX{} kernel does not define +necessary commands. The \Package{scrlfile} package provides a remedy for this +problem. + +It is also conceivable that you would like to save the definition of a macro +in a temporary macro before a package is loaded and restore it after the +package has been loaded. The \Package{scrlfile} package allows this, too. + +The use of \Package{scrlfile} is not limited to package dependencies. +Dependencies can also be considered for any other file. For example, you can +ensure that loading the not unimportant file \File{french.ldf} automatically +leads to a warning. + +Although the package is particularly of interest for package authors, there +are also applications for normal \LaTeX{} users. Therefore, this chapter +gives examples for both groups. +%\end{Explain} + + +\section{Actions Before and After Loading} +\seclabel{macros} + +The \Package{scrlfile} package can execute actions both before and after +loading files. The commands used to do so distinguish between ordinary files, +classes, and packages. + +\begin{Declaration} + \Macro{BeforeFile}\Parameter{file}\Parameter{commands}% + \Macro{AfterFile}\Parameter{file}\Parameter{commands} +\end{Declaration}% +\Macro{BeforeFile} ensures that the \PName{commands} are executed before the +next time \PName{file} is loaded. \Macro{AfterFile} works in a similar +fashion, and the \PName{commands} will be executed after the \PName{file} has +been loaded. Of course, if \PName{file} is never loaded, the \PName{commands} +will never be executed. For \PName{file}, you should specify any extensions as +part of the file name, as you would with \Macro{input}. + +To implement those features, \Package{scrlfile} redefines the well-known +\LaTeX{} command \Macro{InputIfFileExists}. If this command does not have the +expected definition, \Package{scrlfile} issues a warning. This occurs in case +the command is changed in future \LaTeX{} versions or has already been +redefined by another package. + +\LaTeX{} uses the \Macro{InputIfFileExists} command every time it loads a +file. This occurs regardless of whether the file is loaded with +\Macro{include}, \Macro{LoadClass}, \Macro{documentclass}, \Macro{usepackage}, +\Macro{RequirePackage}, or similar commands. Only +\begin{lstcode} + \input foo +\end{lstcode} +loads the file \texttt{foo} without using +\Macro{InputIfFileExists}. You should therefore always use +\begin{lstcode} + \input{foo} +\end{lstcode} +instead. Notice the parentheses surrounding the file name!% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{BeforeClass}\Parameter{class}\Parameter{commands}% + \Macro{BeforePackage}\Parameter{package}\Parameter{commands} +\end{Declaration}% +These two commands work the same way as \DescRef{\LabelBase.cmd.BeforeFile}. +The only difference is that the \PName{class} or \PName{package} is specified +with its class or package name and not with its file name. That means you +should omit the file extensions \File{.cls} or \File{.sty}.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AfterClass}\Parameter{class}\Parameter{commands}% + \Macro{AfterClass*}\Parameter{class}\Parameter{commands}% + \Macro{AfterClass+}\Parameter{class}\Parameter{commands}% + \Macro{AfterClass!}\Parameter{class}\Parameter{commands}% + \Macro{AfterAtEndOfClass}\Parameter{class}\Parameter{commands}% + \Macro{AfterPackage}\Parameter{package}\Parameter{commands}% + \Macro{AfterPackage*}\Parameter{package}\Parameter{commands}% + \Macro{AfterPackage+}\Parameter{package}\Parameter{commands}% + \Macro{AfterPackage!}\Parameter{package}\Parameter{commands}% + \Macro{AfterAtEndOfPackage}\Parameter{package}\Parameter{commands} +\end{Declaration}% +The \Macro{AfterClass} and \Macro{AfterPackage} commands work much like +\DescRef{\LabelBase.cmd.AfterFile}. The only difference is that the +\PName{class} or \PName{package} is specified with its class or package name +and not with its file name. That means you should omit the file extensions +\File{.cls} or \File{.sty}. + +The\important[i]{\Macro{AfterClass*}\\\Macro{AfterPackage*}} starred versions +function somewhat differently. If the class or package has already been +loaded, they execute the \PName{commands} immediately rather than waiting +until the next time the class or package is loaded. + +The\important[i]{\Macro{AfterClass+}\\\Macro{AfterPackage+}} +plus\ChangedAt{v3.09}{\Package{scrlfile}} version executes the +\PName{commands} after the class or package has been completely loaded. This +behaviour differs from that of the starred version only if you use the command +when the class or package has begun loading but has not yet finished. If the +class or package has not finished loading, the \PName{commands} will always be +executed before the commands in \Macro{AtEndOfClass} or +\Macro{AtEndOfPackage}. + +If\important[i]{\Macro{AfterClass!}\\\Macro{AfterPackage!}} a class uses +\Macro{AtEndOfClass} or a package uses \Macro{AtEndOfPackage} to execute +commands after the class of package file has been loaded completely, and +if you want to execute \PName{commands} after these deferred +commands have been executed, you can use the exclamation-mark versions +\Macro{AfterClass!}\ChangedAt{v3.09}{\Package{scrlfile}} or +\Macro{AfterPackage!}. + +If\important[i]{\Macro{AfterAtEndOfClass}\\\Macro{AfterAtEndOfPackage}} you +want to execute the \PName{commands} only when the class or package is loaded +later and outside the context of that class or package, you can use +\Macro{AfterAtEndOfClass}\ChangedAt{v3.09}{\Package{scrlfile}} for classes and +\Macro{AfterAtEndOfPackage} for packages. + +\begin{Example} + The following example for class and package authors shows how \KOMAScript{} + itself makes use of the new commands. The class \Class{scrbook} contains the + following: +% CORRECTED MESSAGE: +% You are using an old version of the hyperref +% package!\MessageBreak% +% This version has a buggy hack in many +% drivers,\MessageBreak% +% causing \string\addchap\space to behave +% strangely.\MessageBreak% +% Please update hyperref to at least version +% 6.71b}% +\begin{lstcode} + \AfterPackage{hyperref}{% + \@ifpackagelater{hyperref}{2001/02/19}{}{% + \ClassWarningNoLine{scrbook}{% + You are using an old version of hyperref package!% + \MessageBreak% + This version has a buggy hack at many drivers% + \MessageBreak% + causing \string\addchap\space to behave strange.% + \MessageBreak% + Please update hyperref to at least version + 6.71b}}} +\end{lstcode} + Old versions of the \Package{hyperref} package redefine a macro of the + \Class{scrbook} class in a way that is incompatible with newer \KOMAScript{} + versions. Newer versions of \Package{hyperref} refrain from making this + change if a newer version of \KOMAScript{} is detected. In case + \Package{hyperref} is loaded at a later stage, \Class{scrbook} ensures that + a check for an acceptable version of \Package{hyperref} is performed + immediately after the package is loaded. If this is not the case, a warning + is issued. + + Elsewhere in three of the \KOMAScript{} classes, you can find the following: +\begin{lstcode} + \AfterPackage{caption2}{% + \renewcommand*{\setcapindent}{% +\end{lstcode} + After loading \Package{caption2}, and only if it has been loaded, + \KOMAScript{} redefines its own \DescRef{maincls.cmd.setcapindent} command. + The exact code of the redefinition is irrelevant. The important thing to + note is that \Package{caption2} takes control of the + \DescRef{maincls.cmd.caption} macro and that therefore the normal definition + of the \DescRef{maincls.cmd.setcapindent} command would have no effect. The + redefinition thus improves interoperability with \Package{caption2}. + + There are also, however, instances where these commands are useful to normal + \LaTeX{} users. For example, suppose you create a document from which you + want to generate both a PostScript file, using \LaTeX{} and dvips, and a PDF + file, using \mbox{pdf{\LaTeX}}. The document should also contain hyperlinks. + In the table of contents, you have entries that span several lines. This is + not a problem for the \mbox{pdf{\LaTeX}} method, since here hyperlinks can + be broken across multiple lines. However, this is not possible with the + \Package{hyperref} driver for dvips or \mbox{hyper{\TeX}}. In this case, you + would like \Package{hyperref} to use the \Option{linktocpage} option. The + decision as to which driver is loaded is made automatically by + \File{hyperref}. + + Everything else can now be left to \DescRef{\LabelBase.cmd.AfterFile}: +\begin{lstcode} + \documentclass{article} + \usepackage{scrlfile} + \AfterFile{hdvips.def}{\hypersetup{linktocpage}} + \AfterFile{hypertex.def}{\hypersetup{linktocpage}} + \usepackage{hyperref} + \begin{document} + \listoffigures + \clearpage + \begin{figure} + \caption{This is an example of a fairly long figure caption, but + one that does not use the optional caption argument that would + allow you to write a short caption in the list of figures.} + \end{figure} + \end{document} +\end{lstcode} + If either of the \Package{hyperref} drivers \Option{hypertex} or + \Option{dvips} is used, the useful \Package{hyperref} option + \Option{linktocpage} will be set. However, if you create a PDF file + with \mbox{pdf{\LaTeX}}, the option + will not be set because then the \Package{hyperref} driver + \File{hpdftex.def} will be used. This means that neither \File{hdvips.def} + nor \File{hypertex.def} will be loaded. +\end{Example} +\iffalse% Umbruchkorrekturtext (der besser nicht mehr verwendet wird!) + Furthermore\textnote{Hint!}, you can also load \Package{scrlfile} and the + \DescRef{\LabelBase.cmd.AfterFile} command into a private + \File{hyperref.cfg}. In this case, however, you should use + \Macro{RequirePackage} instead of \Macro{usepackage} to load the package + (see \cite{latex:clsguide}). In the example above, the new lines have to be + inserted directly after the \Macro{ProvidesFile} line, that is, immediately + before the \Option{dvips} or \Option{pdftex} options are executed.% +\fi +Incidentally\textnote{Hint!}, you can also load \Package{scrlfile} before +\DescRef{maincls.cmd.documentclass}\IndexCmd{documentclass}. In this case, +however, you should use \Macro{RequirePackage}\IndexCmd{RequirePackage} +instead of \DescRef{maincls.cmd.usepackage} (see \cite{latex:clsguide}).% +\EndIndexGroup + + +\begin{Declaration} + \Macro{BeforeClosingMainAux}\Parameter{commands}% + \Macro{AfterReadingMainAux}\Parameter{commands}% +\end{Declaration}% +These commands differ in one detail from the commands explained previously. +Those commands enable actions before or after loading files. That is not the +case here. Package authors often want to write something to the \File{aux} +file after the last document page has been shipped out. To do so, ignoring the +resulting problems they create, they often use code such as the following: +\begin{lstcode} + \AtEndDocument{% + \if@filesw + \write\@auxout{% + \protect\writethistoaux% + }% + \fi + } +\end{lstcode} +However, this does not really solve the problem. If the last page of the +document has already been shipped out before \Macro{end}\PParameter{document}, +the code above will not result in any output to the \File{aux} file. If you +try to fix this new problem using \Macro{immediate} just before \Macro{write}, +you would have the opposite problem: if the last page has not yet been shipped +out before \Macro{end}\PParameter{document}, \Macro{writethistoaux} would be +written to the \File{aux} file too early. Therefore you often see solutions +like: +\begin{lstcode} + \AtEndDocument{% + \if@filesw + \clearpage + \immediate\write\@auxout{% + \protect\writethistoaux% + }% + \fi + } +\end{lstcode} +However, this solution has the disadvantage that it forces the last page to be +shipped out. A command such as +\begin{lstcode} + \AtEndDocument{% + \par\vspace*{\fill}% + Note at the end of the document.\par + } +\end{lstcode} +will no longer cause the note to appear beneath the text of the last real page +of the document but at the end of one additional page. Furthermore, +\Macro{writethistoaux} will again be written to the \File{aux} file one page +too early. + +The best solution for this problem would be if you could write directly to the +\File{aux} file immediately after the final \DescRef{maincls.cmd.clearpage} +that is part of \Macro{end}\PParameter{document} but before closing the +\File{aux} file. This is the purpose of \Macro{BeforeClosingMainAux}: +\begin{lstcode} + \BeforeClosingMainAux{% + \if@filesw + \immediate\write\@auxout{% + \protect\writethistoaux% + }% + \fi + } +\end{lstcode} +This will be successful even if the final \DescRef{maincls.cmd.clearpage} +inside of \Macro{end}\PParameter{document} does not actually ship out any page +or if \DescRef{maincls.cmd.clearpage} is used within an \Macro{AtEndDocument} +command. + +However, there one important limitation using \Macro{BeforeClosingMainAux}: +you should not use any typesetting commands inside the \PName{commands} of +\Macro{BeforeClosingMainAux}! If you ignore this restriction, the result is +just as unpredictable as the results of the problematic suggestions above that +use \Macro{AtEndDocument}. + +The \Macro{AfterReadingMainAux}\ChangedAt{v3.03}{\Package{scrlfile}} command +actually executes the \PName{commands} after closing and reading the +\File{aux} file inside \Macro{end}\PParameter{document}. This is only useful +in a few very rare cases, for example to write statistical information to the +\File{log} file which is valid only after reading the \File{aux} file, or to +implement additional \emph{rerun} requests. Typesetting commands are even more +dangerous inside these \PName{commands} than inside the argument of +\Macro{BeforeClosingMainAux}.% +% +\EndIndexGroup + + +\section{Replacing Files at Input} +\seclabel{replace} + +The previous sections in this chapter have explained commands to perform +actions before or after loading a particular file, package, or class. You can +also use \Package{scrlfile} to input a completely different file than the one +that was requested. + + +\begin{Declaration} + \Macro{ReplaceInput}\Parameter{original file}% + \Parameter{replacement file}% +\end{Declaration}% +This\ChangedAt{v2.96}{\Package{scrlfile}} command defines a replacement for +the file specified in the first argument, \PName{original file}. If \LaTeX{} +is instructed to load this file, the \PName{replacement file} will be loaded +instead. The replacement-file definition affects all files loaded using +\Macro{InputIfFileExists}, whether they are loaded by the user or internally +by \LaTeX{}. To do so, \Package{scrlfile} redefines \Macro{InputIfFileExists}. + +\begin{Example} + You want to input the \File{\Macro{jobname}.xua} file instead of the + \File{\Macro{jobname.aux}} file. To do this, you use +\begin{lstcode} + \ReplaceInput{\jobname.aux}{\jobname.xua} +\end{lstcode} + If additionally you replace \File{\Macro{jobname}.xua} by + \File{\Macro{jobname}.uxa} using +\begin{lstcode} + \ReplaceInput{\jobname.xua}{\jobname.uxa} +\end{lstcode} + then \File{\Macro{jobname}.aux} will also be replaced by + \File{\Macro{jobname}.uxa}. In this way, you can process the whole + replacement chain. + + However, a replacement that results in a loop such as +\begin{lstcode} + \ReplaceInput{\jobname.aux}{\jobname.xua} + \ReplaceInput{\jobname.xua}{\jobname.aux} +\end{lstcode} + will cause a \emph{stack size error}. So it is not possible to replace + a file that has already been replaced once by itself again. +\end{Example} + +In theory, it would also be possible to use this command to replace one +package or class with another. But \LaTeX{} would recognize that the requested +file name does not match the name of the package or class. You can find a +solution for this problem below.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ReplaceClass}\Parameter{original class}% + \Parameter{replacement class}% + \Macro{ReplacePackage}\Parameter{original package}% + \Parameter{replacement package}% +\end{Declaration}% +You\ChangedAt{v2.96}{\Package{scrlfile}}\textnote{Attention!} should never +replace a class or package using the \DescRef{\LabelBase.cmd.ReplaceInput} +command described above. Doing so would result in a \LaTeX{} warning about +mismatched class or package names. Real errors are also possible if a class or +package is loaded under an incorrect file name. +\begin{Example} + You replace the \Package{scrpage2} package with its official successor, + \Package{scrlayer-scrpage}, by using +\begin{lstcode}[escapechar=\$] + \ReplaceInput{scrpage2.sty}{scrlayer-scrpage.sty}$\textnote{Do not try this!}$ +\end{lstcode} + Loading \Package{scrpage2} will then lead to the following warning: +\begin{lstcode} + LaTeX warning: You have requested `scrpage2', + but the package provides `scrlayer-scrpage'. +\end{lstcode} + Users may be greatly confused by such a warning because they requested not + \Package{scrlayer-scrpage} but \Package{scrpage2}, which was replaced by + \Package{scrlayer-scrpage}. +\end{Example} +One solution to this problem is to use \Macro{ReplaceClass} or +\Macro{ReplacePackage} instead of \DescRef{\LabelBase.cmd.ReplaceInput}. Note +that in this case, as with \Macro{documentclass} and \Macro{usepackage}, you +should give the name of the class or package and not the complete file name. + +The replacement class works for all classes loaded with +\Macro{documentclass}, \Macro{LoadClassWithOptions}, or \Macro{LoadClass}. The +replacement package works for all packages loaded with +\Macro{usepackage}, \Macro{RequirePackageWithOptions}, or +\Macro{RequirePackage}. + +Please\textnote{Attention!} note that the \PName{replacement class} or the +\PName{replacement package} will be loaded with the same options that would +have been passed to the \PName{original class} or \PName{original package}. If +you replace a class or package with one that does not support a requested +option, you will receive the usual warnings and errors. However, you can +declare such missing options using \DescRef{\LabelBase.cmd.BeforeClass} or +\DescRef{\LabelBase.cmd.BeforePackage}. + +\begin{Example} + Suppose you want to replace the \Package{oldfoo} package with the + \Package{newfoo} package when the former package is loaded. You can do this with +\begin{lstcode} + \ReplacePackage{oldfoo}{newfoo} +\end{lstcode} + Suppose the old package provides an \Option{oldopt} option, but the new + package does not. With +\begin{lstcode} + \BeforePackage{newfoo}{% + \DeclareOption{oldopt}{% + \PackageInfo{newfoo}% + {option `oldopt' not supported}% + }}% +\end{lstcode} + you can declare this missing option for the \Package{newfoo} package. This + avoids an error message when the \Package{oldfoo} package is loaded with the + option that is unsupported by \Package{newfoo}. + + If, on the other hand, the \Package{newfoo} package supports a + \Option{newopt} option that should be used instead of the \Option{oldopt} + option, you can also achieved this: +\begin{lstcode} + \BeforePackage{newfoo}{% + \DeclareOption{oldopt}{% + \ExecuteOptions{newopt}% + }}% +\end{lstcode} + You can even specify different default options that apply when loading the + new package: +\begin{lstcode} + \BeforePackage{newfoo}{% + \DeclareOption{oldopt}{% + \ExecuteOptions{newopt}% + }% + \PassOptionsToPackage{newdefoptA,newdefoptB}% + {newfoo}% + } +\end{lstcode} + or directly: +\begin{lstcode} + \BeforePackage{newfoo}{% + \DeclareOption{oldopt}{% + \ExecuteOptions{newopt}% + }% + }% + \PassOptionsToPackage{newdefoptA,newdefoptB}% + {newfoo}% +\end{lstcode} + Note that in the last example, the call to \Macro{PassOptionsToPackage} + occurs not within but after \Macro{BeforePackage} +\end{Example} + +Of course, to replace classes, you must load \Package{scrlfile} before the +class using \Macro{RequirePackage} instead of \Macro{usepackage}. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{UnReplaceInput}\Parameter{file name}% + \Macro{UnReplacePackage}\Parameter{package}% + \Macro{UnReplaceClass}\Parameter{class}% +\end{Declaration} +You\ChangedAt{v3.12}{\Package{scrlfile}} can also remove a replacement. You +should remove the replacement definition for an input file using +\Macro{UnReplaceInput}, for a package using \Macro{UnReplacePackage}, and for +a class using \Macro{UnReplaceClass}.% +\EndIndexGroup + + +\section{Preventing File Loading} +\seclabel{prevent} + +Classes\ChangedAt{v3.08}{\Package{scrlfile}} and packages written for use +within companies or academic institutions often load many packages only +because users need them frequently, not because they are required by the class +or package itself. If a problem occurs with one of these automatically loaded +packages, you somehow have to keep the problematic package from being loaded. +Once again, \Package{scrlfile} provides a simple solution. + +\begin{Declaration} + \Macro{PreventPackageFromLoading}\OParameter{alternate code}% + \Parameter{package list}% + \Macro{PreventPackageFromLoading*}\OParameter{alternate code}% + \Parameter{package list} +\end{Declaration} +Calling this command\ChangedAt{v3.08}{\Package{scrlfile}} before loading a +package with \Macro{usepackage}\IndexCmd{usepackage}, +\Macro{RequirePackage}\IndexCmd{RequirePackage}, or +\Macro{RequirePackageWithOptions}\IndexCmd{RequirePackageWithOptions} +effectively prevents the package from being loaded if it is found in the the +\PName{package list}. +% +\begin{Example} + Suppose you work at a company where all documents are created using Latin + Modern. The company class, \Class{compycls}, therefore contains these lines: +\begin{lstcode} + \RequirePackage[T1]{fontenc} + \RequirePackage{lmodern} +\end{lstcode} + But now, for the first time, you want to use \XeLaTeX{} or Lua\LaTeX{}. + Since the recommended \Package{fontspec} package uses Latin Modern as the + default font anyway, and loading \Package{fontenc} would not be a good idea, + you want to prevent both packages from being loaded. Therefore, you load the + class in your own document as follows: +\begin{lstcode} + \RequirePackage{scrlfile} + \PreventPackageFromLoading{fontenc,lmodern} + \documentclass{firmenci} +\end{lstcode} +\end{Example} +The example above also shows that you can load \Package{scrlfile} before the +class. In this case, you must use +\Macro{RequirePackage}\IndexCmd{RequirePackage} because \Macro{usepackage} +before \Macro{documentclass} is not permitted. + +If you specify an empty \PName{package list} or if it contains a package that +has already been loaded, \Macro{PreventPackageFromLoading} issues a warning, +while\ChangedAt{v3.12}{\Package{scrlfile}} \Macro{PreventPackageFromLoading*} +merely writes a note to the log file only. + +You\ChangedAt{v3.12}{\Package{scrlfile}} can use the optional argument to +execute code instead of loading the package. But you cannot load any other +packages or files inside \PName{alternate code}. To load another package, see +\DescRef{\LabelBase.cmd.ReplacePackage} in \autoref{sec:scrlfile.macros} on +\DescPageRef{\LabelBase.cmd.ReplacePackage}. Note also that the +\PName{alternate code} will be executed several times if you try to load the +package more than once!% +\EndIndexGroup + + +\begin{Declaration} + \Macro{StorePreventPackageFromLoading}\Parameter{\textMacro{command}}% + \Macro{ResetPreventPackageFromLoading} +\end{Declaration} +\Macro{StorePreventPackageFromLoad}\ChangedAt{v3.08}{\Package{scrlfile}} +defines \Macro{command} to be the current list of packages that should not be +loaded. In contrast, +\Macro{ResetPreventPackageFromLoading}\ChangedAt{v3.08}{\Package{scrlfile}} +resets the list of packages that should not be loaded. After +\Macro{ResetPreventPackageFromLoading}, you can load all packages again. +\begin{Example} + Suppose you need to load a package inside another package and you do not + want the user to be able to prevent that package from being loaded with + \DescRef{\LabelBase.cmd.PreventPackageFromLoading}% + \IndexCmd{PreventPackageFromLoading}. So you reset the do-not-load list + before you load this package: +\begin{lstcode} + \ResetPreventPackageFromLoading + \RequirePackage{foo} +\end{lstcode} + Unfortunately, from this point on the user's entire do-not-load list would + be lost. To avoid this, you first store the list and then restore it later: +\begin{lstcode} + \newcommand*{\Users@PreventList}{}% + \StorePreventPackageFromLoading\Users@PreventList + \ResetPreventPackageFromLoading + \RequirePackage{foo} + \PreventPackageFromLoading{\Users@PreventList} +\end{lstcode} + Note\textnote{Attention!} that \Macro{StorePreventPackageFromLoading} + defines the \Macro{Users@PreventList} macro even if it has already been + defined. In other words, calling \Macro{StorePreventPackageFromLoading} + overwrites existing \Macro{command} definitions without checking. Therefore + this example uses \Macro{newcommand*} to get an error message if + \Macro{Users@PreventList} has already been defined. +\end{Example} +Note that when you manipulate the list stored by +\Macro{StorePreventPackageFromLoading}, you are responsible for making sure it +can be restored. For example, the list elements must be separated by comma, +must not contain white space or group braces, and must be fully expandable. + +Also note\textnote{Attention!}, that \Macro{ResetPreventPackageFromLoading} +does not clear the \PName{alternate code} for a package. But this code +will not be executed so long as the package is not added again to the +do-not-load list.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{UnPreventPackageFromLoading}\Parameter{package list}% + \Macro{UnPreventPackageFromLoading*}\Parameter{package list} +\end{Declaration} +Instead\ChangedAt{v3.12}{\Package{scrlfile}} of completely resetting the list +of packages that should not be loaded, you can also specify individual +packages to remove from the list. The starred version of the command also +deletes the \PName{alternate code}. For example, restoring packages to the +do-not-load list from a stored list will not reactivate their \PName{alternate +code} in this case.% +% +\begin{Example} + Suppose you want to prevent a \Package{foo} package from being loaded, but + you do not want to execute any outdated \PName{alternate code} that may + exist. Instead, only your new \PName{alternate code} should be executed. You + can do this as follows: +\begin{lstcode} + \UnPreventPackageFromLoading*{foo} + \PreventPackageFromLoading[\typeout{alternate code}]{foo} +\end{lstcode} + For the \Macro{UnPreventPackageFromLoading} command, it does not matter + whether or not the package has been prevented from being loaded before. + + Of course you can also use the command to indirectly delete the + \PName{alternate code} of all packages: +\begin{lstcode} + \StorePreventPackageFromLoading\TheWholePreventList + \UnPreventPackageFromLoading*{\TheWholePreventList} + \PreventPackageFromLoading{\TheWholePreventList} +\end{lstcode} + In this case the packages that have been prevented from being loaded are + still prevented from being loaded, but their \PName{alternate code} has been + deleted and will no longer be executed.% +\end{Example}% +\EndIndexGroup +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% ispell-local-dictionary: "english" +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrlttr2-experts.tex b/macros/latex/contrib/koma-script/source-doc/english/scrlttr2-experts.tex new file mode 100644 index 0000000000..ffb397b6d2 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrlttr2-experts.tex @@ -0,0 +1,1897 @@ +% ====================================================================== +% scrlttr2-experts.tex +% Copyright (c) Markus Kohm, 2002-2019 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlttr2-experts.tex +% Copyright (c) Markus Kohm, 2002-2019 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrlttr2 of the KOMA-Script guide expert part +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber scrlttr2 im Experten-Teil der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrlttr2-experts.tex} + [$Date: 2019-01-15 08:29:44 +0100 (Tue, 15 Jan 2019) $ + KOMA-Script guide (chapter: scrlttr2 for experts)] + +\translator{Harald Bongartz\and Georg Grandke\and Raimund Kohl\and Jens-Uwe + Morawski\and Stephan Hennig\and Gernot Hassenpflug\and Markus Kohm\and + Karl Hagen} + +% Date of the translated German file: 2018-07-20 + +\chapter{Additional Information about the \Class{scrlttr2} Class and the + \Package{scrletter} Package} +\labelbase{scrlttr2-experts} + +\BeginIndexGroup +\BeginIndex{Class}{scrlttr2} +This chapter provides additional information about the \KOMAScript{} class +\Class{scrlttr2}. \iffree{Some parts of the chapter are found only in the + German \KOMAScript{} book \cite{book:komascript}. This should not be a + problem, because the}{The} average user, who only wants to use the class +or package, will not normally need this information. Part of this information +is addressed to users for whom the default options are insufficient. Thus, +for example, the first section describes in detail the pseudo-lengths that +specify the letterhead page and which can be used be used to modify the its +layout.% +\iffalse% Es wird Zeit das komplett rauszuwerfen! + In addition, this chapter also describes features that exist only to + provide compatibility with the deprecated \Class{scrlettr} class. It also + explains in detail how to convert a document from this obsolete class + to the current class. +\fi + +\BeginIndex{Package}{scrletter}% +Starting with \KOMAScript~3.15\ChangedAt[2014/11]{v3.15}{\Package{scrletter}}, +you can use the \Package{scrletter} package with one of the \KOMAScript{} +classes \Class{scrartcl}, \Class{scrreprt}, or \Class{scrbook}. It provides +nearly all the features of \Class{scrlttr2} for those classes. There are, +however, a few differences described later in this chapter.% + + +\section{Pseudo-Lengths for Experienced Users} +\seclabel{pseudoLengths} +\BeginIndexGroup +\BeginIndex{}{pseudo-lengths} + +\TeX{} works with a fixed number of registers. There are registers for tokens, +for boxes, for counters, for skips, and for dimensions. Overall there are 256 +registers for each of these categories. For \LaTeX{} lengths, which are +defined with \Macro{newlength}, skip registers are used. Once all these +registers are in use, you can not define any more lengths. Both +\Class{scrlttr2} and \Package{scrletter} would normally use more than 20 of +these registers for the first page alone. \LaTeX{} itself already uses 40 of +these registers. The \hyperref[cha:typearea]{\Package{typearea}}% +\IndexPackage{typearea} package needs some of them too; thus, approximately a +quarter of these precious registers would already be in use. For this reason, +\KOMAScript{} stores letter-specific lengths in macros instead of lengths. The +drawback of this approach is that computations with macros are somewhat more +complicated than with real lengths. + +Note\textnote{Attention!} that even though these pseudo-lengths are internally +implemented as macros, the commands for pseudo-length management expect only +the names of the pseudo-lengths not the macros representing the +pseudo-lengths. The names of pseudo-lengths are written without the initial +backslash, like the names of \LaTeX{} counters and unlike macros or \LaTeX{} +lengths. + +Anyone who wants to argue that the recommended \LaTeX{} installation with +\eTeX{}, which is required for \KOMAScript{} anyway, no longer suffers from +the above-mentioned limitation would be right. However, that improvement came +too late for \Class{scrlttr2}. With \Package{scrletter}, the concept of +psuedo-lengths was adopted for reasons of compatibility. + +The pseudo-lengths defined and uses by \KOMAScript{} are listed in +\autoref{tab:scrlttr2-experts.pseudoLength}, which also provides cross +references to the detailed descriptions of each pseudo-lengths in the +following sub-sections. + +A schematic display of the most important distances of the letterhead page is +shown in \autoref{fig:scrlttr2-experts.pseudoLength} on +\autopageref{fig:scrlttr2-experts.pseudoLength}. In addition to the +pseudo-lengths for the configurable distances, some non-configurable lengths +are also shown in light gray. For the sake of clarity, however, some rarely +required pseudo-lengths have been omitted. +% +\begin{desclist} + \renewcommand{\abovecaptionskipcorrection}{-\normalbaselineskip}% + \desccaption{% + Pseudo-lengths provided by \Class{scrlttr2} and \Package{scrletter}% + \label{tab:scrlttr2-experts.pseudoLength}% + }{% + Pseudo-lengths provided by \Class{scrlttr2} and \Package{scrletter} + (\emph{continued})% + }% + \pentry{backaddrheight}{% + the height of the return address at the upper edge of the address field + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.backaddrheight})% + }% + \pentry{bfoldmarklength}{% + the length of the bottommost fold mark + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.bfoldmarkvpos})% + }% + \pentry{bfoldmarkvpos}{% + the vertical distance of the bottommost fold mark from the top edge of the + paper (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.bfoldmarkvpos})% + }% + \pentry{firstfoothpos}{% + the horizontal distance of the letterhead page footer from the left edge + of the paper; values greater than the width of the paper or less than the + negative value of the width of the paper activate special handling % + (\autoref{sec:scrlttr2-experts.firstFoot}, + \DescPageRef{scrlttr2-experts.plength.firstfoothpos})% + }% + \pentry{firstfootvpos}{% + the vertical distance of letterhead page footer from the top edge of the + paper (\autoref{sec:scrlttr2-experts.firstFoot}, + \DescPageRef{scrlttr2-experts.plength.firstfootvpos})% + }% + \pentry{firstfootwidth}{% + the width of the letterhead page footer + (\autoref{sec:scrlttr2-experts.firstFoot}, + \DescPageRef{scrlttr2-experts.plength.firstfootwidth})% + }% + \pentry{firstheadhpos}{% + the horizontal distance of the letterhead from the left edge of the paper; + values greater than the width of the paper or less than the negative value + of the width of the paper activate special handling + (\autoref{sec:scrlttr2-experts.firstHead}, + \DescPageRef{scrlttr2-experts.plength.firstheadhpos})% + }% + \pentry{firstheadvpos}{% + the vertical distance of the letterhead from the top edge of the paper + (\autoref{sec:scrlttr2-experts.firstHead}, + \DescPageRef{scrlttr2-experts.plength.firstheadvpos})% + }% + \pentry{firstheadwidth}{% + the width of the letterhead (\autoref{sec:scrlttr2-experts.firstHead}, + \DescPageRef{scrlttr2-experts.plength.firstheadwidth})% + }% + \pentry{foldmarkhpos}{% + the horizontal distance of the horizontal fold marks from the left edge of + the paper (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.foldmarkhpos})% + }% + \pentry{foldmarkvpos}{% + the vertical distance of the vertical fold marks from the top edge of the + paper (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.foldmarkvpos})% + }% + \pentry{fromrulethickness}{% + the thickness of an optional horizontal rule in the letterhead + (\autoref{sec:scrlttr2-experts.firstHead}, + \DescPageRef{scrlttr2-experts.plength.fromrulethickness})% + }% + \pentry{fromrulewidth}{% + the length of an optional horizontal rule in the letterhead + (\autoref{sec:scrlttr2-experts.firstHead}, + \DescPageRef{scrlttr2-experts.plength.fromrulewidth})% + }% + \pentry{lfoldmarkhpos}{% + the horizontal distance of the vertical fold mark from the left edge of + the paper (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.lfoldmarkhpos})% + }% + \pentry{lfoldmarklength}{% + the length of the vertical fold mark + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.lfoldmarklength})% + }% + \pentry{locheight}{% + the height of the field containing the additional sender information if + the value is not 0; if it is 0, \PLength{toaddrheight} is used instead + (\autoref{sec:scrlttr2-experts.locationField}, + \DescPageRef{scrlttr2-experts.plength.locheight})% + }% + \pentry{lochpos}{% + the horizontal distance of the field containing the additional sender + information; if the value is positive, the distance is measured from the + right paper edge; if negative, from the left paper edge; if 0, the + negative value of \PLength{toaddrhpos} is used instead + (\autoref{sec:scrlttr2-experts.locationField}, + \DescPageRef{scrlttr2-experts.plength.lochpos})% + }% + \pentry{locvpos}{% + the vertical distance of the field containing the additional sender + information from the top edge of the paper if the value is not 0; if it is + 0, \PLength{toaddrvpos} is used instead + (\autoref{sec:scrlttr2-experts.locationField}, + \DescPageRef{scrlttr2-experts.plength.locvpos})% + }% + \pentry{locwidth}{% + the width of the field containing the additional sender information; if it + is 0, the width is calculated automatically based on the + \DescRef{scrlttr2.option.locfield} option described in + \autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.locfield} % + (\autoref{sec:scrlttr2-experts.locationField}, + \DescPageRef{scrlttr2-experts.plength.locwidth})% + }% + \pentry{mfoldmarklength}{% + the length of the middle horizontal fold mark + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.mfoldmarklength})% + }% + \pentry{mfoldmarkvpos}{% + the vertical distance of the middle horizontal fold mark from the top edge + of the paper (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.mfoldmarkvpos})% + }% + \pentry{pfoldmarklength}{% + the length of the hole-punch mark + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.pfoldmarklength})% + }% + \pentry{PPdatamatrixvskip}{% + the vertical distance between the postpaid header and the data array with + \OptionValueRef{scrlttr2}{addrfield}{PP} + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.PPdatamatrixvskip})% + }% + \pentry{PPheadheight}{% + the height of the postpaid header + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.PPheadheight})% + }% + \pentry{PPheadwidth}{% + the width of the left postpaid field with + \OptionValueRef{scrlttr2}{addrfield}{PP} + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.PPheadwidth})% + }% + \pentry{refaftervskip}{% + vertical skip below reference-field line % + (\autoref{sec:scrlttr2-experts.refLine}, + \DescPageRef{scrlttr2-experts.plength.refaftervskip})% + }% + \pentry{refhpos}{% + the horizontal distance of reference-field line from the left + edge of the paper; if the value is 0, the reference-field line is centred + horizontally on the letterhead page + (\autoref{sec:scrlttr2-experts.refLine}, + \DescPageRef{scrlttr2-experts.plength.refhpos})% + }% + \pentry{refvpos}{% + the vertical distance of reference-field line from the top + edge of the paper (\autoref{sec:scrlttr2-experts.refLine}, + \DescPageRef{scrlttr2-experts.plength.refvpos})% + }% + \pentry{refwidth}{% + the width of the reference-field line + (\autoref{sec:scrlttr2-experts.refLine}, + \DescPageRef{scrlttr2-experts.plength.refwidth})% + }% + \pentry{sigbeforevskip}{% + the vertical skip between the closing and the signature + (\autoref{sec:scrlttr2-experts.closing}, + \DescPageRef{scrlttr2-experts.plength.sigbeforevskip})% + }% + \pentry{sigindent}{% + the indentation of the signature with respect to the text body + (\autoref{sec:scrlttr2-experts.closing}, + \DescPageRef{scrlttr2-experts.plength.sigindent})% + }% + \pentry{specialmailindent}{% + the left indentation of the delivery method within the address field + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.specialmailindent})% + }% + \pentry{specialmailrightindent}{% + the right indentation of the delivery method within the address field + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.specialmailrightindent})% + }% + \pentry{subjectaftervskip}{% + the vertical skip after the subject + (\autoref{sec:scrlttr2-experts.subject}, + \DescPageRef{scrlttr2-experts.plength.subjectaftervskip})% + }% + \pentry{subjectbeforevskip}{% + additional vertical skip before the subject + (\autoref{sec:scrlttr2-experts.subject}, + \DescPageRef{scrlttr2-experts.plength.subjectbeforevskip})% + }% + \pentry{subjectvpos}{% + the vertical distance of the subject from the top edge of the paper; if it + is 0, the position is calculated based on the + \DescRef{scrlttr2.option.subject} option + (\autoref{sec:scrlttr2-experts.subject}, + \DescPageRef{scrlttr2-experts.plength.subjectaftervskip})% + }% + \pentry{tfoldmarklength}{% + the length of the topmost horizontal fold mark + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.tfoldmarklength})% + }% + \pentry{tfoldmarkvpos}{% + the vertical distance of the topmost horizontal folding mark from the top + edge of the paper (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.tfoldmarkvpos})% + }% + \pentry{toaddrheight}{% + the height of the address field (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.toaddrheight})% + }% + \pentry{toaddrhpos}{% + the horizontal distance of the address field from left edge of the paper, + if the value is positive; if it is negative, the negative horizontal + distance of the address field from the right edge of the paper + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.toaddrhpos})% + }% + \pentry{toaddrindent}{% + the left and right indentation of the address within the address field + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.toaddrindent})% + }% + \pentry{toaddrvpos}{% + the vertical distance of the address field from the the top edge of the + paper (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.toaddrvpos})% + }% + \pentry{toaddrwidth}{% + the width of the address field % + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.toaddrwidth})% + }% +\end{desclist} + +\begin{figure} + \centering + \includegraphics{plenDIN} + \caption{Schematic of the pseudo-lengths for a letter} + \label{fig:scrlttr2-experts.pseudoLength} +\end{figure} + + +\begin{Declaration} + \Macro{newplength}\Parameter{name} +\end{Declaration} +This\ChangedAt{v3.26}{\Class{scrlttr2}\and \Package{scrletter}} command +defines a new pseudo-length. The new pseudo-length is uniquely identified by +its \PName{name}. Each name can therefore be assigned only once. If you +attempt to redefine an existing pseudo-length, the commands exits with an +error message. + +\BeginIndex{Cmd}{@newplength}% +Since the ordinary user does not normally need to define pseudo-lengths, this +command was not a user instruction until \KOMAScript~3.26. Before then, +\Macro{@newplength} existed with the same functionality. This instruction still +exists for package authors.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setplength}% + \OParameter{factor}\Parameter{pseudo-length}\Parameter{value}% + \Macro{addtoplength}% + \OParameter{factor}\Parameter{pseudo-length}\Parameter{value} +\end{Declaration} +Using \Macro{setplength}, you can assign the multiple of a +\PName{value} to a \PName{pseudo-length}. The \PName{factor} is given as an +optional argument (see also \DescRef{scrlttr2.cmd.setlengthtoplength}, +\autoref{sec:scrlttr2.pseudoLength}, +\DescPageRef{scrlttr2.cmd.setlengthtoplength}). + +With \Macro{addtoplength} you can add the multiple of a \PName{value} to a +\PName{pseudo-length}. Again, you can pass a \PName{factor} as an optional +argument. + +To assign or to add the multiple of one \PName{pseudo-length} to another +pseudo-length, use the \Macro{useplength} command (see +\autoref{sec:scrlttr2.pseudoLength}, \DescPageRef{scrlttr2.cmd.useplength}) +within the \PName{value}. To subtract the value of one \PName{pseudo-length} +from another \PName{pseudo-length}, you use should use at the same time a +minus sign or \PValue{-1} as the \PName{factor}. + +\BeginIndex{Cmd}{@setplength}% +\BeginIndex{Cmd}{@addtoplength}% +Since the ordinary user does not normally need to define pseudo-lengths, these +commands were not user instructions until \KOMAScript~3.26. Before then, +\Macro{@setplength} and \Macro{@addtoplength} existed with the +same functionality. These commands still exist for the use of package authors.% +\EndIndexGroup + +\begin{Declaration} + \Macro{setplengthtowidth} + \OParameter{factor}\Parameter{pseudo-length}\Parameter{content}% + \Macro{setplengthtoheight} + \OParameter{factor}\Parameter{pseudo-length}\Parameter{content}% + \Macro{setplengthtodepth} + \OParameter{factor}\Parameter{pseudo-length}\Parameter{content}% + \Macro{setplengthtototalheight} + \OParameter{factor}\Parameter{pseudo-length}\Parameter{content}% +\end{Declaration} +The\ChangedAt{v3.26}{\Class{scrlttr2}\and \Package{scrletter}} first three +commands essentially correspond with \Macro{settowidth}, +\Macro{settoheight}, and \Macro{settodepth} from the \LaTeX{} kernel, but set +\PName{pseudo-length}s instead of lengths. Like +\DescRef{\LabelBase.cmd.setplength}, these commands extend their \LaTeX{} +kernel equivalents with an optional \PName{factor}. They set a +\PName{pseudo-length} to the natural width, height or depth of the given +\PName{content}, multiplied by the optional \PName{factor}. The additional +command \Macro{setplengthtototalheight} sets the \PName{pseudo-length} to the +sum of the height and depth of \PName{content} multiplied by the optional +\PName{factor}.% +\EndIndexGroup + + +\subsection{Fold Marks} +\seclabel{foldmarks} +\BeginIndexGroup +\BeginIndex{}{fold marks}% +\index{marks>folding|see{fold marks}} + +Fold marks, or folding marks, are short horizontal lines at the left edge, and +short vertical lines at the upper edge of the paper. \KOMAScript{} currently +supports three configurable horizontal and one configurable vertical fold +marks. In addition, there is support for a hole-punch mark, or centre mark, +which cannot be shifted vertically. + +\begin{Declaration} + \PLength{tfoldmarkvpos}% + \PLength{mfoldmarkvpos}% + \PLength{bfoldmarkvpos} +\end{Declaration} +\KOMAScript{} recognises a total of three fold marks whose vertical position +can be configured. The distance of the top fold mark from the upper edge of +the paper is determined by the \PLength{tfoldmarkvpos} pseudo-length; the +distance of the middle fold mark, by the +\PLength{mfoldmarkvpos}\ChangedAt{v2.97e}{\Class{scrlttr2}} pseudo-length; the +distance of the bottommost fold mark, by \PLength{bfoldmarkvpos} +pseudo-length. With the addition of the hole-punch\Index{hole-punch mark} or +centre\Index{centre mark|see{hole-punch mark}} mark, there is yet a fourth +horizontal mark. This one is however always placed at the vertical centre of +the paper. +\iftrue% Umbruchkorrekturtext +There is no pseudo-length for this last mark because its vertical position is +not configurable. +\fi + +The\textnote{Attention!} top and bottom fold marks do not serve to divide the +paper exactly into equal thirds. Instead, the paper should be folded with +their help such that the address field can be seen in a window envelope. The +settings are therefore different depending on the \File{lco} file chosen. +Several such files are available offering predefined formats. One format +particularly worth noting is \Option{DINmtext}. This format assumes an +envelope format of C6/5 (also known as ``C6 long''). Letters written with this +option are typically not suited for C5 or C4 envelopes. + +The middle fold mark is not normally required for Western letters. In Japan, +however, a larger number of envelope formats exists, requiring one more fold +mark (see the Japanese \File{lco} files). Note that the terms ``top'', +``middle'', and ``bottom'' fold marks only represent a naming convention. In +fact, it is not required that \PLength{tfoldmarkvpos} must be smaller than +\PLength{mfoldmarkvpos}, which in turn must be smaller than +\PLength{bfoldmarkvpos}. If, though, one of the pseudo-lengths is zero, then +the corresponding fold mark will not be set even if the +\DescRef{scrlttr2.option.foldmarks}\IndexOption{foldmarks~=\PName{setting}}% +\important{\DescRef{scrlttr2.option.foldmarks}} option (see +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.foldmarks}) is +explicitly activated. +% +\EndIndexGroup + + +\begin{Declaration} + \PLength{tfoldmarklength}% + \PLength{mfoldmarklength}% + \PLength{bfoldmarklength}% + \PLength{pfoldmarklength} +\end{Declaration} +These\ChangedAt{v2.97e}{\Class{scrlttr2}} four pseudo-lengths determine the +lengths of the four horizontal fold marks. One\textnote{Attention!} feature is +particularly worth noting. If the length is given as zero, then the three +vertically configurable pseudo-lengths \PLength{tfoldmarklength}, +\PLength{mfoldmarklength} and \PLength{bfoldmarklength} are set to 2\Unit{mm}. +The length of the hole-punch mark, \PLength{pfoldmarklength}, however, is set +to 4\Unit{mm}.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{foldmarkhpos} +\end{Declaration} +This pseudo-length gives the distance of all horizontal fold marks from the +left edge of the paper. Normally, this is 3.5\Unit{mm}. You\textnote{Hint!} +can change this value in your own \File{lco} file if you are using a printer +that has a wider unprintable left margin. Whether the fold marks are typeset +at all depends on the option \DescRef{scrlttr2.option.foldmarks}% +\important{\DescRef{scrlttr2.option.foldmarks}}% +\IndexOption{foldmarks~=\PName{setting}} (see +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.foldmarks}). +% +\EndIndexGroup + + +\begin{Declaration} + \PLength{lfoldmarkhpos} +\end{Declaration} +In\ChangedAt{v2.97e}{\Class{scrlttr2}} addition to the horizontal fold marks, +there is also a vertical fold mark. Its distance from the left margin is set +via the \PLength{lfoldmarkhpos} pseudo-length. This fold mark is used, for +example, in Japanese Chou- or You-format envelopes if you want to use them +with A4 paper. It can also be useful for envelopes in C6 format.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{lfoldmarklength} +\end{Declaration} +The\ChangedAt{v2.97e}{\Class{scrlttr2}} \PLength{lfoldmarklength} +pseudo-length determines the length of the vertical fold mark. Once again, a +feature worth noting is that if the length is given as zero, a length of +4\Unit{mm} is actually used.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{foldmarkvpos} +\end{Declaration} +This\ChangedAt{v2.97e}{\Class{scrlttr2}} pseudo-length determines the distance of +all vertical fold marks from the upper edge of the paper. Normally this is +3.5\Unit{mm}, but\textnote{Hint!} you can change the value in your own +\File{lco} file in case your printer has a wider unprintable +top margin. Whether or not the foldmarks are actually typeset depends on the +\DescRef{scrlttr2.option.foldmarks}% +\important{\DescRef{scrlttr2.option.foldmarks}}% +\IndexOption{foldmarks~=\PName{setting}} option (see +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.foldmarks}). +\iffree{At present there is only one vertical fold mark, called the left + vertical fold mark.}{}% +\EndIndexGroup + + +\begin{Declaration} + \PLength{foldmarkthickness} +\end{Declaration} +This\ChangedAt{v2.97c}{\Class{scrlttr2}} pseudo-length determines the +thickness of all fold marks. The default is 0.2\Unit{pt}, in other words a +very thin hairline. In\textnote{Hint!} particular, if the colour of the fold +marks is changed, this may not be enough.% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Letterhead} +\seclabel{firstHead} +\BeginIndexGroup +\BeginIndex{}{letterhead}% + +The term letterhead refers here to all of the information concerning the +sender that appears above the recipient's address. Normally you would expect +that this information would be set through the page-style settings. In fact, +this was the case with the old letter class, \Class{scrlettr}. +But\textnote{Attention!} \Class{scrlttr2} and \Package{scrletter} output the +letterhead independently of the page style by means of the +\DescRef{scrlttr2.cmd.opening}\IndexCmd{opening} command. +% Fuellmaterial +\iftrue% + The letterhead is positioned absolutely, so that it is independent of the + type area. In fact, the first page of a letter, the page that holds the + letterhead, is set using the page style + \DescRef{scrlttr2.pagestyle.empty}\IndexPagestyle{empty}.% +\fi +% Ende des Fuellmaterials + + +\begin{Declaration} + \PLength{firstheadvpos} +\end{Declaration} +The \PLength{firstheadvpos} pseudo-length gives the distance between the top +edge of the paper and the start of the letterhead. This value is set +differently in the various predefined +\File{lco} files\textnote{\File{lco} file}\Index{lco file=\File{lco} file}. A +typical value is 8\Unit{mm}.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{firstheadhpos} +\end{Declaration} +A positive value of the +\PLength{firstheadhpos}\ChangedAt{v3.05}{\Class{scrlttr2}} pseudo-length gives +the distance between the left edge of the paper and the start of the +letterhead. If\textnote{Attention!} the value is actually greater than or +equal to the paper width, +\Length{paperwidth}\important{\Length{paperwidth}}\IndexLength{paperwidth}, +the letterhead will be centred horizontally on the letterhead paper. A +negative value gives the distance between the right edge of the paper and the +right edge of the letterhead. If the value actually less than or equal to the +negative value of the width of the paper, the letterhead is placed flush with +the left edge of the type area. + +The default\textnote{Attention!} value is typically +\Length{maxdimen}\IndexLength{maxdimen}, which is the maximum allowed value of +a length. This results in horizontal centring.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{firstheadwidth} +\end{Declaration} +The \PLength{firstheadwidth} pseudo-length gives the width of the letterhead. +This value is set differently in the various predefined \File{lco} +files\textnote{\File{lco} file}\Index{lco file=\File{lco} file}. While this +value usually depends on the paper width and the distance between the left +edge of the paper and the recipient's address field, it was the width of the +type area in \Option{KOMAold} and has a fixed value of 170\Unit{mm} in +\Option{NF}.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{fromrulethickness}% + \PLength{fromrulewidth} +\end{Declaration} +As mentioned in the explanation of the +\DescRef{scrlttr2.option.fromrule}\IndexOption{fromrule} option in +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.fromrule}, you +can put a horizontal rule within or below the sender's address in the +predefined letterheads. If\textnote{Attention!} the \PLength{fromrulewidth} +pseudo-length has a value of 0\Unit{pt}, which is the default in the +predefined \File{lco} files, the length of this rule is calculated +automatically taking into account, for example, letterhead width or an +optional logo. You can adjust rule length manually in your own \File{lco} +files by setting this pseudo-length to positive values using +\Macro{setplength} (see \DescPageRef{scrlttr2-experts.cmd.setplength}). The +default thickness of the line\ChangedAt{v2.97c}{\Class{scrlttr2}}, +\PLength{fromrulethickness}, is 0.4\Unit{pt}.% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Addressee} +\seclabel{addressee}% +\BeginIndexGroup +\BeginIndex{}{addressee} +\index{recipient|seealso{addressee}} + +The term \emph{addressee} normally refers only to the recipient's name and +address, which are output in an address field. Additional information, +however, can be placed within this address field, including the delivery +method, for example registered mail or special delivery. For window envelopes, +the return address also counts as part of the address field, as it will be +displayed in the address window. The address field directly follows the +letterhead. + +\begin{Declaration} + \PLength{toaddrvpos}% + \PLength{toaddrhpos} +\end{Declaration} +These pseudo-lengths define the vertical and horizontal distance of the +address field from the top-left corner of the paper. Values are set +differently in the various predefined \File{lco} files\textnote{\File{lco} +file}\Index{lco file=\File{lco} file}, according to standard envelope window +measures. For \PLength{toaddrhpos}, one property worth noting is that with +negative values, the offset is the distance from the right edge of the address +field to the right edge of the paper. You will find this, for instance, in +\Option{SN} or \Option{NF}. The smallest value of \PLength{toaddrvpos} is +found with \Option{DINmtext}. With this setting, the letterhead can easily +protrude into the address window. Whether the address field is output or not +depends on the \Option{addrfield} option (see +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.addrfield}).% +\EndIndexGroup + + +\begin{Declaration} + \PLength{toaddrheight} +\end{Declaration} +This pseudo-length defines the height of the address field, including the +delivery method. Whether the name and address of the recipient are vertically +centred in the address field, taking into account the presence or absence of +the delivery method, depends on the \DescRef{scrlttr2.option.addrfield} +option.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{toaddrwidth} +\end{Declaration} +This pseudo-length defines the width of the address field. The various +predefined \File{lco} files\textnote{\File{lco} files}\Index{lco +file=\File{lco} files} use different settings according to the different +standards for window envelopes. Typical values are between 70\Unit{mm} and +100\Unit{mm}. +\begin{Example} + Suppose your printer has very wide, non-printable left and right margins of 15\Unit{mm}. + This means that the letterhead, the additional sender information, and the address field cannot + be completely printed if you use the \Option{SN} option. You therefore + create a new \File{lco} file with the following content: +\begin{lstcode} + \ProvidesFile{SNmmarg.lco} + [2002/06/04 v0.1 my lco] + \LoadLetterOption{SN} + \addtoplength{toaddrwidth}{% + -\useplength{toaddrhpos}} + \setplength{toaddrhpos}{-15mm} + \addtoplength{toaddrwidth}{% + \useplength{toaddrhpos}} + \endinput +\end{lstcode} + Then, until you can obtain a printer with smaller page margins, you + simply use the option \Option{SNmmarg} instead of \Option{SN}.% +\end{Example}% +% +\EndIndexGroup + + +\begin{Declaration} + \PLength{toaddrindent} +\end{Declaration} +Sometimes you do not want the address field to extend the full width of the +address window but to be indented a bit. You can set the amount of this +indentation with the \PLength{toaddrindent} pseudo-length. Typically, the +default value is 0\Unit{pt}. + +For\textnote{Attention!} the\ChangedAt{v3.03}{\Class{scrlttr2}} +\OptionValueRef{scrlttr2}{addrfield}{PP}\important{% + \OptionValueRef{scrlttr2}{addrfield}{PP}\\ + \OptionValueRef{scrlttr2}{addrfield}{image}\\ + \OptionValueRef{scrlttr2}{addrfield}{backgroundimage} +}\IndexOption{addrfield~=\textKValue{PP}}, +\OptionValueRef{scrlttr2}{addrfield}{image}% +\IndexOption{addrfield~=\textKValue{image}}, and +\OptionValueRef{scrlttr2}{addrfield}{backgroundimage}% +\IndexOption{addrfield~=\textKValue{backgroundimage}} settings (see +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.addrfield}) a +value of 0\Unit{pt} will be replaced by a value of 8\Unit{mm}. If you really +do not want any indentation, you can use a value of 1\Unit{sp} to set a +negligibly small indentation. Furthermore, \PLength{toaddrindent} is also used +for the distance to the right edge of the address window with the these +\Option{addrfield} settings.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{backaddrheight} +\end{Declaration} +For window envelopes, the sender is often printed in a small font on one line +above the addressee. This sender information is called the return +address\textnote{return address}\Index{return address}, because it is visible +in the address window and will be used by the post office to return an +undeliverable letter to the sender. This return address, therefore, requires +only the information necessary for that purpose. + +The height reserved for the return address within the address window is given +by the \PLength{backaddrheight} pseudo-length. This value is typically +5\Unit{mm} in the predefined \File{lco} files\textnote{\File{lco} +file}\Index{}{lco file=\File{lco} file}. Whether to print the return address +at all depends on the \Option{addrfield} (see +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.addrfield}) and +\DescRef{scrlttr2.option.backaddress} options (see +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.backaddress}).% +\EndIndexGroup + + +\begin{Declaration} + \PLength{specialmailindent}% + \PLength{specialmailrightindent} +\end{Declaration} +You can print an optional delivery method between the return address and the +recipient's address. This field is printed only if the +\DescRef{scrlttr2.variable.specialmail} variable has non-empty contents. Its +alignment is determined by the \PLength{specialmailindent} and +\PLength{specialmailrightindent} pseudo-lengths, which specify the left and +right indentation, respectively. In the predefined \File{lco} +files\textnote{\File{lco} file}\Index{lco file=\File{lco} file}, +\PLength{specialmailindent} is set to rubber length \Macro{fill}, while +\PLength{specialmailrightindent} is set to 1\Unit{em}. Thus the delivery +method is set 1\Unit{em} from the address field's right margin.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{PPheadheight}% + \PLength{PPheadwidth} +\end{Declaration} +The \PLength{PPheadheight}\ChangedAt{v3.03}{\Class{scrlttr2}} pseudo-length +specifies the height reserved for the postpaid header at the start of the +address field for the two options +\OptionValueRef{scrlttr2}{addrfield}{PP}\important{% + \OptionValueRef{scrlttr2}{addrfield}{PP}\\ + \OptionValueRef{scrlttr2}{addrfield}{backgroundimage}}% +\IndexOption{addrfield~=\textKValue{PP}} and +\OptionValueRef{scrlttr2}{addrfield}{backgroundimage}% +\IndexOption{addrfield~=\textKValue{backgroundimage}}. The +\PLength{PPheadwidth} pseudo-length is used only with +\OptionValueRef{scrlttr2}{addrfield}{PP} (see +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.addrfield}) and +gives the width of the left-hand field within the postpaid header, which +contains the postpaid logo, the postal code, and the location. The width of +the right-hand field containing the sender's code and the priority is the +remaining width. + +\KOMAScript{}\textnote{Attention!} automatically changes the default value of +0\Unit{mm} for the \PLength{PPheadheight} pseudo-length to 20.74\Unit{pt}, and +\PLength{PPheadwidth}'s default from 0\Unit{mm} to 42\Unit{mm}.% +% +\EndIndexGroup + + +\begin{Declaration} + \PLength{PPdatamatrixvskip} +\end{Declaration} +This\ChangedAt{v3.03}{\Class{scrlttr2}} pseudo-length specifies the vertical +distance between the postpaid header and the data array used with +\OptionValueRef{scrlttr2}{addrfield}{PP}% +\important{\OptionValueRef{scrlttr2}{addrfield}{PP}}% +\IndexOption{addrfield~=\PValue{PP}} (see \autoref{sec:scrlttr2.firstpage}, +\DescPageRef{scrlttr2.option.addrfield}). \KOMAScript{}\textnote{Attention!} +automatically changes the default value of 0\Unit{mm} to 9\Unit{mm}. The data +matrix is flush right within the postpaid header.% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Extra Sender Information} +\seclabel{locationField} +\BeginIndexGroup +\BeginIndex{}{extra sender information} +\index{sender>extra information|see{extra sender information}} + +Often, especially with business letters, there is not enough space in the +letterhead and footer to accommodate all the information about the sender that +you want to include. For such additional information, you can use the space +next to the addressee. In this manual, this field is called the +\emph{extra sender information}. In earlier versions of this manual, it +was called the \emph{sender's extension} or the \emph{location field}. + +\begin{Declaration} + \PLength{locheight}% + \PLength{lochpos}% + \PLength{locvpos}% + \PLength{locwidth} +\end{Declaration} +The \PLength{locwidth} and +\PLength{locheight}\ChangedAt{v2.97d}{\Class{scrlttr2}} pseudo-lengths set the +width and height of the extra-sender-information field. The \PLength{lochpos} +and \PLength{locvpos} pseudo-lengths determine the distances from the +top-right edge of the paper. These values are typically set to 0\Unit{pt} in +the predefined \File{lco} files. These\textnote{Attention!} zero-length values +have a special meaning. They result in the actual values being set within +\DescRef{scrlttr2.cmd.opening} based on the paper width, the address-window +width, the address window's distance from the top-left edge of the paper, and +the \DescRef{scrlttr2.option.locfield} option (see +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.locfield}). As +is the case for \PLength{toaddrhpos}, negative values of \PLength{lochpos} +also take on a special meaning. Instead of referring to the distance from the +right edge of the paper, \PLength{lochpos} then refers to the distance from +the left edge of the paper. The meaning is thus the opposite of that of +\PLength{toaddrhpos} (see \autoref{sec:scrlttr2-experts.addressee}, +\DescPageRef{scrlttr2-experts.plength.toaddrhpos}).% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Reference Line} +\seclabel{refLine}% +\BeginIndexGroup +\BeginIndex{}{reference line} +\index{business line|see{reference line}} + +The reference line can actually be longer than just one line. It is printed +only if at least one of variables for the reference line is not empty. Only +non-empty fields will be printed. To\textnote{Hint!} set a seemingly empty +field, you can provide content for the variable that appears empty, such as +\Macro{mbox}\Parameter{}. If the reference line is omitted, the description +and contents of the \DescRef{scrlttr2.variable.date} variable are printed in +its place. You can find information about adding variables to or removing them +from the reference line in \autoref{sec:scrlttr2-experts.variables}, +\DescPageRef{scrlttr2-experts.cmd.removereffields}. + + +\begin{Declaration} + \PLength{refvpos} +\end{Declaration} +This pseudo-length specifies the distance from the upper edge of the paper to +the reference line. Its value is set differently in the various predefined +\File{lco} files\textnote{\File{lco} file}\Index{lco file=\File{lco} file}. +Typical values are between 80.5\Unit{mm} and 98.5\Unit{mm}.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{refwidth}% + \PLength{refhpos} +\end{Declaration} +The \PLength{refwidth} pseudo-length specifies the width available for the +reference line. Its value is typically set to 0\Unit{pt} in the predefined +\File{lco} files\textnote{\File{lco} file}\Index{lco file=\File{lco} file}. +This\textnote{Attention!} value has a special meaning. In no way does it +indicate that there is no available width for the reference line. Instead, it +indicates that the width will be calculated within the +\DescRef{scrlttr2.cmd.opening}\IndexCmd{opening} command. This calculated +width then depends on the value of the \DescRef{scrlttr2.option.refline}% +\important{\DescRef{scrlttr2.option.refline}}% +\IndexOption{refline~=\PName{setting}} options (see +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.refline}). At +the same time, \PLength{refhpos} will also be set according to this option. +With \OptionValueRef{scrlttr2}{refline}{wide}% +\IndexOption{refline~=\textKValue{wide}}, the reference fields line is +centred, while with \OptionValueRef{scrlttr2}{refline}{narrow}% +\IndexOption{refline~=\textKValue{narrow}} it is aligned flush left with the +type area. + +If \PLength{refwidth} is not zero, the width of the reference line is not +determined by the \DescRef{scrlttr2.option.refline} option, and so +\PLength{refhpos} specifies the distance of the reference line from the left +edge of the paper. If\textnote{Attention!} this distance is zero, the the +reference line is placed so that the ratio between its distances from the left +and right edges of the paper corresponds to the ratio of distance of the type +area from the left and right edges of the paper. Thus, for a type area +horizontally centred on the paper, the reference line will also be centred. + +As a rule, these special cases are likely of little interest to the normal +user. The\textnote{Attention!} simplest rule is as follows: either +\PLength{refhpos} remains zero, and so the width and alignment of the +reference line are determined with the \DescRef{scrlttr2.option.refline} +option, or the user sets both \PLength{refwidth} and \PLength{refhpos}.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{refaftervskip} +\end{Declaration} +This pseudo-length specifies the vertical skip to be inserted beneath the +reference line. The value is set in the predefined \File{lco} +files\textnote{\File{lco} file}\Index{lco file=\File{lco} file}. It directly +affects the height of the text area on the first page. A typical value is +between one and two lines.% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Subject} +\seclabel{subject}% +\BeginIndexGroup +\BeginIndex{}{subject} + +Different countries have different conventions for placing the subject line of +a letter. Some place it before the opening phrase; others place it after. Some +professional groups even want it before the reference line. + +\begin{Declaration} + \PLength{subjectvpos} +\end{Declaration} +\ChangedAt{v3.01}{\Class{scrlttr2}}% +If\textnote{Attention!} the value of this pseudo-length is 0\Unit{pt}, the +\DescRef{scrlttr2.option.subject}\important{\DescRef{scrlttr2.option.subject}}% +\IndexOption{subject~=\PName{Einstellung}} option (see +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.subject}) +determines the position of the subject. Any other value defines the distance +between the top edge of the paper and the subject. In this +case\textnote{Hint!}, you should ensure that there is enough space available +that overlapping with other elements is unlikely. +\begin{Example} + A few professionals prefer to have the subject above the reference line. For + this, you can specify the position as follows, which also changes the + position of the reference line itself: +\begin{lstcode} + \ProvidesFile{lawsubj.lco} + [2008/11/03 lawyers lco file] + \setplength{subjectvpos}{\useplength{refvpos}} + \addtoplength{refvpos}{3\baselineskip} + \endinput +\end{lstcode} + If you want to leave at least one empty line between the subject and the + reference, you have space for a maximum of two lines. +\end{Example} +\EndIndexGroup + + +\begin{Declaration} + \PLength{subjectbeforevskip}% + \PLength{subjectaftervskip} +\end{Declaration} +\ChangedAt{v3.01}{\Class{scrlttr2}}% +If the subject is placed not absolutely but before or after the salutation, +you can insert additional vertical space before and after the subject. The +space before the subject may interfere with other distances, such as the +automatic distance of one line after the title. Therefore the default is to +use no additional space here. The default of the class and the package for the +space after the subject is two lines.% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Closing} +\seclabel{closing} +\BeginIndexGroup +\BeginIndex{}{closing} + +The closing of a letter consists of three parts: In addition to the closing +phrase, there is a hand-written signature and a printed text such as a name, +which acts as a kind of explanation of the hand-written signature. + +\begin{Declaration} + \PLength{sigindent}% + \PLength{sigbeforevskip} +\end{Declaration} +The closing phrase\Index{closing>phrase}\Index{signature} and signature +explanation are typeset in a box whose width is determined by the length of +the longest line of the closing phrase or explanation. + +The box will be indented by the distance specified in the \PLength{sigindent} +pseudo-length. In the predefined \File{lco} files\textnote{\File{lco} +file}\Index{lco file=\File{lco} file}, this length is set to 0\Unit{mm}. + +Between the closing phrase and the signature explanation, a vertical skip is +inserted whose height is defined in the \PLength{sigbeforevskip} +pseudo-length. In the predefined \File{lco} files\textnote{\File{lco} +file}\Index{lco file=\File{lco} file} this value is set to two lines. In this +space you can then write your signature.% +\iffalse% Umbruchkorrekturtext +\ If you decide to include a facsimile of your signature in the +\DescRef{scrlttr2.variable.signature}\IndexVariable{signature}% +\important{\DescRef{scrlttr2.variable.signature}} with the +\Package{graphicx}\IndexPackage{graphicx} package, it would be useful +to reduce the value of \PLength{sigbeforevskip} and thus the gap between +the closing phrase and the signature.% +\fi% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Letterhead Page Footer} +\seclabel{firstFoot}% +\BeginIndexGroup +\BeginIndex{}{letterhead page>footer}% + +The first page of a letter, the letterhead page, contains not just its own +header, the letterhead, but also its own footer\Index{footer>letterhead +page}\Index{footer}. Just like the letterhead, it will be set not by the page +style but directly within \DescRef{scrlttr2.cmd.opening}\IndexCmd{opening}% +\important{\DescRef{scrlttr2.cmd.opening}}. + +\begin{Declaration} + \PLength{firstfootvpos} +\end{Declaration} +This pseudo-length gives the distance from the top of the paper to the footer +of the letterhead page. It also ensures that the text area does not protrude +into the footer. To do so, the height of the text area on the first page will +be decreased, if necessary, using +\Macro{enlargethispage}\IndexCmd{enlargethispage}% +\important{\Macro{enlargethispage}}. The +\DescRef{scrlttr2.option.enlargefirstpage}% +\important{\DescRef{scrlttr2.option.enlargefirstpage}} option (see +\autoref{sec:scrlttr2.firstpage}, +\DescPageRef{scrlttr2.option.enlargefirstpage}) can also ensure that the +height of the text area is increased, if necessary. Thus, the distance between +text area and the letterhead page footer can be reduced to the value of the +\Length{footskip}\IndexLength{footskip}\important{\Length{footskip}} length. + +With\textnote{Attention!} the compatibility option +set\ChangedAt{v2.9t}{\Class{scrlttr2}} to versions up to +2.9t\IndexOption{version~=\PValue{2.9t}} (see +\DescRef{scrlttr2.option.version} in +\autoref{sec:scrlttr2.compatibilityOptions}, +\DescPageRef{scrlttr2.option.version}) the footer is set independently of the +type area in all predefined \File{lco} files\textnote{\File{lco} +file}\Index{lco file=\File{lco} file} (see \autoref{sec:scrlttr2.lcoFile}) +except for \Option{KOMAold} and \Option{NF}. Thus the +\DescRef{scrlttr2.option.enlargefirstpage}% +\important{\DescRef{scrlttr2.option.enlargefirstpage}} option has no effect. +From version 2.9u on, the footer is placed at the bottom edge of the paper. +Thus, the height of the letterhead page's type area may also depend on the +\DescRef{scrlttr2.option.enlargefirstpage} option. + +If the letter footer is deactivated with the +\OptionValueRef{scrlttr2}{firstfoot}{false}% +\important{\OptionValueRef{scrlttr2}{firstfoot}{false}}% +\IndexOption{firstfoot~=\PValue{false}}\ChangedAt{v2.97e}{\Class{scrlttr2}} +option (see \autoref{sec:scrlttr2.firstpage}, +\DescPageRef{scrlttr2.option.firstfoot}), the setting of +\PLength{firstfootvpos} is ignored, and instead +\Length{paperheight}\IndexLength{paperheight} is applied. There remains then a +minimum bottom margin of length \Length{footskip}\IndexLength{footskip}.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{firstfoothpos} +\end{Declaration} +\ChangedAt{v3.05}{\Class{scrlttr2}}% +A\textnote{Attention!} positive value of the \PLength{firstfoothpos} +pseudo-length specifies the distance from the left edge of the paper to the +letterhead page footer. If the value is greater than or equal to the paper +width, \Length{paperwidth}\IndexLength{paperwidth}, the footer is centred +horizontally on the letterhead page. But if the value is less than or equal to +the negative width of the paper, the footer is placed flush with the left edge +of the typing area. + +The typical default for this value is \Length{maxdimen}\IndexLength{maxdimen}, +which is the maximum possible value for a length. This results in horizontal +centring.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{firstfootwidth} +\end{Declaration} +This pseudo-length specifies the width of the footer of the first page of the +letter, that is the letterhead page. The value in the predefined \File{lco} +files\textnote{\File{lco} file}\Index{lco file=\File{lco} file} matches +\PLength{firstheadwidth}\important{\PLength{firstheadwidth}}% +\IndexPLength{firstheadwidth}.% +% +\EndIndexGroup +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Variables for Experienced Users} +\seclabel{variables} +\BeginIndexGroup +\BeginIndex{}{variables} + +\KOMAScript{} provides commands not only to use predefined variables but also +to define new variables or to change their automatic use within the reference +line\Index{reference line}. + +\begin{Declaration} + \Macro{newkomavar}\OParameter{description}\Parameter{name}% + \Macro{newkomavar*}\OParameter{description}\Parameter{name}% + \Macro{removereffields}% + \Macro{defaultreffields}% + \Macro{addtoreffields}\Parameter{name} +\end{Declaration} +\Macro{newkomavar} defines a new variable. This variable is referenced as +\PName{name}. Optionally, you can define a \PName{description} for the +\PName{name} variable. Unlike the \PName{name}, the \PName{description} is not +used to reference a variable. Instead, the \PName{description} acts as a +supplement to the content of a variable that can be printed as a label along +with its content. + +You can use the \Macro{addtoreffields} command to add the \PName{name} +variable to the reference line\Index{reference line} (see +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.refline}). The +\PName{description} and the content of the variable are added to the end of +the reference line. The starred version \Macro{newkomavar*} is similar to the +unstarred version but also calls the \Macro{addtoreffields} command. Thus, the +starred version automatically adds the variable to the reference line. +\begin{Example} + Suppose you need an additional field for a telephone extension in the + reference line. You can define this field with +\begin{lstcode} + \newkomavar[Extension]{myphone} + \addtoreffields{myphone} +\end{lstcode} + or more concisely with +\begin{lstcode} + \newkomavar*[Extension]{myphone} +\end{lstcode} +\end{Example} +When\textnote{Attention!} you define a variable for the reference line, you +should always give it a description. + +You can use the \Macro{removereffields} command to remove all variables from +the reference field. This includes the predefined variables of the class. The +reference line is then empty. This can be useful, for example, if you wish to +change the order of the variables in the reference fields line. + +The \Macro{defaultreffields} command resets the reference fields line to its +predefined format. In doing so, all custom-defined variables are removed from +the reference fields line. + +You\textnote{Attention!} should not add the date to the reference line with +the \Macro{addtoreffields} command. Instead you should use the +\DescRef{scrlttr2.option.refline}% +\important{\OptionValueRef{scrlttr2}{refline}{dateleft}\\ +\OptionValueRef{scrlttr2}{refline}{dateright}\\ +\OptionValueRef{scrlttr2}{refline}{nodate}}% +\IndexOption{refline~=\textKValue{dateleft}}% +\IndexOption{refline~=\textKValue{dateright}}% +\IndexOption{refline~=\textKValue{nodate}} option to select whether the date +should appear on the left or right side of the reference line, or not at all. +These settings also affect the position of the date when no reference line is +used.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{usekomavar}\OParameter{command}\Parameter{name}% + \Macro{usekomavar*}\OParameter{command}\Parameter{name} +\end{Declaration} +The \DescRef{scrlttr2.cmd.usekomavar} and \DescRef{scrlttr2.cmd.usekomavar*} +commands are, like all commands where a starred version exists or which can +take an optional argument, not fully expandable. Nevertheless, if you use them +within \DescRef{scrlttr2.cmd.markboth}\IndexCmd{markboth}, +\DescRef{scrlttr2.cmd.markright}\IndexCmd{markright} or similar commands, you +need not insert \Macro{protect}\IndexCmd{protect} beforehand. Of course +this is also true for +\DescRef{scrlayer-scrpage.cmd.markleft}\IndexCmd{markleft} if you use the +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage} package. These\textnote{Attention!} commands +cannot be used within commands that directly affect their argument, such as +\Macro{MakeUppercase}\important{\Macro{MakeUppercase}}% +\IndexCmd{MakeUppercase}. To avoid this problem you can use commands like +\Macro{MakeUppercase} as an optional argument to \Macro{usekomavar} or +\Macro{usekomavar*}. Then you will get the upper-case content of a variable +with +\begin{lstcode}[escapeinside=`'] + \usekomavar[\MakeUppercase]{`\PName{Name}'} +\end{lstcode} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifkomavarempty}\Parameter{name}\Parameter{true}\Parameter{false}% + \Macro{ifkomavarempty*}\Parameter{name}\Parameter{true}\Parameter{false} +\end{Declaration} +It is important to know that the content of the variable will be expanded as +far as this is possible with \Macro{edef}. If this results in spaces or +unexpandable macros like \Macro{relax}, the result will be not empty even +where the use of the variable would not result in any visible output. + +Once\textnote{Attention!} again, this command cannot be used as the argument +of \Macro{MakeUppercase}\IndexCmd{MakeUppercase} or similar commands However, +it is robust enough to be used as the argument of +\DescRef{scrlttr2.cmd.markboth} or \DescRef{scrlttr2.cmd.footnote}, for +example.% +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Additional Information about Page Styles} +\seclabel{pagestyleatscrletter} +\BeginIndexGroup +\BeginIndex{}{page>style} + +\LoadNonFree{scrlttr2-experts}{0}% +\EndIndexGroup + +\iffalse% Wurde bereits in Kapitel 4.21 behandelt +\section{Differences in How \Package{scrletter} Handles \File{lco} Files} +\seclabel{lcoatscrletter} +\BeginIndexGroup +\BeginIndex{File}{lco} +\BeginIndex{}{lco file=\File{lco} file} + +As\ChangedAt{v3.15}{\Package{scrletter}} explained in +\autoref{sec:scrlttr2.lcoFile}, \Class{scrlttr2} can load \File{lco} files via +the optional argument of \Macro{documentclass}. The \Package{scrletter} package +does not support this. + +\begin{Declaration} + \Macro{LoadLetterOption}\Parameter{name}% + \Macro{LoadLetterOptions}\Parameter{list of names} +\end{Declaration} +For \Class{scrlttr2}, load \File{lco} files with +\DescRef{scrlttr2.cmd.LoadLetterOption} or +\DescRef{scrlttr2.cmd.LoadLetterOptions} is only a recommendation. For +\Package{scrletter}, it is mandatory. Of course, you can only load the +\File{lco} files after you load \Package{scrletter}. +% +\EndIndexGroup +% +\EndIndexGroup +\fi + + +\section{\File{lco} Files for Experienced Users} +\seclabel{lcoFile} +\BeginIndexGroup +\BeginIndex{File}{lco} +\BeginIndex{}{lco file=\File{lco} file} + +\BeginIndexGroup% +\BeginIndex{}{paper>format}% +Although you can use any paper size that the +\hyperref[cha:typearea]{\Package{typearea}}% +\IndexPackage{typearea} package can configure, the output of the letterhead +page may produce undesirable results with some formats. Unfortunately, there +are no general rules to calculate the position of the address fields and the +like for every available paper size. Instead, different parameter sets are +needed for different paper sizes.% + +%\subsection{Verifying the Paper Size} +%\seclabel{papersize} + +At present parameter sets and \File{lco} files exist only for A4-sized and +letter-sized paper. Theoretically, however, the \Class{scrlttr2} class can +support many more paper sizes. Therefore, it's necessary to verify that the +correct paper size is used. This is even more true if you use +\Package{scrletter}, since the paper size depends on the class you use. + +\begin{Declaration} + \Macro{LetterOptionNeedsPapersize}% + \Parameter{option name}\Parameter{paper size} +\end{Declaration} +To provide at least a warning when another \PName{paper size} is used, you can +find a \Macro{LetterOptionNeedsPapersize} command in every \File{lco} file +distributed with {\KOMAScript}. The first argument is the name of the +\File{lco} file without the ``\File{.lco}'' suffix. The second argument is the +paper size for which the \File{lco} file is designed. + +If several \File{lco} files are loaded in succession, a +\Macro{LetterOptionNeedsPapersize} command can be contained in each of them, +but the \DescRef{scrlttr2.cmd.opening} command will only check the last given +\PName{paper size}. As the following example shows, an experienced user can +thus easily write \File{lco} files with parameter sets for other paper sizes. +\iffalse% Umbruchoptimierung +If you do not plan to set up such \File{lco} files yourself, you can just +forget about this option and skip the example.% +\fi +\begin{Example} + Suppose you use A5-sized paper in normal, that is upright or portrait, + orientation for your letters. Let's assume that you want to put them into + standard C6 window envelopes. In that case, the position of the address + field would be the same as for a standard letter on A4-sized paper. The main + difference is that A5 paper needs only one fold. So you want to disable the + top and bottom fold marks. You can do this, for example, by placing the + marks outside the paper area. +\begin{lstcode} + \ProvidesFile{a5.lco} + [2002/05/02 letter class option] + \LetterOptionNeedsPapersize{a5}{a5} + \setplength{tfoldmarkvpos}{\paperheight} + \setplength{bfoldmarkvpos}{\paperheight} +\end{lstcode} + Of course, it would be more elegant to deactivate the marks with the + \DescRef{scrlttr2.option.foldmarks} option. In addition, you must adjust the + position of the footer, that is, the \PLength{firstfootvpos} pseudo-length. + I leave it to the reader to find an appropriate value. When using such an + \File{lco} file, you must declare other \File{lco} file options like + \File{SN} before you load ``\File{a5.lco}''. +\end{Example} +% +\EndIndexGroup% +\EndIndexGroup% +\vskip-\ht\strutbox% Wegen Beispiel am Ende der Erklaerung + + +%\subsection{Visualizing Positions} +%\seclabel{visualize} +%\BeginIndexGroup +\begin{Declaration} + \File{visualize.lco} +\end{Declaration} +\BeginIndex{Option}{visualize}% +If you develop your own \File{lco} file, for example to modify the positions +of various fields on the letterhead page because your own desires or +requirements, it is helpful if you can make at least some elements directly +visible. The \File{lco} file +\File{visualize.lco}\ChangedAt{v3.04}{\Class{scrlttr2}} exists for this +purpose. You can load this file as you would any other \File{lco} file. But +this \emph{letter class options} file must be loaded in the document preamble, +and its effects cannot be deactivated. The \File{lco} file uses the +\Package{eso-pic}\IndexPackage{eso-pic}% +\important[i]{\Package{eso-pic}\\\Package{graphicx}} and +\Package{graphicx}\IndexPackage{graphicx} packages, which are not part of +\KOMAScript. + + +\begin{Declaration} + \Macro{showfields}\Parameter{field list} +\end{Declaration} +This command makes the space occupied by the fields on the letterhead page +visible. The \PName{field list} argument is a comma-separated list of fields +to be shown. The following fields are supported: +\begin{labeling}[~--]{\PValue{location}} +\item[\PValue{test}] is a 10\Unit{cm} by 15\Unit{cm} test field, 1\Unit{cm} + from the top and left edges of the paper. This field exists for debugging. + You can use it as a benchmark to check whether the measurements have been + distorted during the creation of the document. +\item[\PValue{head}] is the header area of the letterhead page. This field + is open at the bottom. +\item[\PValue{foot}] is the footer area of the letterhead page. This field is + open at the top. +\item[\PValue{address}] is the address window area used by window envelopes. +\item[\PValue{location}] is the field for the extra sender information. +\item[\PValue{refline}] is the reference line. This field is open at the + bottom. +\end{labeling}% +\BeginIndex{FontElement}{field}\LabelFontElement{field}% +You can change the colour of the visualisation with +the\DescRef{scrlttr2.cmd.setkomafont} and \DescRef{scrlttr2.cmd.addtokomafont} +(see \autoref{sec:scrlttr2.textmarkup}, +\DescPageRef{scrlttr2.cmd.setkomafont}) commands using the +\FontElement{field}\important{\FontElement{field}} element. The default is +\Macro{normalcolor}.% +\EndIndex{FontElement}{field}% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setshowstyle}\Parameter{style}% + \Macro{edgesize} +\end{Declaration} +By default, \File{visualize.lco} indicates the individual areas with +frames\important{\PValue{frame}}, which corresponds to the \PName{style} +\PValue{frame}. Areas open at top or bottom are not completely framed but have +an open edge with with small arrows pointing up or down. +Alternatively\important{\PValue{rule}}, you can use the \PName{style} +\PValue{rule}. In this case, the area is highlighted by a background colour. +It isnot possible to distinguish open and closed areas. Instead a minimal +height will be used for open areas. The third\important{\PValue{edges}} +available \PName{style} is \PValue{edges}, which shows the corners of the +areas. The corner marks at the open edge of open areas will be omitted. The +size of two edges of the corner marks are given by the \Macro{edgesize} macro +with a default of 1\Unit{ex}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{showenvelope}\AParameter{width\textup{,}height}% + \AParameter{h-offset\textup{,}v-offset}% + \OParameter{instructions}% + \Macro{showISOenvelope}\Parameter{format}\OParameter{instructions}% + \Macro{showUScommercial}\Parameter{format}\OParameter{instructions}% + \Macro{showUScheck}\OParameter{instructions}% + \Macro{unitfactor} +\end{Declaration} +If you have loaded \File{visualize.lco}, you can use these commands to output +a page with a drawing of an envelope. The envelope drawing is always rotated +by 90\textdegree{} on a separate page and printed in 1:1~scale. The addressee +window is generated automatically from the current data for the address +position of the letterhead page: \PLength{toaddrvpos}, \PLength{toaddrheight}, +\PLength{toaddrwidth}, and \PLength{toaddrhpos}. To do so requires knowing how +much smaller the folded letter pages are than the width and height of the +envelope. If you do not specify these two values, \PName{h-offset} and +\PName{v-offset}, when calling \Macro{showenvelope}, they are calculated from +the fold marks and the paper size itself. + +The \Macro{showISOenvelope}, \Macro{showUScommercial}, and \Macro{showUScheck} +commands are based on \Macro{showenvelope}. With \Macro{showISOenvelope}, you +can create ISO-envelopes in C4, C5, C5/6, DL (also known as C5/6) or C6 +\PName{format}. With \Macro{showUScommercial}, you can create a US commercial +envelope in the 9 or 10 \PName{format}. You can use \Macro{showUScheck} for +envelopes in US check format. + +\BeginIndex{FontElement}{letter}\LabelFontElement{letter}% +The position of the letterhead page inside the envelope is indicated with +dashed lines. You can change the colour of these lines with the +\DescRef{scrlttr2.cmd.setkomafont} and \DescRef{scrlttr2.cmd.addtokomafont} +(see \autoref{sec:scrlttr2.textmarkup}, +\DescPageRef{scrlttr2.cmd.setkomafont}) using the +\FontElement{letter}\important{\FontElement{letter}} element. The default is +\Macro{normalcolor}.% +\EndIndex{FontElement}{letter}% + +\BeginIndex{FontElement}{measure}\LabelFontElement{measure}% +The envelope drawing will be provided with dimensions automatically. You can +change the colour of these dimension labels with the commands +\DescRef{scrlttr2.cmd.setkomafont} and \DescRef{scrlttr2.cmd.addtokomafont} +(see \autoref{sec:scrlttr2.textmarkup}, +\DescPageRef{scrlttr2.cmd.setkomafont}) using the +\FontElement{measure}\important{\FontElement{measure}} element. The default is +\Macro{normalcolor}. The dimensions are given in multiples of +\Length{unitlength}, with an accuracy of $1/\Macro{unitfactor}$, where the +accuracy of \TeX{} arithmetic is the actual limits. The default is 1. You can +redefine \Macro{unitfactor} using \Macro{renewcommand}.% +\EndIndex{FontElement}{measure}% + +\begin{Example} + You are generating a sample letter using the ISO-A4 format. The supported + fields should be marked with yellow borders to check their position. + Furthermore, the position of the window for a DL-size envelope should be + checked with drawing. The dimension lines in this drawing should be red, and + the numbers should use a smaller font, with the dimensions printed in cm + with an accuracy of 1\Unit{mm}. The dashed letterhead page in the envelope + should be coloured green. +\begin{lstcode} + \documentclass[visualize]{scrlttr2} + \usepackage{xcolor} + \setkomafont{field}{\color{yellow}} + \setkomafont{measure}{\color{red}\small} + \setkomafont{letter}{\color{green}} + \showfields{head,address,location,refline,foot} + \usepackage[british]{babel} + \usepackage{lipsum} + \begin{document} + \setkomavar{fromname}{Joe Public} + \setkomavar{fromaddress}{2 Valley\\ + SAMPLEBY\\ + ZY32 1XW} + \begin{letter}{% + 1 Hillside\\ + SAMPLESTEAD\\ + WX12 3YZ% + } + \opening{Hello,} + \lipsum[1] + \closing{Good bye} + \end{letter} + \setlength{\unitlength}{1cm} + \renewcommand*{\unitfactor}{10} + \showISOenvelope{DL} + \end{document} +\end{lstcode} + This will show the letterhead page as the first page and the drawing of the + envelope on the second page. +\end{Example} + +Note that poorly chosen combinations of \Length{unitlength} and +\Macro{unitfactor} can quickly lead to a \TeX{} \emph{arithmetic overflow} +error. The dimension numbers shown may also differ slightly from the actual +values. Neither are errors in \Option{visualize} but merely implementation +limitations of \TeX. +% +\EndIndexGroup +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Language Support} +\seclabel{languages}% +\BeginIndexGroup +\BeginIndex{}{languages}% + +The \Class{scrlttr2} class and the \Package{scrletter} package support many +languages. These include German\Index{language>German} (\PValue{german} for +the old German orthography, \PValue{ngerman} for the new orthography; +\PValue{austrian} for Austrian with the old German orthography, +\PValue{naustrian}\ChangedAt{v3.09}{\Class{scrlttr2}} for Austrian with the +new orthography; and \PValue{nswissgerman}\ChangedAt{v3.13}{\Class{scrlttr2}} +for Swiss German with the new orthogrphy, \PValue{swissgerman} for Swiss +German with the old orthography), English\Index{language>English} (among +others, \PValue{english} without specification as to whether American or +British should be used, \PValue{american} and \PValue{USenglish} for American +English, and \PValue{british} and \PValue{UKenglish} for British English), +French\Index{language>French}, Italian\Index{language>Italian}, +Spanish\Index{language>Spanish}, Dutch\Index{language>Dutch}, +Croatian\Index{language>Croatian}, Finnish\Index{language>Finnish}, +Norwegian\Index{language>Norwegian}\ChangedAt{v3.02}{\Class{scrlttr2}}, +Swedish\Index{language>Swedish}\ChangedAt{v3.08}{\Class{scrlttr2}}, +Polish\ChangedAt{v3.13}{\Class{scrlttr2}}, +Czech\ChangedAt{v3.13}{\Class{scrlttr2}}, and Slovak. + +You can switch languages using the \Package{babel}\IndexPackage{babel} package +(see \cite{package:babel}) with the \Macro{selectlanguage}\Parameter{language} +command. Other packages like \Package{german}\IndexPackage{german} (see +\cite{package:german}) and \Package{ngerman}\IndexPackage{ngerman} (see +\cite{package:ngerman}) also define this command. As a rule though, the +language selection occurs immediately as a direct consequence of loading such +a package. +\iffalse% Umbruchkorrekturtext +For details, please refer to the documentation of the relevant packages. +\fi + +There\textnote{Attention!} is one more point to note about language-switching +packages. The +\Package{french}\IndexPackage{french}\important{\Package{french}} package (see +\cite{package:french}) makes changes well beyond redefining the terms in +\autoref{tab:scrlttr2-experts.languageTerms}. For instance, it redefines the +\DescRef{scrlttr2.cmd.opening} command, since the package simply assumes that +\DescRef{scrlttr2.cmd.opening} is always defined as it is in the standard +\Class{letter} class. This, however, is not the case with \KOMAScript{}. The +\Package{french} package thus overwrites the definition and does not work +correctly with \KOMAScript. I regard this as a fault in the \Package{french} +package which, although reported decades ago, was unfortunately never +eliminated. + +If you use the \Package{babel}\IndexPackage{babel} package to switch to +\PValue{french}, problems can occasionally occur. With \Package{babel}, +however, you can usually deactivate changes to a language in a targeted +manner.% +\iffalse% This is actually outdated! +\ If the package \Package{french} is not installed, the problem with + \Package{babel} does not arise. Similarly, the problem usually does not + exist when you use \Package{babel} with other varieties of French such as + \PValue{acadian}, \PValue{canadien}, \PValue{francais} or \PValue{frenchb} + instead of \PValue{french}. +\fi + +\iffalse% This is also outdated! + However, with \Package{babel} version 3.7j and above, this problem only occurs + if the option explicitly indicates that \Package{babel} should use the + \Package{french} package. +% +\iftrue + If you cannot be sure you are not using an old version of \Package{babel}, I + recommend you use +\begin{lstcode} + \usepackage[...,frenchb,...]{babel} +\end{lstcode} + to select French. + \iffalse % + If necessary, you can still switch to French with + \Macro{selectlanguage}\PParameter{french}.% + \fi% +\fi +\fi + +\iftrue + It cannot be ruled out that similar problems will not occur with other + languages or packages. For German and English, however, there are currently + no known problems with the \Package{babel} package. +\fi + + +\begin{Declaration} + \Macro{yourrefname}% + \Macro{yourmailname}% + \Macro{myrefname}% + \Macro{customername}% + \Macro{invoicename}% + \Macro{subjectname}% + \Macro{ccname}% + \Macro{enclname}% + \Macro{headtoname}% + \Macro{headfromname}% + \Macro{datename}% + \Macro{pagename}% + \Macro{mobilephonename}% + \Macro{phonename}% + \Macro{faxname}% + \Macro{emailname}% + \Macro{wwwname}% + \Macro{bankname} +\end{Declaration} +These commands contain the language-dependent terms. These\important[i]{% + \DescRef{scrbase.cmd.newcaptionname}\\ + \DescRef{scrbase.cmd.renewcaptionname}\\ + \DescRef{scrbase.cmd.providecaptionname}} definitions can be +modified to support a new language or for your private customization, as +described in +\autoref{sec:scrbase.languageSupport}. \KOMAScript{} sets these terms only in +\Macro{begin}\PParameter{document}. Therefore they are not available in the +preamble and cannot be redefined there. The default settings for +\Option{english} and \Option{ngerman} are listed in +\autoref{tab:scrlttr2-experts.languageTerms}.% +\EndIndexGroup +%\iffree{}{\clearpage}% Siehe Kommentar zur Tabelle + +\begin{Declaration} + \Macro{captionsacadian} + \Macro{captionsamerican} + \Macro{captionsaustralien} + \Macro{captionsaustrian} + \Macro{captionsbritish} + \Macro{captionscanadian} + \Macro{captionscanadien} + \Macro{captionscroatian} + \Macro{captionsczech} + \Macro{captionsdutch} + \Macro{captionsenglish} + \Macro{captionsfinnish} + \Macro{captionsfrancais} + \Macro{captionsfrench} + \Macro{captionsgerman} + \Macro{captionsitalian} + \Macro{captionsnaustrian} + \Macro{captionsnewzealand} + \Macro{captionsngerman} + \Macro{captionsnorsk} + \Macro{captionsnswissgerman} + \Macro{captionspolish} + \Macro{captionsslovak} + \Macro{captionsspanish} + \Macro{captionsswedish} + \Macro{captionsswissgerman} + \Macro{captionsUKenglish} + \Macro{captionsUSenglish} +\end{Declaration} +If you change the language of a letter, the language-dependent terms listed in +\autoref{tab:scrlttr2-experts.languageTerms}, +\autopageref{tab:scrlttr2-experts.languageTerms} are redefined using these +commands. If your language-switching package does not support this, you can +also use the above commands directly. +% +\begin{table} + \begin{minipage}{\textwidth} + \centering +% \KOMAoptions{captions=topbeside}% +% \setcapindent{0pt}% + \caption[{% + Defaults for language-dependent terms + }]{% + Defaults for language-dependent terms for the languages + \Option{english} and \Option{ngerman}, if they are not already defined + by the packages used for language switching% + \label{tab:scrlttr2-experts.languageTerms}% + }[l] + \begin{tabular}[t]{lll} + \toprule + Command & \Option{english} & \Option{ngerman} \\ + \midrule + \Macro{bankname} & Bank account & Bankverbindung \\ + \Macro{ccname}\footnotemark[1] & cc & Kopien an \\ + \Macro{customername} & Customer no. & Kundennummer \\ + \Macro{datename} & Date & Datum \\ + \Macro{emailname} & Email & E-Mail \\ + \Macro{enclname}\footnotemark[1] & encl & Anlagen \\ + \Macro{faxname} & Fax & Fax \\ + \Macro{headfromname} & From & Von \\ + \Macro{headtoname}\footnotemark[1] & To & An \\ + \Macro{invoicename} & Invoice no. & Rechnungsnummer \\ + \Macro{myrefname} & Our ref. & Unser Zeichen \\ + \Macro{pagename}\footnotemark[1] & Page & Seite \\ + \Macro{mobilephonename} & Mobile phone & Mobiltelefon \\ + \Macro{phonename} & Phone & Telefon \\ + \Macro{subjectname} & Subject & Betrifft \\ + \Macro{wwwname} & Url & URL \\ + \Macro{yourmailname} & Your letter of & Ihr Schreiben vom\\ + \Macro{yourrefname} & Your ref. & Ihr Zeichen \\ + \bottomrule + \end{tabular} + \deffootnote{1em}{1em}{1\ }% brutal aber effektiv + \footnotetext[1000]{Normally these terms are defined by language + packages like \Package{babel}. In this case, \KOMAScript{} does not + redefine them. The actual wording may therefore differ and can + be found in the documentation for the language package used.} +% \end{captionbeside} + \end{minipage} +\end{table} +% +\EndIndexGroup +\iffree{}{\clearpage}% Umbruchkorrektur + +\begin{Declaration} + \Macro{dateacadian} + \Macro{dateamerican} + \Macro{dateaustralien} + \Macro{dateaustrian} + \Macro{datebritish} + \Macro{datecanadian} + \Macro{datecanadien} + \Macro{datecroatian} + \Macro{dateczech} + \Macro{datedutch} + \Macro{dateenglish} + \Macro{datefinnish} + \Macro{datefrancais} + \Macro{datefrench} + \Macro{dategerman} + \Macro{dateitalian} + \Macro{datenaustrian} + \Macro{datenewzealand} + \Macro{datengerman} + \Macro{datenorsk} + \Macro{datenswissgerman} + \Macro{datepolish} + \Macro{dateslovak} + \Macro{datespanish} + \Macro{dateswedish} + \Macro{dateswissgerman} + \Macro{dateUKenglish} + \Macro{dateUSenglish} +\end{Declaration} +Depending on the language used, the numerical representation of the date\Index{date} (see option +\DescRef{scrlttr2.option.numericaldate} in \autoref{sec:scrlttr2.firstpage}, +\DescPageRef{scrlttr2.option.numericaldate}) is formatted in various ways. +The exact format can be found in \autoref{tab:date}.% +\EndIndexGroup +% +\EndIndexGroup +\iffree{}{\clearpage}% Umbruchkorrektur zwecks Ausgabe der Tabellen + +\begin{table}[!tp]% Umbruchoptimierung +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside}{Language-dependent forms of the date}[l] + \begin{tabular}[t]{ll} + \toprule + Command & Date Example \\ + \midrule + \Macro{dateacadian} & 24.\,12.\,1993\\ + \Macro{dateamerican} & 12/24/1993\\ + \Macro{dateaustralien}& 24/12/1993\\ + \Macro{dateaustrian} & 24.\,12.\,1993\\ + \Macro{datebritish} & 24/12/1993\\ + \Macro{datecanadian} & 1993/12/24\\ + \Macro{datecanadien} & 1993/12/24\\ + \Macro{datecroatian} & 24.\,12.\,1993.\\ + \Macro{dateczech} & 24.\,12.\,1993\\ + \Macro{datedutch} & 24.\,12.\,1993\\ + \Macro{dateenglish} & 24/12/1993\\ + \Macro{datefinnish } & 24.12.1993.\\ + \Macro{datefrancais} & 24.\,12.\,1993\\ + \Macro{datefrench} & 24.\,12.\,1993\\ + \Macro{dategerman} & 24.\,12.\,1993\\ + \Macro{dateitalian} & 24.\,12.\,1993\\ + \Macro{datenaustrian} & 24.\,12.\,1993\\ + \Macro{datenewzealand}& 24/12/1993\\ + \Macro{datengerman} & 24.\,12.\,1993\\ + \Macro{datenorsk} & 24.12.1993\\ + \Macro{datenswissgerman} & 24.\,12.\,1993\\ + \Macro{datepolish} & 24.\,12.\,1993\\ + \Macro{dateslovak} & 24.\,12.\,1993\\ + \Macro{datespanish} & 24.\,12.\,1993\\ + \Macro{dateswedish} & 24/12 1993\\ + \Macro{dateswissgerman} & 24.\,12.\,1993\\ + \Macro{dateUKenglish} & 24/12/1993\\ + \Macro{dateUSenglish} & 12/24/1993\\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:date} +\end{table} +% +\section{Obsolete Commands in \Class{scrlttr2}} +\seclabel{obsolete} +\BeginIndexGroup + +\LoadNonFree{scrlttr2-experts}{1} +\EndIndexGroup +% +\iffalse% Es wird Zeit das komplett rauszuwerfen! +\section{From Obsolete \Class{scrlettr} to Current \Class{scrlttr2}} +\seclabel{fromscrlettr} + +With\textnote{Attention!} the 2002 release of \Class{scrlttr2} (see +\autoref{cha:scrlttr2}), the old letter class, \Class{scrlettr}, became +obsolete, and it is no longer part of \KOMAScript. If you still need the class +or information about it, you will find it in +\cite{package:koma-script-obsolete}. + +To facilitate the transition to the new class, there is the compatibility +option \Option{KOMAold}. Basically, all the older functionality still +exists in the new class. Without \Option{KOMAold}, however, the user +interface and the defaults are different. More details on +this option are provided in \autoref{sec:scrlttr2.lcoFile}, +\autoref{tab:lcoFiles}. + +\LoadNonFree{scrlttr2-experts}{2} +% +\EndIndexGroup +\fi +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% ispell-local-dictionary: "english" +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrlttr2.tex b/macros/latex/contrib/koma-script/source-doc/english/scrlttr2.tex new file mode 100644 index 0000000000..e63f59c2ab --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrlttr2.tex @@ -0,0 +1,3463 @@ +% ====================================================================== +% scrlttr2.tex +% Copyright (c) Markus Kohm, 2002-2019 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlttr2.tex +% Copyright (c) Markus Kohm, 2002-2019 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrlttr2 of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber scrlttr2 in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrlttr2.tex}% + [$Date: 2019-01-15 08:39:58 +0100 (Tue, 15 Jan 2019) $ + KOMA-Script guide (chapter: scrlttr2)] + +\translator{Harald Bongartz\and Georg Grandke\and Raimund Kohl\and Jens-Uwe + Morawski\and Stephan Hennig\and Gernot Hassenpflug\and Markus Kohm\and + Karl Hagen} + +% Date of the translated German file: 2018-04-26 + +\chapter{Letters with the \Class{scrlttr2} Class or the \Package{scrletter} + Package} +\labelbase{scrlttr2} + +\BeginIndexGroup +\BeginIndex{Class}{scrlttr2}\BeginIndex{Package}{scrletter}% +\BeginIndex{}{letters}% +Letters are quite different in many ways from articles, reports, books, and +the like. That alone justifies a separate chapter on letters. But there are +other reasons for a separate chapter on \Class{scrlttr2} and +\Package{scrletter}. + +The \Class{scrlttr2}\important{\Class{scrlttr2}} class was developed from +scratch in 2002. It provides a completely new user interface, different from +every other class I know. This new user interface may be unusual, but it +offers benefits to both new and experienced {\KOMAScript} users. + +The \Package{scrletter}\important{\Package{scrletter}}% +\ChangedAt{v3.15}{\Package{scrletter}} package has supplemented \KOMAScript{} +since Version~3.15. It also provides all the letter-based functionality of +\Class{scrlttr2} to the other classes. I recommend you use one of the +\KOMAScript{} classes\,---\,\Class{scrbook}, \Class{scrreprt} or +\Class{scrartcl}\,---\, which are explained in the previous chapter. With +minor limitations, \Package{scrletter} also works well with the standard +classes. + +The starting point for developing \Package{scrletter} was, on the one hand, +requests from users who also wanted to have elements such as +section\textnote{headings, floating environments, indexes} headings, floating +environments, or a bibliography in letters. On the other hand, there were also +requests to use \Class{scrlttr2} variables in the remaining \KOMAScript{} +classes. You can achieve both by combining the desired \KOMAScript{} class +with \Package{scrletter}. + +Compared to the letter class, the letter package has a few small changes that +were necessary to avoid conflicts with other classes. These changes mainly +affect the page styles and are explicitly documented (see +\autoref{sec:\LabelBase.pagestyle}, starting at +\autopageref{sec:\LabelBase.pagestyle}). Where \Package{scrletter} is not +explicitly mentioned, everything that is documented for \Class{scrlttr2} +applies without change. + + +\section{Variables} +\seclabel{variables}% +\BeginIndexGroup +\BeginIndex{}{variables} + +In addition to options, commands, environments, counters, and lengths, +\autoref{cha:maincls} introduced the concept of additional elements for +\KOMAScript{}. A typical property of an element is its font style and the +ability to change it (see \autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}). In this section we introduce +variables. Variables can have a label used to identify them when they are +output in the document as well as their actual content. To avoid confusion +with labels used for cross-references, this guide refers to such labels as the +``description'' of the variable. The content of a variable can be set +independently of the time and place it is used the same way that the content +of a command can be defined separately from its use. The main difference +between a command and a variable is that a command usually triggers an action, +whereas a variable usually consists of plain text which is then output by a +command. In addition, a variable can also have a description which can be +customised and output. + +This section deliberately confines itself to introducing the concept of +variables. The examples below have no special meaning. More detailed +examples can be found in the explanation of predefined variables used in the +class and the package. An overview of all defined variables is given in +\autoref{tab:\LabelBase.variables}. +% +\begin{desclist} + %\renewcommand*{\abovecaptionskipcorrection}{-\normalbaselineskip}% + \desccaption{Supported variables in \Class{scrlttr2} and + \Package{scrletter}\label{tab:\LabelBase.variables}}% + {Supported variables in \Class{scrlttr2} and \Package{scrletter} + (\emph{continued})}% + \ventry{addresseeimage}{% + commands used to print the postpaid postmark for the + \OptionValueRef{\LabelBase}{addrfield}{backgroundimage} option or the + postpaid address for the \OptionValueRef{\LabelBase}{addrfield}{image} + option (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.addresseeimage})}% + \ventry{backaddress}{% + return address for window envelopes % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.backaddress})}% + \ventry{% + backaddressseparator}{separator within the return address % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.backaddressseparator})}% + \ventry{ccseparator}{% + separator between title of additional addresses (cc list) + and additional addresses % + (\autoref{sec:\LabelBase.document}, + \DescPageRef{\LabelBase.variable.ccseparator})}% + \ventry{customer}{% + customer number % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.customer})}% + \ventry{date}{% + date % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.date})}% + \ventry{emailseparator}{% + separator between email name and email address % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.emailseparator})}% + \ventry{enclseparator}{% + separator between title of enclosure and enclosures % + (\autoref{sec:\LabelBase.document}, + \DescPageRef{\LabelBase.variable.enclseparator})}% + \ventry{faxseparator}{% + separator between title of fax and fax number % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.faxseparator})}% + \ventry{firstfoot}{% + footer\ChangedAt{v3.08}{\Class{scrlttr2}} of the letterhead page % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.firstfoot})}% + \ventry{firsthead}{% + header\ChangedAt{v3.08}{\Class{scrlttr2}} of the letterhead page % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.firsthead})}% + \ventry{fromaddress}{% + sender's address without sender name % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromaddress})}% + \ventry{frombank}{% + sender's bank details % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.frombank})}% + \ventry{fromemail}{% + sender's e-mail % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromemail})}% + \ventry{fromfax}{% + sender's fax number % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromfax})}% + \ventry{fromlogo}{% + commands for inserting the sender's logo % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromlogo})}% + \ventry{frommobilephone}{% + \ChangedAt{v3.12}{\Class{scrlttr2}}% + sender's mobile telephone number % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.frommobilephone})}% + \ventry{fromname}{% + complete name of sender % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromname})}% + \ventry{fromphone}{% + sender's telephone number % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromphone})}% + \ventry{fromurl}{% + URL of the sender, e.\,g. of the sender's homepage % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromurl})}% + \ventry{fromzipcode}{% + ZIP code (postal code) of the sender for the postpaid postmark of the + \OptionValueRef{\LabelBase}{addrfield}{PP} option % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromzipcode})}% + \ventry{invoice}{% + invoice number % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.invoice})}% + \ventry{location}{% + extra details of the sender % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.location})}% + \ventry{myref}{% + sender's reference % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.myref})}% + \ventry{nextfoot}{% + footer\ChangedAt{v3.08}{\Class{scrlttr2}} using page style + \PageStyle{headings}\IndexPagestyle{headings} or + \PageStyle{myheadings}\IndexPagestyle{myheadings} % + (\autoref{sec:\LabelBase.pagestyle}, + \DescPageRef{\LabelBase.variable.nextfoot})}% + \ventry{nexthead}{% + header\ChangedAt{v3.08}{\Class{scrlttr2}} using page style + \PageStyle{headings}\IndexPagestyle{headings} or + \PageStyle{myheadings}\IndexPagestyle{myheadings} % + (\autoref{sec:\LabelBase.pagestyle}, + \DescPageRef{\LabelBase.variable.nexthead})}% + \ventry{phoneseparator}{% + separator between title of telephone and telephone number % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.phoneseparator})}% + \ventry{place}{% + sender's location; used next to date % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.place})}% + \ventry{placeseparator}{% + separator between location and date % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.placeseparator})}% + \ventry{PPdatamatrix}{% + command to print the data array for the + \OptionValueRef{\LabelBase}{addrfield}{PP} option % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.PPdatamatrix})}% + \ventry{PPcode}{% + commands for the sender's identification code for the + \OptionValueRef{\LabelBase}{addrfield}{PP} option % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.PPcode})}% + \ventry{signature}{% + signature annotation beneath the closing text of the letter % + (\autoref{sec:\LabelBase.closing}, + \DescPageRef{\LabelBase.variable.signature})}% + \ventry{specialmail}{% + delivery method % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.specialmail})}% + \ventry{subject}{% + letter's subject % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.subject})}% + \ventry{subjectseparator}{% + separator between subject title and subject % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.subjectseparator})}% + \ventry{title}{% + letter title % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.title})}% + \ventry{toaddress}{% + address of recipient without recipient name % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.toaddress})}% + \ventry{toname}{% + complete name of recipient % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.toname})}% + \ventry{yourmail}{% + date of recipient's referenced mail % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.yourmail})}% + \ventry{yourref}{% + recipient's reference % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.yourref})}% + \ventry{zipcodeseparator}{% + separator between the title of ZIP code (postal code) and the code itself % + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.zipcodeseparator})}% +\end{desclist} + +\begin{Declaration} + \Macro{setkomavar}% + \Parameter{name}\OParameter{description}\Parameter{content}% + \Macro{setkomavar*}\Parameter{name}\Parameter{description} +\end{Declaration} +The \Macro{setkomavar} command sets the \PName{content} of the \PName{name} +variable. Using the optional argument, you can change the \PName{description} +of the variable at the same time. In contrast, \Macro{setkomavar*} sets only +the \PName{description} of the \PName{name} variable. +\begin{Example} + It is customary for letters to indicate the sender in the letterhead. + First, \KOMAScript{} must know the name of the sender. For + ``Joe Public'' that would be done with: +\begin{lstcode} + \setkomavar{fromname}{Joe Public} +\end{lstcode} + The default for the description of the sender is ``From''. Assuming, + however, that Mr Public wants to have ``Sender'' in the places where + \KOMAScript{} outputs his name, he would have to add +\begin{lstcode} + \setkomavar*{fromname}{Sender} +\end{lstcode} + or combine the two commands into one: +\begin{lstcode} + \setkomavar{fromname}[Sender]{Joe Public} +\end{lstcode} + He thus kills two birds with one stone, so to speak. +\end{Example} +By the way, you can delete the content of the variable by providing an empty +\PName{content} argument. Of course, you can delete the \PName{description} of +the variable in the same way, with an empty argument for the description. +\begin{Example} + Suppose Mr Public wants to have no label for the name of the sender. He can + either delete it for himself with +\begin{lstcode} + \setkomavar*{fromname}{} +\end{lstcode} + or he could again kill two birds with one stone and use +\begin{lstcode} + \setkomavar{fromname}[]{Joe Public} +\end{lstcode} + This will simultaneously set the contents of the variable and delete its + description. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{usekomavar}\OParameter{command}\Parameter{name}% + \Macro{usekomavar*}\OParameter{command}\Parameter{name} +\end{Declaration} +In\ChangedAt{v2.9i}{\Class{scrlttr2}} some cases, it is necessary to access +the content or description of a variable and not to leave this solely to the +class. This is especially important if you have defined a variable which is +not added to the reference fields line. Using the command \Macro{usekomavar} +you have access to the content of the \PName{name} variable, whereas the +starred version \Macro{usekomavar*} allows you to access the description or +title. In \autoref{sec:scrlttr2-experts.variables}, +\DescPageRef{scrlttr2-experts.cmd.newkomavar} you can find more information +about defining your own variables.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifkomavar}\Parameter{name}\Parameter{then code}\Parameter{else code} +\end{Declaration} +With\ChangedAt{v3.03}{\Class{scrlttr2}} this command, you can determine if a +variable has already been defined. The \PName{then code} will be executed only +if the variable already exists. The variable's contents will not be examined +and so can be empty. The \PName{else code} will be executed if the variable +does not exist. Such tests can be useful, for example, if your own variables +are defined in one \File{lco} file\Index{lco file=\File{lco} file} (see +\autoref{sec:\LabelBase.lcoFile} starting at +\autopageref{sec:\LabelBase.lcoFile}) but used in another \File{lco} file only +if they exist.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifkomavarempty}\Parameter{name}\Parameter{then code}% + \Parameter{else code}% + \Macro{ifkomavarempty*}\Parameter{name}\Parameter{then code}% + \Parameter{else code} +\end{Declaration} +With\ChangedAt{v2.9i}{\Class{scrlttr2}} these commands, you can determine +whether either the content or the description of a variable is empty. The +\PName{then code} will be executed if the expanded content or the expanded +description of the \PName{name} variable is empty. Otherwise, the \PName{else +code} will be executed. The starred variant tests the variable's description, +while the normal variant tests its contents.% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Pseudo-lengths} +\seclabel{pseudoLength} +\BeginIndexGroup +\BeginIndex{}{pseudo-lengths} + +\LaTeX{} processes lengths with three commands: +\Macro{newlength}\IndexCmd{newlength}, \Macro{setlength}\IndexCmd{setlength} +and \Macro{addtolength}\IndexCmd{addtolength}. Many packages also use macros, +which are commands, to store lengths. \KOMAScript{} extends this method with +the ability to process such lengths stored in macros with commands similar to +those used to handle real lengths. \KOMAScript{} calls lengths that are +actually stored in macros \emph{pseudo-lengths}. + +You can find a list of all pseudo-lengths defined by \Class{scrlttr2} in +\autoref{tab:scrlttr2-experts.pseudoLength}, +\autopageref{tab:scrlttr2-experts.pseudoLength}. A graphical representation of +the main pseudo-lengths for the letterhead page is given in +\autoref{fig:scrlttr2-experts.pseudoLength}. The dimensions used in the figure +correspond to the default settings of \Class{scrlttr2}. More detailed +descriptions of the individual pseudo-lengths are found in the individual +sections of this chapter. + +Since users will usually not need to define their own pseudo-lengths, the +method for defining them is described in the part for experts, in +\autoref{sec:scrlttr2-experts.pseudoLengths}, +\DescPageRef{scrlttr2-experts.cmd.newplength}. Setting pseudo-lengths to new +values should also be a matter for advanced users, so this is also described +in the part for experts, on \DescPageRef{scrlttr2-experts.cmd.setplength}. + +Note\textnote{Attention!} that although these pseudo-lengths are internally +implemented as macros, the commands to use pseudo-lengths expect only the the +pseudo-length names. These are written without backslashes, like the names of +\LaTeX{} counters and unlike macros or real lengths. + +\begin{Declaration} + \Macro{useplength}\Parameter{name} +\end{Declaration} +Using this command you can access the value of the pseudo-length of +the given \PName{name}. This is one of the few user commands in +connection with pseudo-lengths. Of course this command can also be +used with an \File{lco} file\Index{lco file=\File{lco} file} (see +\autoref{sec:\LabelBase.lcoFile} ab \autopageref{sec:\LabelBase.lcoFile}).% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setlengthtoplength}% + \OParameter{factor}\Parameter{length}\Parameter{pseudo-length}% + \Macro{addtolengthplength}% + \OParameter{factor}\Parameter{length}\Parameter{pseudo-length} +\end{Declaration} +With the \Macro{setlengthtoplength} command, you can assign a multiple of a +\PName{pseudo-length} to a real \PName{length}. The \PName{factor} is given +as an optional argument instead of directly preceding the +\PName{pseudo-length}. You should also use this command when you want to +assign the negative of a \PName{pseudo-length} to a \PName{length}. In this +case, you can use either a minus sign or \PValue{-1} as the \PName{factor}. +The \Macro{addtolengthplength} command works very similarly. It adds the +\PName{pseudo-length} multiplied by the \PName{factor} to the \PName{length}.% +% +\EndIndexGroup +% +\EndIndexGroup + +\LoadCommonFile{options} % \section{Early or Late Selection of Options} + +\LoadCommonFile{compatibility} % \section{Compatibility with Earlier Versions of + % \KOMAScript{}} + +\LoadCommonFile{draftmode} % \section{Draft-Mode} + +\LoadCommonFile{typearea} % \section{Page Layout} + +For letters, it is normally not useful to distinguish one-sided and two-sided +printing. Since letters are not usually bound, each page of a letter will be +viewed on its own. This is also true even if both the letter is printed on +both sides of the paper. Vertical adjustment usually does not matter for +letters either. If you nevertheless need it, or want to understand what it is, +please refer to the commands \Macro{raggedbottom} and \Macro{flushbottom} +explained in \autoref{sec:maincls.typearea} on +\DescPageRef{maincls.cmd.flushbottom}.% +% +\EndIndexGroup + + +\section{General Structure of Letter Documents} +\seclabel{document} +\BeginIndexGroup +\BeginIndex{}{letter>structure} + +The general structure of a letter document differs somewhat from the structure +of a normal document. Whereas a book document usually contains only one book, +a letter document can contain several letters. As illustrated in +\autoref{fig:\LabelBase.document}, a letter document consists of a preamble, +the individual letters, and the closing. + +\begin{figure} + \KOMAoptions{captions=bottombeside}% + \setcapindent{0pt}% + \begin{captionbeside}[{% + General structure of a letter document containing several individual letters% + }]{% + General structure of a letter document containing several individual letters + (the structure of a single letter is shown in + \autoref{fig:\LabelBase.letter})% + \label{fig:\LabelBase.document}% + }[l] + \begin{minipage}[b]{.667\linewidth} + \centering\small\setlength{\fboxsep}{1.5ex}% + \addtolength{\linewidth}{-\dimexpr2\fboxrule+2\fboxsep\relax}% + \fbox{\parbox{\linewidth}{\raggedright% + \Macro{documentclass}\OParameter{\dots}\PParameter{scrlttr2}\\ + \dots\\ + {\centering\emph{settings for all letters}\\} + \dots\\ + \Macro{begin}\PParameter{document}\\ + \dots\\ + {\centering\emph{settings for all letters}\\} + \dots\\ + }}\\ + \fbox{\parbox{\linewidth}{\raggedright% + \Macro{begin}\PParameter{letter}\Parameter{recipient}\\ + \dots\\ + {\centering\emph{content of the individual letter}\\} + \dots\\ + \Macro{end}\PParameter{letter}\\ + }}\\[2pt] + \parbox{\linewidth}{\raggedright\vspace{-.5ex}\vdots\vspace{1ex}}\\ + \fbox{\parbox{\linewidth}{\raggedright% + \Macro{end}\PParameter{document}\\ + }}\\[\dimexpr\fboxsep+\fboxrule\relax] + \end{minipage} + \end{captionbeside} +\end{figure} + +The preamble contains all the settings that apply generally to all letters. +Most of them can also be overwritten in the settings of the individual +letters. The only setting which cannot currently be changed within a single +letter is the version of \Class{scrlttr2} for which compatibility is required +(see the \DescRef{\LabelBase.option.version} option in +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}). + +If you use \Package{scrletter}\important{scrletter}, the only difference is +that another class is loaded, with +\DescRef{\LabelBase.cmd.usepackage}\PParameter{scrletter} added before the +settings for all letters. For setting options with \Package{scrletter}, see +\autoref{sec:\LabelBase.options}, on \autopageref{sec:\LabelBase.options}. + +I recommended that you place only general settings such as loading packages +and setting options before \Macro{begin}\PParameter{document}. You should +initialise all variables or other textual features after +\Macro{begin}\PParameter{document}, particularly when you use the +\Package{babel} package\IndexPackage{babel} (see \cite{package:babel}) or +change language-dependent variables of \Class{scrlttr2}. + +The closing usually consists only of \Macro{end}\PParameter{document}. Of +course you can also add additional comments at this point. + +\begin{figure} + \KOMAoptions{captions=bottombeside}% + \setcapindent{0pt}% + \begin{captionbeside}[{% + General structure of a single letter within a letter document% + }]{% + General structure of a single letter within a letter document (see also + \autoref{fig:\LabelBase.document})% + \label{fig:\LabelBase.letter}}[l] + \begin{minipage}[b]{.667\linewidth}% + \centering\small\setlength{\fboxsep}{1.5ex}% + \addtolength{\linewidth}{-\dimexpr2\fboxrule+2\fboxsep\relax}% + \fbox{\parbox{\linewidth}{\raggedright% + \Macro{begin}\PParameter{letter}% + \OParameter{options}\Parameter{recipient}\\ + \dots\\[\dp\strutbox] + {\centering\emph{settings for this letter}\\} + \dots\\ + \DescRef{\LabelBase.cmd.opening}\Parameter{salutation}\\ + }}\\[1pt] + \fbox{\parbox{\linewidth}{\raggedright% + \dots\\[\dp\strutbox] + {\centering\emph{letter text}\\} + \dots\\ + }}\\[1pt] + \fbox{\parbox{\linewidth}{\raggedright% + \DescRef{\LabelBase.cmd.closing}\Parameter{concluding text}\\ + \DescRef{\LabelBase.cmd.ps}\\ + \dots\\[\dp\strutbox] + {\centering\emph{postscript}\\} + \dots\\ + \DescRef{\LabelBase.cmd.encl}\Parameter{enclosures}\\ + \DescRef{\LabelBase.cmd.cc}\Parameter{additional recipients}\\ + \Macro{end}\PParameter{letter}\\ + }}\\[\dimexpr\fboxsep+\fboxrule\relax] + \end{minipage} + \end{captionbeside} +\end{figure} + +As detailed in \autoref{fig:\LabelBase.letter}, individual letters each +consist of an introduction, the body of the letter, and the closing. In the +introduction, all settings pertaining to the current letter alone are defined. +It is important that this introduction always ends with +\DescRef{\LabelBase.cmd.opening}\IndexCmd{opening}. Similarly, the closing +always starts with \DescRef{\LabelBase.cmd.closing}\IndexCmd{closing}. The +\PName{opening} and \PName{closing} arguments of the two commands can be left +empty, but both commands must be used and must have an argument. + +Note that you can change additional settings between the individual letters. +Such changes then apply to all subsequent letters. However, to keep your +letter documents clear and maintainable, you should think carefully before +actually placing further general settings of limited scope between the +letters. I cannot recommend this practice. However, if you use +\Package{scrletter2}, there is nothing wrong with inserting additional parts +of the document between or after letters that should not be in the same scope. +For example, you can combine a cover letter and a CV in one document. + +\begin{Declaration} + \begin{Environment}{letter}\OParameter{options}\Parameter{recipient} + \end{Environment} +\end{Declaration} +\BeginIndex{}{address}% +The \Environment{letter} environment is one of the key environments of the +letter class. A noteworthy\textnote{\KOMAScript{} vs. standard classes} +feature of \Class{scrlttr2} and \Package{scrletter} is that they can provide +additional \PName{options} for the \Environment{letter} environment. These +\PName{options} are executed internally using the +\DescRef{\LabelBase.cmd.KOMAoptions} command. + +The \PName{recipient}, or addressee, is a mandatory argument passed to the +\Environment{letter} environment and includes both the name and the address of +the recipient of the letter. Double\textnote{Attention!} backslashes serve to +separate the individual parts of the address. These parts are output on +individual lines in the address field. Nevertheless, you should not interpret +the double backslash as a mandatory line break. Vertical material such as new +paragraphs or vertical space is not permitted within the address. They can +lead to unexpected results and error messages. Incidentally, this is the same +for the standard letter class. + +\begin{Example} + \phantomsection\label{desc:\LabelBase.env.letter.example}% + Suppose you want to write a letter to Joanna Public. A minimalist + letter document would look like this: +\begin{lstcode} + \documentclass[version=last]{scrlttr2} + \usepackage[british]{babel} + \begin{document} + \begin{letter}{Joanna Public\\ + 1 Hillside\\ + SAMPLESTEAD\\ + WX12 3YZ} + \end{letter} + \end{document} +\end{lstcode} + However, this would not result in any output. It would not even print the + recipient on the letterhead page. Why this is the case is explained in the + description of the \DescRef{\LabelBase.cmd.opening} command on + \DescPageRef{\LabelBase.cmd.opening}. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AtBeginLetter}\Parameter{code}% + \Macro{AtEndLetter}\Parameter{code} +\end{Declaration} +As mentioned in \cite{latex:clsguide}, \LaTeX{} lets the user declare +additional \PName{code} to be executed at certain points in a \LaTeX{} run. +For this purpose, the \LaTeX{} kernel provides, for example, +\Macro{AtBeginDocument}\IndexCmd{AtBeginDocument} and +\Macro{AtEndOfClass}\IndexCmd{AtEndOfClass}. Such points are called +\emph{hooks}\Index{hook}. The \Class{scrlttr2} class and the +\Package{scrletter} package provide two additional hooks. You can declare the +\PName{code} for these using \Macro{AtBeginLetter} and +\Macro{AtEndLetter}\ChangedAt{v2.95}{\Class{scrlttr2}}. Originally, hooks were +intended for package and class authors, so they are documented only in +\cite{latex:clsguide} and not in \cite{latex:usrguide}. However, with letters +there are useful applications at the user level for both new hooks, as the +following example illustrates. +% +\begin{Example} + Suppose you have several letters in a document that use their own commands + to insert a questionnaire in the letters. The questions are numbered + automatically using a counter. Since \KOMAScript{} is unaware of this + counter, it would not be reset at the start of each new letter, unlike the + page number. If each questionnaire contains ten questions, the first + question in the fifth letter would get the number~41. You can solve this + problem by telling \KOMAScript{} to reset this counter at the beginning of + each letter: +\begin{lstlisting} + \newcounter{Question} + \newcommand{\Question}[1]{% + \refstepcounter{Question}\par + \noindent\begin{tabularx}{\textwidth}{l@{}X} + \theQuestion:~ & #1\\ + \end{tabularx}% + }% + \AtBeginLetter{\setcounter{Question}{0}} +\end{lstlisting} + This way first question remains question~1, even in the 1001st letter. Of + course the definition in this example requires the + \Package{tabularx}\IndexPackage{tabularx} package (see + \cite{package:tabularx}). +\end{Example}% +% +\EndIndexGroup + + +\begin{Declaration} + \Counter{letter}% + \Macro{thisletter}% + \Macro{letterlastpage} +\end{Declaration} +If\ChangedAt{v3.19}{\Class{scrlttr2}\and \Package{scrletter}} you have more +than one letter in a document, it is useful to have a letter number. For this +purpose, \KOMAScript{} has provided the \Counter{letter} counter, which +is incremented by one at each \Macro{begin}\PParameter{letter}, since +version~3.19. +\begin{Example} + Let's return to the \DescRef{\LabelBase.cmd.AtBeginLetter} + example. Instead of resetting the counter explicitly at + \Macro{begin}\PParameter{letter}, we can do so implicitly by defining + counter \Counter{Question} to depend on counter \Counter{letter}: +\begin{lstlisting} + \newcounter{Question}[letter] + \newcommand{\Question}[1]{% + \refstepcounter{Question}\par + \noindent\begin{tabularx}{\textwidth}{l@{}X} + \theQuestion:~ & #1\\ + \end{tabularx}% + }% +\end{lstlisting} + Now the new counter will be reset at every start of each letter so that + the first question in each letter will be number one. +\end{Example} + +If you want to display the current value of \Counter{letter}, this is +possible, as usual, with \Macro{theletter}. The counter can also be used for +cross-references. So you can use \Macro{label}\Parameter{name} to generate a +label immediately after \Macro{begin}\PParameter{letter} and reference it +somewhere in the document using \Macro{ref}\Parameter{name}. Inside the same +letter you can get the same result by simply using \Macro{thisletter} without +creating a label. + +For labels in form letters, it is necessary to give them a unique name across +all letters. Once again, you can use \Macro{thisletter} for this purpose. +\KOMAScript{} also uses \Macro{thisletter} internally to put a label on the +last page of each letter. This makes it possible to use +\Macro{letterlastpage}\IndexCmd{label}\IndexCmd{pageref} to reference the +number of the last page of the current letter at any point within the letter. +Since \Macro{letterlastpage} uses \Macro{label} and \Macro{pageref}, it is +only valid after several \LaTeX{} runs\,---\,usually two or three. If you use +\Macro{letterlastpage}, pay attention to the \emph{Rerun} messages in the +terminal output or \File{log} file messages about labels that have been +changed.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{opening}\Parameter{salutation} +\end{Declaration} +This is one of the most important commands for letters. On the surface, it may +seem that only the \PName{salutation}\Index{letter>salutation}, for example +``Dear Mrs~\dots'', is printed. Actually\textnote{Attention!}, this command +also prints the fold marks\Index{fold marks}, the +letterhead\Index{letterhead}, the address\Index{address}, the extra sender +information, the reference line\Index{reference line}, the title\Index{title}, +the subject\Index{subject}, and the footer\Index{page>footer}. In short, +without \Macro{opening} there is no letter. If, in fact, you want to print a +letter without a salutation, you have to use an \Macro{opening} command with +an empty argument. + +\begin{Example} + Let's return to the example of + \DescPageRef{\LabelBase.env.letter.example} and add a salutation: + \lstinputcode[xleftmargin=1em]{letter-0.tex} + This will result in the letterhead shown in + \autoref{fig:\LabelBase.letter-0}. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Example: letter with recipient and salutation}]{% + result of a minimalist letter with recipient and salutation only + (the date is set by default)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-0}} + \end{captionbeside} + \label{fig:\LabelBase.letter-0} + \end{figure} +\end{Example} +\iffalse% Umbruchkorrekturtext +\begin{Explain} + In the early days of computer-generated letters, a salutation was normally + omitted, since individualised form letters were hardly possible. Today + personalised greetings are common in in mass mailings.% +\end{Explain} +\fi +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{closing}\Parameter{concluding text} +\end{Declaration} +The main purpose of the command \Macro{closing} is to typeset the +\PName{concluding text}\Index{closing}. This can even consist of multiple +lines. In that case, the individual lines should be separated by a double +backslash. Paragraph breaks inside the \PName{concluding text} are not +allowed. + +In addition, this command also prints the content of the +\DescRef{\LabelBase.variable.signature} variable. You can find more +information about the signature and its configuration in +\autoref{sec:\LabelBase.closing} on +\DescPageRef{\LabelBase.variable.signature}. + +\begin{Example} + Let's extend the our example with a few lines of text and a closing phrase: + \lstinputcode[xleftmargin=1em]{letter-1.tex} + This will result in a the letter shown in \autoref{fig:\LabelBase.letter-1}. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Example: letter with recipient, opening, text, and + closing}]{% + result of a short letter with recipient, opening, text, and closing + % The refernce to DIN-letters in the German guide isn't relevant for + % English-language letters + (the date is set by default)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-1}} + \end{captionbeside} + \label{fig:\LabelBase.letter-1} + \end{figure} +\end{Example} +% +\EndIndexGroup + +\begin{Declaration} + \Macro{ps} +\end{Declaration}% +This instruction merely switches to the postscript. To do so, a new paragraph +begins, and a vertical gap\,---\,usually below the signature\,---\,is +inserted. The \Macro{ps} text can be followed by any text. If you want the +postscript to be introduced with the acronym ``PS:'', which in most current +usage is written without full stops, you have to type this yourself. This +abbreviation is printed neither automatically nor optionally by the +\Class{scrlttr2} class. + +\begin{Example} + The sample letter with the addition of a postscript + \lstinputcode[xleftmargin=1em]{letter-2.tex} + results in \autoref{fig:\LabelBase.letter-2}. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Example: letter with recipient, opening, text, + closing, and postscript}]{% + result of a short letter with recipient, opening, text, closing, and + postscript (the date is set by default)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-2}} + \end{captionbeside} + \label{fig:\LabelBase.letter-2} + \end{figure} +\end{Example} + +\begin{Explain} + When letters were written still by hand, it was quite common to use a + postscript because this was the only way to add information which had been + forgotten in the main part of the letter. For letters written with \LaTeX{}, + of course, you can easily insert additional lines. Nevertheless, postscripts + remain popular. They can be useful to emphasize important points once more, + or even to mention the less important matters. +\end{Explain} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{cc}\Parameter{distribution list}% + \Variable{ccseparator}% +\end{Declaration} +You can print a \PName{distribution list}\Index{recipient>additional}% +\Index{distribution list}\Index{carbon copy} with the \Macro{cc} command. The +command takes the \PName{distribution list} as its argument. If the content of +the variable \Variable{ccseparator}\Index{separator}\Index{delimiter} is not +empty, the name and content of this variable are inserted before the +\PName{distribution list}. In this case, the \PName{distribution list} will be +indented appropriately. It's a good idea\textnote{Hint!} to set the +\PName{distribution list} \Macro{raggedright}\IndexCmd{raggedright} and to +separate the individual entries with a double backslash. +\begin{Example} + This time, the sample letter should go not only to the chairman but also to + all club members: + \lstinputcode[xleftmargin=1em]{letter-3.tex}% + The result is shown in \autoref{fig:\LabelBase.letter-3}. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Example: letter with recipient, opening, text, + closing, postscript, and distribution list}]{% + result of a short letter with recipient, opening, text, closing, + postscript, and distribution list (the date is set by default)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-3}} + \end{captionbeside} + \label{fig:\LabelBase.letter-3} + \end{figure} +\end{Example} +A vertical gap is inserted automatically before the distribution list.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{encl}\Parameter{enclosures}% + \Variable{enclseparator}% +\end{Declaration} +The \PName{enclosures} have the same structure as the distribution list. The +only difference is that the list of enclosures begins with the name and +content of the \Variable{enclseparator}\Index{separator}\Index{delimiter} +variable. +\begin{Example} + To the sample letter we will attach an excerpt from the club's articles of + association. These will be added as an enclosure. Because there is only one + enclosure, we change the description title accordingly: + \lstinputcode[xleftmargin=1em]{letter-4.tex} + This will result in \autoref{fig:\LabelBase.letter-4}. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Example: letter with recipient, opening, text, + closing, postscript, distribution list, and enclosure}]{% + result of a short letter with recipient, opening, text, closing, + postscript, distribution list, and enclosure (the date is set by + default)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-4}} + \end{captionbeside} + \label{fig:\LabelBase.letter-4} + \end{figure} +\end{Example} +% +\EndIndexGroup +% +\EndIndexGroup + + +\LoadCommonFile{fontsize} % \section{Choosing the Document Font Size} + +\LoadCommonFile{textmarkup} % \section{Text Markup} + +\section{Letterhead Page} +\seclabel{firstpage} +\BeginIndexGroup +\BeginIndex{}{letterhead page}% + +The letterhead page is the first page of, and therefore the signpost for, each +letter. In a business context, the paper for this page is often preprinted +stationery containing elements such as a header with the sender's information +and logo. This header itself is also known as a letterhead. \KOMAScript{} lets +you position these elements freely, and so you can not only replicate the +letterhead page directly but also fill in the required fields instantaneously. +This free positioning is achieved with pseudo-lengths (see +\autoref{sec:\LabelBase.pseudoLength} starting on +\autopageref{sec:\LabelBase.pseudoLength}). You can find a schematic +representation of the letterhead page and the variables used for it in +\autoref{fig:\LabelBase.variables}. The names of the variables are printed in +bold to better distinguish the commands from their arguments. + +Subsequent pages\Index{page>subsequent}\Index{subsequent pages} should be +distinguished from the letterhead page. For the purposes of this manual, +subsequent pages are all pages of a letter except the first one. + + +\begin{figure} + \centering + \includegraphics[scale=0.99]{varDIN} + \caption{schematic display of the letterhead page outlining the most + important commands and variables} + \label{fig:\LabelBase.variables} +\end{figure} + + +\begin{Declaration} + \OptionVName{foldmarks}{setting} +\end{Declaration} +Fold marks\Index{fold mark}, or folding marks, are small horizontal rules in +the left margin and small vertical rules in the top margin. \KOMAScript{} +currently provides three configurable horizontal fold marks and one +configurable vertical fold mark. Additionally it provides a horizontal +hole-punch or page-centre mark. This additional mark cannot be moved +vertically. + +The \Option{foldmarks} option activates or deactivates fold marks for two, +three, or four vertical divisions and one horizontal division. The individual +parts do not have to be of equal size. The positions of three of the four +horizontal marks and the single vertical mark are configurable via +pseudo-lengths (see \autoref{sec:scrlttr2-experts.foldmarks} starting on +\DescPageRef{scrlttr2-experts.plength.foldmarkvpos}). + +With the \Option{foldmarks} option, you can either use the default values for +simple switches described in \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} in order to activate or deactivate all +configured fold marks on the left and upper edges of the paper at once, +or\ChangedAt{v2.97e}{\Class{scrlttr2}} you can configure the individual fold +marks independently by specifying one or more letters, as listed in +\autoref{tab:\LabelBase.foldmark}. In the latter case, the fold marks are only +shown if they have not been deactivated globally with \PValue{false}, +\PValue{off}, or \PValue{no}. The exact position of the fold marks is depends +on the user settings or the \File{lco} files (see +\autoref{sec:\LabelBase.lcoFile} starting on +\autopageref{sec:\LabelBase.lcoFile}). The default values are \PValue{true} +and \PValue{TBMPL}.\textnote{default} +% +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside}{% + Combinable values for configuring fold marks with the + \Option{foldmarks} option% + }[l] + \begin{tabular}[t]{ll} + \toprule + \PValue{B} & activate bottom horizontal fold mark on left paper edge\\% + \PValue{b} & deactivate bottom horizontal fold mark on left paper edge\\% + \PValue{H} & activate all horizontal fold marks on left paper edge\\% + \PValue{h} & deactivate all horizontal fold marks on left paper edge\\% + \PValue{L} & activate left vertical fold mark on upper paper edge\\% + \PValue{l} & deactivate left vertical fold mark on upper paper edge\\% + \PValue{M} & activate middle horizontal fold mark on left paper edge\\% + \PValue{m} & deactivate middle horizontal fold mark on left paper edge\\% + \PValue{P} & activate hole-punch or centre mark on left paper edge\\% + \PValue{p} & deactivate hole-punch or centre mark on left paper edge\\% + \PValue{T} & activate top horizontal fold mark on left paper edge\\% + \PValue{t} & deactivate top horizontal fold mark on left paper edge\\% + \PValue{V} & activate all vertical fold marks on upper paper edge\\% + \PValue{v} & deactivate all vertical fold marks on upper paper edge\\% + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:\LabelBase.foldmark} +\end{table} +% +\begin{Example} + Suppose you want to deactivate all fold marks except the hole-punch mark. If + the default has not already been changed, you can deactivate it as follows: +\begin{lstlisting} + \KOMAoptions{foldmarks=blmt} +\end{lstlisting} + If there is a chance that the default has already been changed, you should + use a safer method. This changes our example a little bit: + \lstinputcode[xleftmargin=1em]{letter-7}% + The result is shown in \autoref{fig:\LabelBase.letter-7}. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Example: letter with recipient, opening, text, + closing, postscript, distribution list, enclosure, and hole-punch + mark}]{% + result of a short letter with recipient, opening, text, closing, + postscript, distribution list, enclosure, and hole-punch mark + (the date is set by default)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-7}} + \end{captionbeside} + \label{fig:\LabelBase.letter-7} + \end{figure} +\end{Example} +\BeginIndex{FontElement}{foldmark}\LabelFontElement{foldmark}% +You\ChangedAt{v2.97c}{\Class{scrlttr2}} can change the colour of the fold mark +with the \DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\LabelBase.textmarkup}, \DescPageRef{\LabelBase.cmd.setkomafont}) +with the \FontElement{foldmark} element. The default is no change.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{enlargefirstpage}{simple switch} +\end{Declaration} +\begin{Explain} + The first page of a letter always uses a different page layout because of + the many predefined elements such as the letterhead or the address. The + \Class{scrlttr2} class provides a mechanism to calculate height and vertical + alignment of header and footer of the first page independently of the + subsequent pages. If, as a result, the footer of the first page would + protrude into the text area, this text area of the first page is + automatically reduced using + \Macro{enlargethispage}\IndexCmd{enlargethispage}. +\end{Explain} +If the text area should become larger, assuming the footer on the first page +permits this, you can use this option. At best, a little more text will then +fit on the first page. See also the description of the \PLength{firstfootvpos} +pseudo-length on \DescPageRef{scrlttr2-experts.plength.firstfootvpos}. This +option takes the standard values for simple switches, as listed in +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. The default +is \PValue{false}.\textnote{default}% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{firsthead}{simple switch} +\end{Declaration} +\BeginIndex{}{letterhead}% +\BeginIndex{}{letter>header}% +The\ChangedAt{v2.97e}{\Class{scrlttr2}} letterhead is usually the topmost +element of the letterhead page. With the \Option{firsthead} option, you can +choose whether the letterhead will be typeset at all. The option accepts the +standard values for simple switches given in \autoref{tab:truefalseswitch} on +\autopageref{tab:truefalseswitch}. The default is to typeset the letterhead.% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{fromalign}{method} +\end{Declaration} +\BeginIndex{}{letterhead}% +\BeginIndex{}{letter>head}% +The\important{\Option{fromalign}} \Option{fromalign} option determines where +the sender information should be placed on the first page. In addition to the +various placement options in the letterhead, you also have the +ability\ChangedAt{v2.97e}{\Class{scrlttr2}} to accommodate extra sender +information\Index{extra sender information}. At the same +time\textnote{Attention!}, this option serves as a central switch to activate +or deactivate letterhead extensions. If these extensions are deactivated, some +other options will have no effect. This will be noted in the explanations of +the respective options. Available values for \Option{fromalign} are shown in +\autoref{tab:\LabelBase.fromalign}. The default value is \PValue{left}.% +% +\begin{table} + \caption[{Available values for the \Option{fromalign} option with + \Class{scrlttr2}}]{Available values for the \Option{fromalign} option to + define the position of the from address in the letterhead with + \Class{scrlttr2}} + \label{tab:\LabelBase.fromalign} + \begin{desctabular} + \entry{\PValue{center}, \PValue{centered}, \PValue{middle}}{% + Sender information is centred inside the letterhead; a logo is + placed at the beginning of the extra sender information, if + applicable; letterhead extensions are activated.}% + \entry{\PValue{false}, \PValue{no}, \PValue{off}}{% + The default design will be used for the sender information; the + letterhead extensions are deactivated.}% + \entry{\PValue{left}}{% + Sender information is left-aligned in the letterhead; a logo is + placed right-aligned, if applicable; letterhead extensions are + activated.}% + \entry{\PValue{locationleft}, \PValue{leftlocation}}{% + Sender information is left-justified and uses the extra sender + information; a logo is placed at the top of it, if applicable; the + letterhead is automatically deactivated but can be reactivated using the + \DescRef{\LabelBase.option.firsthead} option.}% + \entry{\PValue{locationright}, \PValue{rightlocation}, + \PValue{location}}{% + Sender information is right-justified and uses the extra sender + information; a logo is placed at the top of it, if applicable; the + letterhead is automatically deactivated but can be reactivated using the + \DescRef{\LabelBase.option.firsthead} option.}% + \entry{\PValue{right}}{% + Sender information is right-justified; a logo is placed left-justified, + if applicable; letterhead extensions are activated}% + \end{desctabular} +\end{table} +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{fromrule}{position}% + \Variable{fromname}% + \Variable{fromaddress}% +\end{Declaration} +\BeginIndex{}{letterhead}% +\BeginIndex{}{letter>head}% +The\important{\Variable{fromname}} sender's name is determined by the +\Variable{fromname} variable. Its \PName{description} (see also +\autoref{tab:\LabelBase.fromTerm}, \autopageref{tab:\LabelBase.fromTerm}) is +not used in the default letterheads. + +In\important{\OptionValue{fromrule}{aftername}} the extended letterhead, you +can create a horizontal rule below the sender's name with +\OptionValue{fromrule}{aftername}. +Alternatively\important{\OptionValue{fromrule}{afteraddress}} you can place +this rule below the complete sender information with +\OptionValue{fromrule}{afteraddress}. A summary of all available settings for +the rule position is shown in \autoref{tab:\LabelBase.fromrule}. The length of +this rule is determined by the +\PLength{fromrulewidth}\IndexPLength[indexmain]{fromrulewidth} pseudo-length. + +\begin{table} + \caption[{Available values for the \Option{fromrule} option with + \Class{scrlttr2}}]{Available values for the \Option{fromrule} option for the + position of the rule in the sender information with + \Class{scrlttr2}} + \label{tab:\LabelBase.fromrule} + \begin{desctabular} + \entry{\PValue{afteraddress}, \PValue{below}, \PValue{on}, \PValue{true}, + \PValue{yes}}{% + rule below the sender's address}% + \entry{\PValue{aftername}}{% + rule directly below the sender's name}% + \entry{\PValue{false}, \PValue{no}, \PValue{off}}{% + no rule}% + \end{desctabular} +\end{table} + +The default\textnote{default} for the rule with the extended letterhead is +\PValue{false}. But in the standard letterhead, the rule will always be placed +below the sender's name. + +The\important{\Variable{fromaddress}} sender's address follows below the name. +The \PName{content} of variable \Variable{fromaddress} determines this +address. The address \PName{description} (see also +\autoref{tab:\LabelBase.fromTerm}) is not used in the default letterheads + +\BeginIndexGroup +\BeginIndex{FontElement}{fromaddress}\LabelFontElement{fromaddress}% +\BeginIndex{FontElement}{fromname}\LabelFontElement{fromname}% +\BeginIndex{FontElement}{fromrule}\LabelFontElement{fromrule}% +You can set the font used for the complete sender information with the +\FontElement{fromaddress}\IndexFontElement{fromaddress}% +\important{\FontElement{fromaddress}} element. You can define modifications to +this with the \FontElement{fromname}\IndexFontElement{fromname}% +\important{\FontElement{fromname}} element for the sender's name, and with the +\FontElement{fromrule}\IndexFontElement{fromrule}% +\important{\FontElement{fromrule}} element for the rule created with the +\Option{fromrule} option. The default setting does not change the font. For +the rule, font switching is mainly intended to change the colour of the rule, +for example to use grey instead of black. See \cite{package:xcolor} for +information about colours.% +% +\EndIndexGroup + +\begin{Example} + Now let's give the sender of our sample letter a name: + \lstinputcode[xleftmargin=1em]{letter-8.tex} + \begin{figure} + \centering + \frame{\includegraphics[width=.4\textwidth]{letter-8}}\quad + \frame{\includegraphics[width=.4\textwidth]{letter-9}} + \caption[{Example: letter with sender, recipient, opening, text, closing, + postscript, distribution list, and enclosure}] + {result of a short letter with sender, recipient, opening, text, closing, + postscript, distribution list, and enclosure (the date is set by + default): on the left, the standard letterhead using + \OptionValueRef{\LabelBase}{fromalign}{false}; on the right, the + extended letterhead using \OptionValueRef{\LabelBase}{fromalign}{center}} + \label{fig:\LabelBase.letter-8-9} + \end{figure} + Initially, the standard rather than the extended letterhead is used. The + result can be seen in \autoref{fig:\LabelBase.letter-8-9} on the left. For + comparison, the same example is shown on the right with + \OptionValueRef{\LabelBase}{fromalign}{center} (that is, with the extended + letterhead). You can see that this variation initially has no rule. + + For the first time, \autoref{fig:\LabelBase.letter-8-9} also shows a + signature below the closing phrase. This is generated automatically from the + sender's name. You can find more information about how to configure the + signature in \autoref{sec:\LabelBase.closing}, starting on + \autopageref{sec:\LabelBase.closing}. + + Next, the letter with the extended letterhead should use the + \Option{fromrule} option to print a rule below the sender's name:% + \lstinputcode[xleftmargin=1em]{letter-11.tex}% + You can see the result on the right in + \autoref{fig:\LabelBase.letter-10-11}. By comparison, the same example on + the left uses the standard letterhead, which ignores the additional options. + % + \begin{figure} + \centering + \frame{\includegraphics[width=.4\textwidth]{letter-10}}\quad + \frame{\includegraphics[width=.4\textwidth]{letter-11}} + \caption[{Example: letter with sender, rule, recipient, + opening, text, closing, signature, postscript, distribution list, + enclosure, and hole-punch mark}] + {result of a short letter with sender, rule, recipient, + opening, text, closing, signature, postscript, distribution list, + enclosure and hole-punch mark (the date is set by default): + at left one the standard letterhead using + \OptionValueRef{\LabelBase}{fromalign}{false}, at right one the extended letterhead + using \OptionValueRef{\LabelBase}{fromalign}{center}} + \label{fig:\LabelBase.letter-10-11} + \end{figure} +\end{Example} + +An\textnote{Attention!} important note concerns the sender's address: within +the sender's address, individual parts such as house number and street, city +and postal code, etc., are separated with a double backslash. This double +backslash is interpreted differently depending on how the sender's address is +used and therefore is not necessarily a line break. Paragraphs, vertical +spacing, and the like are usually not allowed within the sender's information. +You have to know \KOMAScript{} very well to put such things into the sender +information, if necessary. In addition, note that if you do so, you should +definitely set the variables for return address (see +\DescRef{\LabelBase.variable.backaddress}, +\DescPageRef{\LabelBase.variable.backaddress}) and signature (see +\DescRef{\LabelBase.variable.signature}, +\DescPageRef{\LabelBase.variable.signature}) yourself.% +% +\EndIndexGroup + +\begin{Declaration} + \OptionVName{symbolicnames}{simple switch}% + \OptionVName{fromphone}{simple switch}% + \OptionVName{frommobilephone}{simple switch}% + \OptionVName{fromfax}{simple switch}% + \OptionVName{fromemail}{simple switch}% + \OptionVName{fromurl}{simple switch}% + \Variable{fromphone}% + \Variable{frommobilephone}% + \Variable{fromfax}% + \Variable{fromemail}% + \Variable{fromurl}% + \Variable{phoneseparator}% + \Variable{mobilephoneseparator}% + \Variable{faxseparator}% + \Variable{emailseparator}% + \Variable{urlseparator}% +\end{Declaration} +\BeginIndex{}{letterhead}% +\BeginIndex{}{letter>header} +You can use the five options \Option{fromphone}, \Option{frommobilephone}\ChangedAt{v3.12}{\Class{scrlttr2}}, \Option{fromfax}, +\Option{fromemail}, and \Option{fromurl} to specify whether to include the +phone number\Index{telephone}\Index{phone}, +mobile\ChangedAt{v3.12}{\Class{scrlttr2}} phone number\Index{mobile +phone}\Index{cell phone}\Index{cellphone}, fax number\Index{fax}, e-mail +address\Index{e-mail}, or URL should be as part of the sender's +information. You can assign any standard value for simple switches from +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} to these +options. The default for all of them is \PValue{false}. The \PName{contents} +themselves are determined by the variables of the same name. You can find the +defaults for the \PName{description} or title of each variable in +\autoref{tab:\LabelBase.fromTerm}. You can find the separators that will be +inserted between the \PName{description} and the \PName{content} in +\autoref{tab:\LabelBase.fromSeparator}. + +You can\ChangedAt{v3.12}{\Class{scrlttr2}}\important{\Option{symbolicnames}} +change the defaults for describing the variables all at once with the +\Option{symbolicnames} option. This option understands the values for simple +switches found in \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch}. Activating the option replaces the +descriptions from the language-dependant labels of +\DescRef{scrlttr2-experts.cmd.emailname}, +\DescRef{scrlttr2-experts.cmd.faxname}, +\DescRef{scrlttr2-experts.cmd.mobilephonename}, and +\DescRef{scrlttr2-experts.cmd.phonename} with symbols from the +\Package{marvosym}\IndexPackage{marvosym} package. At the same time, the colon +is omitted when defining the separators. In this case, both the description +and the content of the URL separator will be empty. Note\textnote{Attention!} +that you have to load the \Package{marvosym} package on your own if you activate +\Option{symbolicnames} for the first time after +\Macro{begin}\PParameter{document}. + +\begin{table} + \centering + \caption[{Default descriptions of the letterhead variables}]{Default + descriptions of the letterhead variables (you can find the description and + contents of the separator variables in + \autoref{tab:\LabelBase.fromSeparator}} + \begin{desctabular}[1.8em] + \ventry{fromemail}{\DescRef{\LabelBase.cmd.usekomavar*}\PParameter{emailseparator}% + \DescRef{\LabelBase.cmd.usekomavar}\PParameter{emailseparator}}% + \ventry{fromfax}{\DescRef{\LabelBase.cmd.usekomavar*}\PParameter{faxseparator}% + \DescRef{\LabelBase.cmd.usekomavar}\PParameter{faxseparator}}% + \ventry{frommobilephone}{% + \ChangedAt{v3.12}{\Class{scrlttr2}}% + \DescRef{\LabelBase.cmd.usekomavar*}\PParameter{mobilephoneseparator}% + \DescRef{\LabelBase.cmd.usekomavar}\PParameter{mobilephoneseparator}}% + \ventry{fromname}{\DescRef{scrlttr2-experts.cmd.headfromname}}% + \ventry{fromphone}{\DescRef{\LabelBase.cmd.usekomavar*}\PParameter{phoneseparator}% + \DescRef{\LabelBase.cmd.usekomavar}\PParameter{phoneseparator}}% + \ventry{fromurl}{\DescRef{\LabelBase.cmd.usekomavar*}\PParameter{urlseparator}% + \DescRef{\LabelBase.cmd.usekomavar}\PParameter{urlseparator}}% + \end{desctabular} + \label{tab:\LabelBase.fromTerm} +\end{table} + +\begin{table}[tp] + \centering +% \KOMAoptions{captions=topbeside}% +% \setcapindent{0pt}% + \caption{Default descriptions and contents of the letterhead + separators without the \Option{symbolicnames} option} +% [l] + \begin{tabular}[t]{lll} + \toprule + variable name & description & content \\ + \midrule + \Variable{emailseparator} & \DescRef{scrlttr2-experts.cmd.emailname} & \texttt{:\~} \\ + \Variable{faxseparator} & \DescRef{scrlttr2-experts.cmd.faxname} & \texttt{:\~} \\ + \Variable{mobilephoneseparator} & \DescRef{scrlttr2-experts.cmd.mobilephonename} & \Macro{usekomavaer}\PParameter{phoneseparator} \\ + \Variable{phoneseparator} & \DescRef{scrlttr2-experts.cmd.phonename} & \texttt{:\~} \\ + \Variable{urlseparator} & \DescRef{scrlttr2-experts.cmd.wwwname} & \texttt{:\~} \\ + \bottomrule + \end{tabular} +% \end{captionbeside} + \label{tab:\LabelBase.fromSeparator} +\end{table} + +\begin{Example} + Mr Public from our sample letter has a telephone and an e-mail address. He + also wants to show these in the letterhead. At the same time, the separation + rule should now be placed after the letterhead. So he uses the appropriate + options and also sets the required variables:% + \lstinputcode[xleftmargin=1em]{letter-12.tex}% + The results on the left side of \autoref{fig:\LabelBase.letter-12-13}, + however, are confounding: the options are ignored. That's because the + additional variables and options are only used in the extended letterhead. + So the \DescRef{\LabelBase.option.fromalign} option must be used, as it is + in the right side of + \autoref{fig:\LabelBase.letter-12-13}. + \begin{figure} + \centering + \frame{\includegraphics[width=.4\textwidth]{letter-12}}\quad + \frame{\includegraphics[width=.4\textwidth]{letter-13}} + \caption[{Example: letter with extra sender information, rule, + recipient, opening, text, closing, signature, postscript, distribution + list, enclosure, and hole-punch mark; standard vs. extended letterhead}] + {result of a short letter with sender, rule, recipient, opening, text, + closing, signature, postscript, distribution list, enclosure and + hole-punch mark (the date is set by default): the left one uses the + standard letterhead with + \OptionValueRef{\LabelBase}{fromalign}{false}; the right one uses the + extended letterhead with \OptionValueRef{\LabelBase}{fromalign}{center}} + \label{fig:\LabelBase.letter-12-13} + \end{figure} + \lstinputcode[xleftmargin=1em]{letter-13.tex} + + You can compare two other alternatives with left-aligned sender information using + \OptionValueRef{\LabelBase}{fromalign}{left} and right-aligned sender information + using \OptionValueRef{\LabelBase}{fromalign}{right} in + \autoref{fig:\LabelBase.letter-14-15}. + \begin{figure} + \centering + \frame{\includegraphics[width=.4\textwidth]{letter-14}}\quad + \frame{\includegraphics[width=.4\textwidth]{letter-15}} + \caption[{Example: letter with extra sender information, rule, + recipient, opening, text, closing, signature, postscript, distribution + list, enclosure, and hole-punch mark; left- vs. right-aligned + letterhead}] + {result of a short letter with extra sender information, rule, + recipient, opening, text, closing, signature, postscript, distribution + list, enclosure and hole-punch mark (the date is set by default): + the left one uses a left-aligned letterhead with + \OptionValueRef{\LabelBase}{fromalign}{left}; the right one uses a + right-aligned letterhead using + \OptionValueRef{\LabelBase}{fromalign}{right}} + \label{fig:\LabelBase.letter-14-15} + \end{figure} +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{fromlogo}{simple switch}% + \Variable{fromlogo}% +\end{Declaration} +\BeginIndex{}{letterhead}% +\BeginIndex{}{letter>head}% +You can use the \Option{fromlogo} to configure whether to put a +logo\Index{Logo} in the letterhead. You can use any of the default values from +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} for the +\PName{simple switch}. The default is \PValue{false}, which means no logo. The +logo itself is defined by the \PName{content} of the \Variable{fromlogo} +variable. The \PName{description} of the logo is empty by default and +\KOMAScript{} does not use it in the default letterhead pages (see also +\autoref{tab:\LabelBase.fromTerm}).% +\begin{Example} + Mr Public finds it particularly stylish when he provides his letterhead with + a logo. He has saved his logo as a graphics file, which he would like to + load using \Macro{includegraphics}. To do this, he loads the + \Package{graphics}\IndexPackage{graphics} package (see + \cite{package:graphics}).% + \lstinputcode[xleftmargin=1em]{letter-16}% + You can see the result in the top left of + \autoref{fig:\LabelBase.letter-16-18}. The other two images in this figure + show the results with right-aligned and centred sender information. + \begin{figure} + \setcapindent{0pt}% + {\hfill + \frame{\includegraphics[width=.4\textwidth]{letter-16}}\quad + \frame{\includegraphics[width=.4\textwidth]{letter-17}}\par\bigskip} + \begin{captionbeside}[{Example: letter with extra sender information, + logo, rule, recipient, opening, text, closing, signature, postscript, + distribution list, enclosure, and hole-punch mark; left-aligned vs. + right-aligned vs. centred sender information}] + {result of a short letter with extra sender information, logo, rule, + recipient, opening, text, closing, signature, postscript, distribution + list, enclosure and hole-punch mark (the date is set by default): + at top left the sender is left-aligned, at top right the sender is + centred, and at bottom right the sender is right-aligned + sender}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-18}}\quad + \end{captionbeside} + \label{fig:\LabelBase.letter-16-18} + \end{figure} +\end{Example}% +% +\EndIndexGroup + + +\begin{Declaration} + \Variable{firsthead}% +\end{Declaration} +In many cases, the capabilities that \Class{scrlttr2} offers with the +foregoing options and variables will be sufficient to design a letterhead. In +some cases, however, you may want even more flexibility. In those situations, +you will have to do without the possibilities offered by the predefined +letterhead, which you can select via the options described above. Instead, you +must create your own letterhead from scratch. To do so, you must specify the +desired structure as the \PName{contents} of the \Variable{firsthead} +variable. For example, you can set several boxes side by side or one beneath +the other using the \Macro{parbox} command (see \cite{latex:usrguide}). +Experienced users should thus be able to create their own a letterheads. Of +course you can and should use other variables with +\DescRef{\LabelBase.cmd.usekomavar}. \KOMAScript{} does not use the +\PName{description} of variable \Variable{firsthead}. \iffree{}{You can find + a detailed example of a letterhead definition in + \autoref{cha:modernletters}.}% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{addrfield}{format}% + \OptionVName{backaddress}{value}% + \OptionVName{priority}{priority}% + \Variable{toname}% + \Variable{toaddress}% + \Variable{backaddress}% + \Variable{backaddressseparator}% + \Variable{specialmail}% + \Variable{fromzipcode}% + \Variable{zipcodeseparator}% + \Variable{place}% + \Variable{PPcode}% + \Variable{PPdatamatrix}% + \Variable{addresseeimage}% +\end{Declaration}% +\BeginIndex{}{address}% +The \Option{addrfield} option determines whether or not to print an address +field. The default\textnote{default} is to include an address field. The +option recognizes the formats described in +\autoref{tab:\LabelBase.addrfield}\ChangedAt{v3.03}{\Class{scrlttr2}}. With +the values \PValue{true}, +\PValue{topaligned}\ChangedAt{v3.17}{\Class{scrlttr2}\and +\Package{scrletter}}, \PValue{PP}, and \PValue{backgroundimage}, the name and +address of the recipient are determined by the mandatory argument of the +\DescRef{\LabelBase.env.letter} environment (see +\autoref{sec:\LabelBase.document}, \DescPageRef{\LabelBase.env.letter}). This +information is also copied into the variables \Variable{toname} and +\Variable{toaddress}. + +\BeginIndexGroup +\BeginIndex{FontElement}{addressee}\LabelFontElement{addressee}% +\BeginIndex{FontElement}{toname}\LabelFontElement{toname}% +\BeginIndex{FontElement}{toaddress}\LabelFontElement{toaddress}% +You can change the default font styles\ChangedAt{v2.97c}{\Class{scrlttr2}} +with the \DescRef{\LabelBase.cmd.setkomafont} or +\DescRef{\LabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}). There are three elements. First, +the \FontElement{addressee}\important{\FontElement{addressee}} element is +responsible for the overall style of the recipient's name and address. The +elements \FontElement{toname}\important{\FontElement{toname}} and +\FontElement{toaddress}\important{\FontElement{toaddress}} are responsible +only for the name and the address of the recipient, respectively. You can use +\FontElement{toname} and \FontElement{toaddress} to define modifications from +the basic \FontElement{addressee} configuration.% +\EndIndexGroup +% +\begin{table} + \caption[{Available values for the \Option{addrfield} option with + \Class{scrlttr2}}]{Available values for the \Option{addrfield} option to + change the recipient format of \Class{scrlttr2}}% + \label{tab:\LabelBase.addrfield}% + \begin{desctabular} + \entry{\PValue{backgroundimage}, \PValue{PPbackgroundimage}, + \PValue{PPBackgroundImage}, \PValue{PPBackGroundImage}, + \PValue{ppbackgroundimage}, \PValue{ppBackgroundImage}, + \PValue{ppBackGroundImage}}{% + Prints an address with a background image stored in the + \Variable{addresseimage} variable as the postpaid postmark, but without + a return address or delivery type.}% + \entry{\PValue{false}, \PValue{off}, \PValue{no}}{% + Does not print an address.}% + \entry{\PValue{image}, \PValue{Image}, \PValue{PPimage}, \PValue{PPImage}, + \PValue{ppimage}, \PValue{ppImage}}{% + Prints an image stored in the \Variable{addresseeimage} variable as an + address with a postpaid postmark. Recipient information, return address, + and delivery type or priority are ignored.}% + \entry{\PValue{PP}, \PValue{pp}, \PValue{PPexplicite}, + \PValue{PPExplicite}, \PValue{ppexplicite}, \PValue{ppExplicite}}{% + Prints an address with a postage print impression (pospaid) header + filled in with the variables \Variable{fromzipcode}, \Variable{place}, + and \Variable{PPcode}, and when applicable with a priority and a data + array defined by \Variable{PPdatamatrix}, but without a return address + or delivery type.}% + \entry{\PValue{topaligned}, \PValue{alignedtop}% + \ChangedAt{v3.17}{\Class{scrlttr2}\and \Package{scrletter}}}{% + Prints an address including a return address and a delivery type + or priority. The address is not centred vertically beneath the delivery + type.}% + \entry{\PValue{true}, \PValue{on}, \PValue{yes}}{% + Prints an address field including a return address and delivery type + or priority.}% + \end{desctabular} +\end{table}% + +The default \OptionValue{addrfield}{true} also prints an underlined return +address in the address field. The \Option{backaddress} option defines if and +in what form a return address will be printed for window envelopes. On the one +hand, this option\important{\OptionValue{backaddress}{false}} accepts the +standard values for simple switches listed in \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch}. These values do not change style of the +return address. On the other hand, when\ChangedAt{v2.96}{\Class{scrlttr2}} the +return address is enabled, you can select its format at the same time. For +example, the \PValue{underlined} option value enables an underlined return +address, while \PValue{plain}\important{\OptionValue{backaddress}{plain}} +selects a style without underlining. The default is \PValue{underlined} and +thus prints an underlined return address. + +The return address itself is defined by the \PName{content} of the +\Variable{backaddress} variable. The default is the name specified in +\DescRef{\LabelBase.variable.fromname} and the address specified in +\DescRef{\LabelBase.variable.fromaddress}. The double backslash is also +replaced with the \PName{content} of the \Variable{backaddressseparator} +variable. The default separator is a comma followed by a non-breaking space. +\KOMAScript{} does not use the \PName{description} of the +\Variable{backaddress} variable. +\BeginIndexGroup\BeginIndex{FontElement}{backaddress}% +\LabelFontElement{backaddress}% +You can configure the font style of the return address via the +\FontElement{backaddress}\important{\FontElement{backaddress}} element. The +default is \Macro{sffamily} (see \autoref{tab:\LabelBase.AddresseeElements}). +Before applying the element's font style \KOMAScript{} switches to +\Macro{scriptsize}.% +\EndIndexGroup + +The default \OptionValue{addrfield}{true}, centres the address vertically +within the space available for the address. +In\ChangedAt{v3.17}{\Class{scrlttr2}\and \Package{scrletter}} contrast, +\OptionValue{addrfield}{topaligned}% +\important{\OptionValue{addrfield}{topaligned}} will not centre the address +but place it flush with the top of the available space.% + +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside}{% + Default font styles for the elements of the address field.% + }% + [l] + \begin{tabular}[t]{ll} + \toprule + element & font style \\ + \midrule + \DescRef{\LabelBase.fontelement.addressee}\IndexFontElement{addressee} & + \\ + \DescRef{\LabelBase.fontelement.backaddress}\IndexFontElement{backaddress} & + \Macro{sffamily}% + \\ + \DescRef{\LabelBase.fontelement.PPdata}\IndexFontElement{PPdata} & + \Macro{sffamily}% + \\ + \DescRef{\LabelBase.fontelement.PPlogo}\IndexFontElement{PPlogo} & + \Macro{sffamily}\Macro{bfseries}% + \\ + \DescRef{\LabelBase.fontelement.priority}\IndexFontElement{priority} & + \Macro{fontsize}\PParameter{10pt}\PParameter{10pt}% + \Macro{sffamily}\Macro{bfseries}% + \\ + \DescRef{\LabelBase.fontelement.prioritykey}\IndexFontElement{prioritykey} & + \Macro{fontsize}\PParameter{24.88pt}\PParameter{24.88pt}% + \Macro{selectfont}% + \\ + \DescRef{\LabelBase.fontelement.specialmail}\IndexFontElement{specialmail} & + \\ + \DescRef{\LabelBase.fontelement.toaddress}\IndexFontElement{toaddress} & + \\ + \DescRef{\LabelBase.fontelement.toname}\IndexFontElement{toname} & + \\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:\LabelBase.AddresseeElements}% +\end{table} + +\BeginIndexGroup +\BeginIndex{FontElement}{specialmail}\LabelFontElement{specialmail} +With the default \OptionValue{addrfield}{true} setting, you can output an +optional delivery type\Index{delivery type} between the return address and the +recipient address. This will be output only if the \Variable{specialmail} +variable has non-empty content and +\OptionValue{priority}{manual}\ChangedAt{v3.03}{\Class{scrlttr2}} has been +selected, which is the default. The \Class{scrlttr2} class itself does not use +the \PName{description} of the \Variable{specialmail} variable. The alignment +is defined by the \PLength{specialmailindent} and +\PLength{specialmailrightindent} pseudo-lengths (see +\DescPageRef{scrlttr2-experts.plength.specialmailindent}). You can change the +default font style of the\ChangedAt{v2.97c}{\Class{scrlttr2}} +\FontElement{specialmail}\important{\FontElement{specialmail}} element, which +is listed in \autoref{tab:\LabelBase.AddresseeElements}, with the +\DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}).% +\EndIndexGroup + +\BeginIndexGroup +\BeginIndex{FontElement}{priority}\LabelFontElement{priority}% +\BeginIndex{FontElement}{prioritykey}\LabelFontElement{prioritykey}% +However\ChangedAt{v3.03}{\Class{scrlttr2}}\important{\normalcolor + \OptionValue{priority}{A}\\ + \normalcolor\OptionValue{priority}{B}}, selecting an international priority +with \OptionValue{priority}{A} or \OptionValue{priority}{B} (see +\autoref{tab:\LabelBase.priority}) together with +\OptionValue{addrfield}{true}, prints the priority as the delivery type. Using +it together with +\OptionValue{addrfield}{PP}\important{\OptionValue{addrfield}{PP}} prints the +priority at the corresponding position in the postpaid postmark (also known as +the postage print impression or \emph{port pay\'e}). The \FontElement{priority} +element defines the basic font style, and \FontElement{prioritykey} defines +the modification of the basic font style for the priority keys ``A'' or ``B''. +You can find the default font styles listed in +\autoref{tab:\LabelBase.AddresseeElements} and can change then using the +\DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}).% +\EndIndexGroup + +\begin{table} + \caption[{Available values for the \Option{priority} option in + \Class{scrlttr2}}]{Available values for the \Option{priority} option to + select the international priority in the address field of\Class{scrlttr2}} + \label{tab:\LabelBase.priority} + \begin{desctabular} + \entry{\PValue{false}, \PValue{off}, \PValue{no}, \PValue{manual}}{% + Priority will not be printed.}% + \entry{\PValue{B}, \PValue{b}, \PValue{economy}, \PValue{Economy}, + \PValue{ECONOMY}, \PValue{B-ECONOMY}, \PValue{B-Economy}, + \PValue{b-economy}}{% + Use international priority B-Economy. With + \OptionValue{addrfield}{true}, this is printed instead of the delivery + type.}% + \entry{\PValue{A}, \PValue{a}, \PValue{priority}, \PValue{Priority}, + \PValue{PRIORITY}, \PValue{A-PRIORITY}, \PValue{A-Priority}, + \PValue{a-priority}}{% + Use international priority A-Priority. With + \OptionValue{addrfield}{true}, this is printed instead of the delivery + type.}% + \end{desctabular} +\end{table} + +With\ChangedAt{v3.03}{\Class{scrlttr2}}\important{\OptionValue{addrfield}{PP}} +\OptionValue{addrfield}{PP}, the postal code in the \Variable{fromzipcode} +variable and the location from the \Variable{place} pariable will be output in +the postpaid postmark. The postal code (that is, the \PName{content} of +\Variable{fromzipcode}) is preceded by the \PName{description} of the +\Variable{fromzipcode} variable and the \PName{content} of +\Variable{zipcodeseparator}. The default for the \PName{description} depends +on the \File{lco} file used (see \autoref{sec:\LabelBase.lcoFile} starting on +\autopageref{sec:\LabelBase.lcoFile}). On the other hand, the default +\PName{content} of the \Variable{zipcodeseparator} variable is a thin space +followed by an en rule followed by another thin space +(\Macro{,}\texttt{-{}-}\Macro{,}). + +With\ChangedAt{v3.03}{\Class{scrlttr2}} +\OptionValue{addrfield}{PP}\important{\OptionValue{addrfield}{PP}}, a code is +placed in the postpaid postmark that uniquely identifies the sender. This is +stored in the \Variable{PPcode} variable. You can also print an additional +data array to the right of the address, which is stored in the +\Variable{PPdatamatrix} variable. + +\BeginIndexGroup +\BeginIndex{FontElement}{PPdata}\LabelFontElement{PPdata} +The ZIP code\ChangedAt{v3.03}{\Class{scrlttr2}} (postal code), place, and +sender code will be printed by default in an 8\Unit{pt} font. The the font +style of the \FontElement{PPdata}\important{\FontElement{PPdata}} is used to +do so. The default is listed in \autoref{tab:\LabelBase.AddresseeElements} and +can be changed with the \DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}).% +\EndIndexGroup + +\BeginIndexGroup +\BeginIndex{FontElement}{PPlogo}\LabelFontElement{PPlogo} For the postpaid +logo ``P.P.'', however, the font style of the +\FontElement{PPlogo}\important{\FontElement{PPlogo}} element is used. Its +default can also be found in \autoref{tab:\LabelBase.AddresseeElements}.% +\EndIndexGroup + +With\important{\OptionValue{addrfield}{backgroundimage}\\ + \OptionValue{addrfield}{image}} the two settings +\OptionValue{addrfield}{backgroundimage}\ChangedAt{v3.03}{\Class{scrlttr2}} +and \OptionValue{addrfield}{image}, an image is print inside the address +window. This image is stored in the \PName{content} of variable +\Variable{addresseeimage}. \KOMAScript{} does not use the \PName{description} +of this variable. Although only the image is printed with the +\OptionValue{addrfield}{image} option, the recipient's name and address from +the mandatory argument of the \DescRef{\LabelBase.env.letter} environment will +be printed with the \OptionValue{addrfield}{backgroundimage} option. + +The position of the postpaid postmark and that of the +postpaid address is defined by the \PLength{toaddrindent} pseudo-length (see +\DescPageRef{scrlttr2-experts.plength.toaddrindent}) as well as +\PLength{PPheadwidth} and \PLength{PPheadheight} (see +\DescPageRef{scrlttr2-experts.plength.PPheadheight}). The position of +the data array is defined by the \PLength{PPdatamatrixvskip} pseudo-length +(see \DescPageRef{scrlttr2-experts.plength.PPdatamatrixvskip}). + +Note\textnote{Attention!} that \KOMAScript{} cannot print any external +graphics or pictures by itself. So if you want to put external picture files +into variables like \Variable{addresseeimage} or \Variable{PPdatamatrix}, you +must load an additional graphics package like +\Package{graphics}\IndexPackage{graphics} or +\Package{graphicx}\IndexPackage{graphicx} and use, for instance, the +\Macro{includegraphics} command in the \PName{content} of the variables.% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{locfield}{setting} +\end{Declaration} +\BeginIndex{}{extra sender information}% +In addition to the address field, \Class{scrlttr2} can print a field with +extra sender attributes next to the address field. Its content can be +anything you want, for example a location, a bank-account number, or other +information. Depending\important{% + \OptionValueRef{\LabelBase}{fromalign}{locationleft}\\ + \OptionValueRef{\LabelBase}{fromalign}{center}\\ + \OptionValueRef{\LabelBase}{fromalign}{locationright}} on the +\DescRef{\LabelBase.option.fromalign} option, it will also be used for the +sender's logo. The width of this field can be specified in an \File{lco} file +(see \autoref{sec:\LabelBase.lcoFile}). If the width is set to zero there, the +\Option{locfield} option can toggle between two defaults for the field width. +This is the case for most of the \File{lco} files that come with +\KOMAScript{}. See also the explanation on the \PLength{locwidth} +pseudo-length in \autoref{sec:scrlttr2-experts.locationField}, +\DescPageRef{scrlttr2-experts.plength.locwidth}. Available values for this +option are shown in \autoref{tab:\LabelBase.locfield}. The default is +\PValue{narrow}.% +% +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside} + [{Available values for the \Option{locfield} option with + \Class{scrlttr2}}]{Available values for the \Option{locfield} option to + set the width of the field for extra sender information with + \Class{scrlttr2}% + \label{tab:\LabelBase.locfield}}% + [l] + \begin{minipage}[t]{.45\linewidth} + \begin{desctabular}[t] + \pventry{narrow}{narrow extra sender information field}% + \pventry{wide}{wide extra sender information field}% + \end{desctabular} + \end{minipage} + \end{captionbeside} +\end{table} + +\begin{Declaration} + \Variable{location}% +\end{Declaration} +The contents of the extra sender information field, unless it contains +the logo or the basic sender information itself, are specified by the +\Variable{location} variable. You can use formatting commands like +\Macro{raggedright} within this variable's \PName{content}. \KOMAScript{} does +not use the \PName{description} of this variable. + +\begin{Example} + Mr Public would like to provide some additional information about his + membership. Therefore he uses the \Variable{location} variable:% + \lstinputcode[xleftmargin=1em]{letter-19.tex}% + This will place the corresponding field beside the recipient's address, as + shown in \autoref{fig:\LabelBase.letter-19}. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Example: letter with extended sender, logo, + recipient, extra sender information, opening, text, closing, + signature, postscript, distribution list, enclosure, and hole-punch + mark}] + {result of a short letter with extended sender, logo, recipient, + extra sender information, opening, text, closing, signature, + postscript, distribution list, enclosure, and hole-punch mark (the + date is set by default)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-19}} + \end{captionbeside} + \label{fig:\LabelBase.letter-19} + \end{figure} +\end{Example} +\EndIndexGroup +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{numericaldate}{simple switch} +\end{Declaration} +This option toggles between the standard, language-dependent +date\Index{date}\Index{reference line} presentation, and a short, numerical +one. \KOMAScript{} does not provide the standard date format. It should be +defined by a package such as \Package{ngerman}\IndexPackage{ngerman}, +\Package{babel}\IndexPackage{babel}, or +\Package{isodate}\IndexPackage{isodate}. +The\important{\OptionValue{numericaldate}{true}} short, numerical +representation, however, is produced by \Class{scrlttr2} itself. The option +recognizes the standard values for simple switches as listed in +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. The default +is \PValue{false}, which results in standard date format. + +\begin{Declaration} + \Variable{date}% +\end{Declaration} +The date in the selected format is stored as \PName{content} of the +\Variable{date} variable. Setting the +\DescRef{\LabelBase.option.numericaldate} option has no effect if this +variable is overridden. The date is usually output as part of the reference +line. If all other elements of the reference line are empty, a date line +consisting of the location and the date is printed instead. However in this +case, the settings of the \DescRef{\LabelBase.option.refline} option described +below also affect the date line. See the description of variable +\DescRef{\LabelBase.variable.place} on +\DescPageRef{\LabelBase.variable.placeseparator} for more information about +the location. +% +\EndIndexGroup +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{refline}{selection} +\end{Declaration} +\BeginIndex{}{reference line}% +\index{business line|see{reference line}}% +Business letters in particular often contain an area with information such as +an identification code\Index{identification code}, phone +extension\Index{phone>extension}, customer number\Index{customer number}, +invoice number\Index{invoice number}, or references to previous letters. This +guide calls this area the \emph{reference-field line}\textnote{reference-field + line}, or simply the \emph{reference line}. + +With \Class{scrlttr2} and \Package{scrletter}, the header, footer, address, +and extra sender information can extend left and right beyond the normal +type area. The +\OptionValue{refline}{wide}\important{\OptionValue{refline}{wide}} option +specifies that this should also apply to the reference-field line. Normally, +the reference-field line contains at least the date, but it can hold +additional data. Available values for this option are shown in +\autoref{tab:\LabelBase.refline}. The default is \PValue{narrow} and +\PValue{dateright}\ChangedAt{v3.09}{\Class{scrlttr2}}.% +% +\begin{table} + \caption[{Available values for the \Option{refline} option with + \Class{scrlttr2}}]{Available values for the \Option{refline} option to set + the width of the reference line with \Class{scrlttr2}} + \label{tab:\LabelBase.refline} + \begin{desctabular} + \pventry{dateleft}{\ChangedAt{v3.09}{\Class{scrlttr2}}% + The date is placed leftmost in the reference line.}% + \pventry{dateright}{\ChangedAt{v3.09}{\Class{scrlttr2}}% + The date is placed rightmost in the reference line.}% + \pventry{narrow}{The reference line is restricted to the type area.}% + \pventry{nodate}{\ChangedAt{v3.09}{\Class{scrlttr2}}% + The date is not placed automatically into the reference line.}% + \pventry{wide}{The width of the reference line depends on the positions of + the address and extra sender information.}% + \end{desctabular} +\end{table} + +\begin{Declaration} + \Variable{yourref}% + \Variable{yourmail}% + \Variable{myref}% + \Variable{customer}% + \Variable{invoice}% +\end{Declaration} +You can manage the typical contents of the reference-field line with five +variables: \Variable{yourref}, \Variable{yourmail}, \Variable{myref}, +\Variable{customer} and \Variable{invoice}. Their meanings are listed in +\autoref{tab:\LabelBase.variables} on \autopageref{tab:\LabelBase.variables}. +Each variable has also a predefined \PName{description}, shown in +\autoref{tab:\LabelBase.reflineTerm}. How to add more variables to the +reference-field line is explained in \autoref{sec:scrlttr2-experts.variables} +starting on \DescPageRef{scrlttr2-experts.cmd.newkomavar}.% +% +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside}[{Default descriptions of variables in the + reference line}]{Default descriptions of typical variables in the + reference line using language-dependent commands}% + [l] + \begin{tabular}[t]{lll} + \toprule + name & description & English default text\\ + \midrule + \Variable{yourref} & \DescRef{scrlttr2-experts.cmd.yourrefname} & Your reference \\ + \Variable{yourmail} & \DescRef{scrlttr2-experts.cmd.yourmailname} & Your letter from \\ + \Variable{myref} & \DescRef{scrlttr2-experts.cmd.myrefname} & Our reference \\ + \Variable{customer} & \DescRef{scrlttr2-experts.cmd.customername} & Customer No.: \\ + \Variable{invoice} & \DescRef{scrlttr2-experts.cmd.invoicename} & Invoice No.: \\ + \DescRef{\LabelBase.variable.date} & \DescRef{scrlttr2-experts.cmd.datename} & date \\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:\LabelBase.reflineTerm} +\end{table} + +\BeginIndexGroup +\BeginIndex{FontElement}{refname}\LabelFontElement{refname}% +\BeginIndex{FontElement}{refvalue}\LabelFontElement{refvalue}% +You\ChangedAt{v2.97c}{\Class{scrlttr2}} can change the font style and colour +of the \PName{description} and \PName{content} of the fields in the reference +line with the \FontElement{refname}% +\important[i]{\FontElement{refname}\\\FontElement{refvalue}} and +\FontElement{refvalue} elements using the \DescRef{\LabelBase.cmd.setkomafont} +and \DescRef{\LabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}). The defaults for both elements are +listed in \autoref{tab:\LabelBase.refnamerefvalue}.% +\begin{table}[tp] +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside} + [{Default font styles for elements in the reference line}]{Default font + style settings for the elements in the reference line% + \label{tab:\LabelBase.refnamerefvalue}} + [l] + \begin{tabular}[t]{ll} + \toprule + element & default configuration \\ + \midrule + \DescRef{\LabelBase.fontelement.refname} & \Macro{sffamily}\Macro{scriptsize} \\ + \DescRef{\LabelBase.fontelement.refvalue} & \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table}% +% +\EndIndexGroup + + +\begin{Declaration} + \Variable{placeseparator}% +\end{Declaration}% +\BeginIndex{Variable}{place}% +If all variables in the reference-field line, with the exception of +\DescRef{\LabelBase.variable.date}% +\important{\DescRef{\LabelBase.variable.date}}\IndexVariable{date}, are empty, +no actual reference line is output. Instead, a date line consisting only of a +location\Index{location} and a date\Index{date} is output. The \PName{content} +of the \DescRef{\LabelBase.variable.place} variable contains the location. The +delimiter, which in this case is placed after the location, is specified by +the \PName{content} of the \Variable{placeseparator} variable. The +default\textnote{default} \PName{content} of the delimiter is a comma followed +by a non-breaking space. If the location is empty, the delimiter is not +output. The default \PName{content} of \DescRef{\LabelBase.variable.date} is +\Macro{today}\IndexCmd{today} and depends on the setting of the +\DescRef{\LabelBase.option.numericaldate} option (see +\DescPageRef{\LabelBase.option.numericaldate}). + +Starting with version~3.09\ChangedAt{v3.09}{\Class{scrlttr2}}, the location +and date are no longer required to be right-aligned. Instead, when a date +line is used, its alignment is specified by the date setting of the +\DescRef{\LabelBase.option.refline} option, as listed in +\autoref{tab:\LabelBase.refline}. + +\BeginIndexGroup +\BeginIndex{FontElement}{placeanddate}\LabelFontElement{placeanddate}% +If\ChangedAt{v3.12}{\Class{scrlttr2}} such a date line is output with a +location rather than a reference-field line, the font setting of the +\DescRef{\LabelBase.fontelement.refvalue} element does not apply. In this +case, the \FontElement{placeanddate}\important{\FontElement{placeanddate}} +element is used. You can change the empty default of this font element as +usual with the \DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}).% +\EndIndexGroup + +\begin{Example} + Now Mr Public also sets the variable for the location:% + \lstinputcode[xleftmargin=1em]{letter-20.tex}% + As seen in \autoref{fig:\LabelBase.letter-20}, the location appears + in front of the date, followed by the automatic delimiter. This date has + been defined explicitly so that the original date is maintained in any later + \LaTeX{} run rather than using the date of the \LaTeX{} run. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Example: letter with extended sender, logo, + recipient, extra sender information, location, date, opening, + text, closing, signature, postscript, distribution list, enclosure, + and hole-punch mark}] + {result of a short letter with extended sender, logo, recipient, + extra sender information, location, date, opening, text, closing, + signature, postscript, distribution list, enclosure and hole-punch + mark}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-20}} + \end{captionbeside} + \label{fig:\LabelBase.letter-20} + \end{figure} +\end{Example} +% +\EndIndexGroup +\EndIndexGroup +\EndIndexGroup + + +\begin{Declaration} + \Variable{title}% +\end{Declaration} +With \KOMAScript{}, you can also give a letter a title\Index{title}. The title +is centred, using the \Macro{LARGE} font size, and placed directly beneath the +reference-field line. + +\BeginIndex{FontElement}{lettertitle}\LabelFontElement{lettertitle}% +\BeginIndex{FontElement}{title}\LabelFontElement{title}% +You can change the font style for the +\FontElement{lettertitle}\important{\FontElement{lettertitle}} element with +the \DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}). Font size declarations are +allowed. The \Macro{LARGE} font size always precedes the font selection in +\KOMAScript{}, and is therefore not part of the default setting +\Macro{normalcolor}\Macro{sffamily}\Macro{bfseries}. With \Class{scrlttr2}, +you can also use \FontElement{title}\important{\FontElement{title}} as an +alias for \FontElement{lettertitle}. This is not possible when using +\Package{scrletter} with a \KOMAScript{} class because these classes already +define a \FontElement{title} element for the document title with different +setting.% +\EndIndex{FontElement}{title}% +\EndIndex{FontElement}{lettertitle}% +\begin{Example} + Suppose you are writing a reminder letter. You set a corresponding title: +\begin{lstlisting} + \setkomavar{title}{Reminder} +\end{lstlisting} + This way the recipient should recognize the reminder as such. +\end{Example} +As shown in the example, the \PName{content} of the variable defines the +title. \KOMAScript{} does not use the \PName{description}.% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{subject}{selection}% + \Variable{subject}% + \Variable{subjectseparator}% +\end{Declaration} +\BeginIndex{}{subject}% +To include a subject, define the \PName{content} of the \Variable{subject} +variable accordingly. First of all, you can use the +\OptionValue{subject}{true}\important{\OptionValue{subject}{titled}} option, +to choose whether the subject should be preceded with a \PName{description} or +not. If you use the \PName{description} the \PName{content} of the +\Variable{subjectseparator}\Index{separator} variable is output between the +\PName{description} and the \PName{content} of the \Variable{subject} +variable. The default \PName{content} of \PName{subjectseparator} consists of +a colon followed by a space. + +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside}{Default descriptions of variables for the subject} + [l] + \begin{tabular}[t]{lll} + \toprule + variable name & description \\ + \midrule + \Variable{subject} & \DescRef{\LabelBase.cmd.usekomavar*}\PParameter{subjectseparator}% + \texttt{\%} \\ + & \texttt{\quad}% + \DescRef{\LabelBase.cmd.usekomavar}\PParameter{subjectseparator} \\ + \Variable{subjectseparator} & \DescRef{scrlttr2-experts.cmd.subjectname} \\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:\LabelBase.subjectTerm} +\end{table} + +Additionally, you can use \OptionValue{subject}{afteropening}% +\important{\OptionValue{subject}{afteropening}\\ + \OptionValue{subject}{beforeopening}} to place the subject after the letter +opening instead of the default \OptionValue{subject}{beforeopening}. You can +also specify other formatting\important{\OptionValue{subject}{underlined}\\ + \OptionValue{subject}{centered}\\ + \OptionValue{subject}{right}} for the subject with +\OptionValue{subject}{underlined}, \OptionValue{subject}{centered}, or +\OptionValue{subject}{right}\ChangedAt{v2.97c}{\Class{scrlttr2}}. The +available values are listed in \autoref{tab:\LabelBase.subject}. +Note\textnote{Attention!} that with the \OptionValue{subject}{underlined} +option, the whole subject must fit onto one line. The defaults are +\OptionValue{subject}{left}, \OptionValue{subject}{beforeopening}, and +\OptionValue{subject}{untitled}.% +% +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside} + [{Available values for the \Option{subject} option with \Class{scrlttr2}}] + {Available values for the \Option{subject} option for the position and + formatting of the subject with + \Class{scrlttr2}\label{tab:\LabelBase.subject}}% + [l] + \begin{minipage}[t]{.6\linewidth} + \begin{desctabular}[t] + \pventry{afteropening}{subject after opening}% + \pventry{beforeopening}{subject before opening}% + \pventry{centered}{subject centred}% + \pventry{left}{subject left-justified}% + \pventry{right}{subject right-justified}% + \pventry{titled}{add title/description to subject}% + \pventry{underlined}{set subject underlined (see note in text)}% + \pventry{untitled}{do not add title/description to subject}% + \end{desctabular} + \end{minipage} + \end{captionbeside} +\end{table} + +\BeginIndexGroup +\BeginIndex{FontElement}{lettersubject}\LabelFontElement{lettersubject}% +\BeginIndex{FontElement}{subject}\LabelFontElement{subject}% +The subject line is set in a separate font\Index{font>style}. To change this, +use the \DescRef{\LabelBase.cmd.setkomafont} and +\DescRef{\LabelBase.cmd.addtokomafont} commands (see +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}). For the +\FontElement{lettersubject}\important{\FontElement{lettersubject}} element, +the default font is \Macro{normalcolor}\Macro{bfseries}. With the +\Class{scrlttr2} class, you can also use +\FontElement{subject}\important{\FontElement{subject}} as an alias of +\FontElement{lettersubject}. This is not possible with the \Package{scrletter} +package when using a \KOMAScript{} class, because these classes already define +a \FontElement{subject} element for the document title with different +settings.% +\EndIndexGroup + +\begin{Example} + Mr Public now includes a subject. As a traditionalist, he also wants the + subject to be labelled accordingly and therefore sets the corresponding + option:% + \lstinputcode[xleftmargin=1em]{letter-21.tex}% + The result is shown in \autoref{fig:\LabelBase.letter-21}. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Example: letter with extended sender, logo, + recipient, extra sender information, place, date, subject, + opening, text, closing, signature, postscript, distribution list, + enclosure, and hole-punch mark}] + {result of a short letter with extended sender, logo, recipient, + extra sender information, place, date, subject, opening, text, + closing, signature, postscript, distribution list, enclosure and + hole-punch mark}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-21}} + \end{captionbeside} + \label{fig:\LabelBase.letter-21} + \end{figure} +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{firstfoot}{simple switch} +\end{Declaration} +\BeginIndex{}{letterhead page>footer}% +This\ChangedAt{v2.97e}{\Class{scrlttr2}} option determines whether the footer +for the letterhead page is output. Switching off the letterhead page footer +with \OptionValue{firstfoot}{false}\important{\OptionValue{firstfoot}{false}}, +has an effect when the \DescRef{\LabelBase.option.enlargefirstpage} option +(see \DescPageRef{\LabelBase.option.enlargefirstpage}) is used at the same +time, as this will logically extend the page downwards. In this case, the +distance that is ordinarily between type area and the footer becomes the +distance between the end of the type area and the bottom of the page. + +The option recognizes the standard values for simple switches listed in +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. The default +is to include the letterhead page footer. +\EndIndexGroup + + +\begin{Declaration} + \Variable{firstfoot}% +\end{Declaration}% +\BeginIndex{}{letterhead page>footer}% +The footer of the first page is empty by default. +However\ChangedAt{v3.08}{\Class{scrlttr2}}, you can specify a new footer +in the \PName{content} of the \Variable{firstfoot} variable. \KOMAScript{} +does not use the \PName{description} of the variable. + +\BeginIndex{Variable}{frombank}% +\begin{Example} + You want to put the \PName{content} of the \Variable{frombank} variable + (i.\,e. the bank account details) in the footer of the first page. The + double backslash should be replaced with a comma: +\begin{lstcode} + \setkomavar{firstfoot}{% + \parbox[b]{\linewidth}{% + \centering\def\\{, }\usekomavar{frombank}% + }% + } +\end{lstcode} + You can also define your own variable for the separator. I leave + this as an exercise for the reader. + + If you want to create a footer in order to counterbalance the letterhead, you + can do so, for example, as follows: +\begin{lstcode} + \setkomavar{firstfoot}{% + \parbox[t]{\textwidth}{\footnotesize + \begin{tabular}[t]{l@{}}% + \multicolumn{1}{@{}l@{}}{Partners:}\\ + Jim Smith\\ + Russ Mayer + \end{tabular}% + \hfill + \begin{tabular}[t]{l@{}}% + \multicolumn{1}{@{}l@{}}{Managing Director:}\\ + Lisa Mayer\\[1ex] + \multicolumn{1}{@{}l@{}}{Court Jurisdiction:}\\ + Great Plains + \end{tabular}% + \ifkomavarempty{frombank}{}{% + \hfill + \begin{tabular}[t]{l@{}}% + \multicolumn{1}{@{}l@{}}{\usekomavar*{frombank}:}\\ + \usekomavar{frombank} + \end{tabular}% + }% + }% + } +\end{lstcode} + This example originally came from Torsten Kr\"uger. You should + consider placing a definition intended for multiple use in different + documents in a separate \File{lco} file\Index{lco file=\File{lco} file}. +\begin{lstcode} + \setkomavar{frombank}{Account No. 12345678\\ + Buffoon Bank\\ + Bank Code: 65-43-21} +\end{lstcode} + can then be used to set the bank details in the document. +% However depending on your settings, there may not be sufficient space +% for such a large footer, and it may therefore be placed too low on the +% page. In such a case, you can adjust its vertical position with the +% pseudo-length \PLength{firstfootvpos}\IndexPLength{firstfootvpos}. +\end{Example} + +The previous example uses a multi-line footer. With a compatibility setting +of version 2.9u (see \DescRef{\LabelBase.option.version} in +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}) the space is generally insufficient. +In this case, you should reduce \PLength{firstfootvpos} (see +\DescPageRef{scrlttr2-experts.plength.firstfootvpos}) appropriately.% +\EndIndexGroup + +\begin{Declaration} + \Variable{frombank} +\end{Declaration}% +\BeginIndex{}{letterhead page>footer}% +The \Variable{frombank} variable used in the previous example +occupies a special position. It is not currently used internally. However, you +can use it to put the bank information\Index{bank information} in the +extra sender information field or in the footer, as in the example (see +the variable \DescRef{\LabelBase.variable.location}, +\DescPageRef{\LabelBase.variable.location}).% +% +\EndIndexGroup +% +\EndIndexGroup + +\LoadCommonFile{parmarkup} % \section{Paragraph Markup} + +\LoadCommonFile{oddorevenpage} % \section{Detection of Odd and Even Pages} + + +\section{Headers and Footers with the Default Page Style} +\seclabel{pagestyle} +\BeginIndexGroup +\BeginIndex{}{page>style}% +\BeginIndex{}{page>header}% +\BeginIndex{}{page>footer}% + +One of the general properties of a document is its page style. In \LaTeX{} +this mostly consists of the contents of headers and footers. +As\textnote{Attention!} already mentioned in +\autoref{sec:\LabelBase.firstpage}, the header and footer of the letterhead +page are treated as elements of the letterhead page. Therefore they do not +depend on the settings of the page style. So this section describes the page +styles of the subsequent pages of a letter after the letterhead page. For +one-sided letters, this is the page style of the second sheet. For two-sided +letters, this is also the page style of all verso pages. + + +\begin{Declaration} + \Macro{letterpagestyle} +\end{Declaration} +The\ChangedAt{v3.19}{\Class{scrlttr2}\and \Package{scrletter}} default page +style for letters is specified by the contents of the \Macro{letterpagestyle} +command. By default\textnote{default}, +\Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} leaves this command empty. This +means that the page style of letters is the same as in the rest of the +document. This is useful because \Class{scrlttr2} is intended for letter-only +documents, and it is easier to define the page style for all letters globally, +using \DescRef{\LabelBase.cmd.pagestyle} as usual. + +Since both the \DescRef{\LabelBase.pagestyle.plain} and the +\DescRef{\LabelBase.pagestyle.headings} page styles of other classes differs +from the page style necessary for letters, the +\Package{scrletter}\OnlyAt{\Package{scrletter}}\textnote{default} package +defines \Macro{letterpagestyle} with to be +\DescRef{\LabelBase.pagestyle.plain.letter}\IndexPagestyle{plain.letter}% +\important{\DescRef{\LabelBase.pagestyle.plain.letter}}. This causes all +letters to use the +\hyperref[desc:\LabelBase.pagestyle.plain.letter]{\PageStyle{plain}} style of +the \DescRef{\LabelBase.pagestyle.letter}\IndexPagestyle{letter} page style +pair, regardless of the page style of the rest of the document. See +\autoref{sec:scrlttr2-experts.pagestyleatscrletter} for more information about +the characteristics of the page style of the \Package{scrletter} package. +\begin{Example} + You are using the \Package{scrletter} package and want letters to use the + same page style that was set for the rest of the document with + \DescRef{\LabelBase.cmd.pagestyle}. To do this, put the command +\begin{lstcode} + \renewcommand*{\letterpagestyle}{} +\end{lstcode} + in your document preamble. Notice the star in \Macro{renewcommand*}. +\end{Example} +Of course, if you use \DescRef{\LabelBase.cmd.pagestyle} or +\DescRef{\LabelBase.cmd.thispagestyle} inside a letter, this will take +precedence over the page style set in \Macro{begin}\PParameter{letter} with +\Macro{letterpagestyle}.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{headsepline}{simple switch}% + \OptionVName{footsepline}{simple switch} +\end{Declaration} +With these options \Class{scrlttr2}\OnlyAt{scrlttr2} can select whether to put +a separator rule\Index{line>separator}\Index{rule>separator} below the header +or above the footer, respectively, on subsequent pages. This option acccepts +the standard values for simple switches listed in +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. +Activating\important{\OptionValue{headsepline}{true}} the \Option{headsepline} +option enables a rule below the header. +Activating\important{\OptionValue{footsepline}{true}} the \Option{footsepline} +option enables a rule above the footer. Deactivating the options disables the +corresponding rules. + +Of course, the \Option{headsepline} and \Option{footsepline} options have no +effect on the \DescRef{\LabelBase.pagestyle.empty}% +\important{\DescRef{\LabelBase.pagestyle.empty}} page style (see later in this +section). This page style explicitly does not use headers or footers. + +Typographically\important{\DescRef{\LabelBase.pagestyle.headings}\\ + \DescRef{\LabelBase.pagestyle.myheadings}\\ + \DescRef{\LabelBase.pagestyle.plain}} speaking, such a rule creates an +optical effect of making the header or footer appear to be closer to the text +area. This does not mean that the distance between the header or footer and +the text should be increased. Instead, they should be seen as part of the text +body\Index{text>body} when calculating the type area. To achieve this +\Class{scrlttr2} uses the \Option{headsepline} class option to automatically +pass the \DescRef{typearea.option.headinclude}% +\important{\DescRef{typearea.option.headinclude}} package option to the +\hyperref[cha:typearea]{\Package{typearea}} package. The same applies to +\DescRef{\LabelBase.option.footsepline} for +\DescRef{typearea.option.footinclude}% +\important{\DescRef{typearea.option.footinclude}}. + +The options themselves do not automatically recalculate the type area. To +recalculate the type area, see the \DescRef{typearea.option.DIV} option with +the \PValue{last} or \PValue{current} values (see +\DescPageRef{typearea.option.DIV.last}), or the +\DescRef{typearea.cmd.recalctypearea} command (see +\DescPageRef{typearea.cmd.recalctypearea}) in \autoref{cha:typearea}. + +The \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} +package (see \autoref{cha:scrlayer-scrpage}) provides further control over +header and footer rules and you can also combine it with \Class{scrlttr2}. The +\Package{scrletter} package automatically uses +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} to +define the \DescRef{\LabelBase.pagestyle.letter} and +\DescRef{\LabelBase.pagestyle.plain.letter} page styles. + +The\OnlyAt{\Package{scrletter}} \DescRef{\LabelBase.pagestyle.letter} and +\DescRef{\LabelBase.pagestyle.plain.letter} page styles defined by +\Package{scrletter} follow the rules of +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}. This particularly +applies to setting the header and footer rules of the \PageStyle{plain} page +style \DescRef{\LabelBase.pagestyle.plain.letter}. See in +\autoref{sec:scrlayer-scrpage.pagestyle.content}, +\DescPageRef{scrlayer-scrpage.option.headsepline} and +\DescPageRef{scrlayer-scrpage.option.plainheadsepline} the options +\DescRef{scrlayer-scrpage.option.headsepline} and +\DescRef{scrlayer-scrpage.option.plainheadsepline}. Also, settings like +\DescRef{scrlayer-scrpage.option.automark} are of some importance for the +\DescRef{\LabelBase.pagestyle.letter} page style.% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{pagenumber}{position} +\end{Declaration} +With this option you can select if and where a page number should be placed on +subsequent pages. In \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} this option +affects the page styles\important{\DescRef{\LabelBase.pagestyle.headings}\\ + \DescRef{\LabelBase.pagestyle.myheadings}\\ + \DescRef{\LabelBase.pagestyle.plain}} +\DescRef{\LabelBase.pagestyle.headings}, +\DescRef{\LabelBase.pagestyle.myheadings} and +\DescRef{\LabelBase.pagestyle.plain}; in +\Package{scrletter}\OnlyAt{\Package{scrletter}}, it affects the +\DescRef{\LabelBase.pagestyle.letter} and +\DescRef{\LabelBase.pagestyle.plain.letter} page styles. It also affects the +default page styles of the +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}}% +\IndexPackage{scrlayer-scrpage} package, as long as it is set before that +package is loaded (see \autoref{cha:scrlayer-scrpage}). It accepts values that +influence only the horizontal position, only the vertical position, or both +positions simultaneously. Available values are listed in +\autoref{tab:\LabelBase.pagenumber}. The default is \PValue{botcenter}. + +\begin{table} + \caption[{Available values for the \Option{pagenumber} option with + \Class{scrlttr2}}]{Available values for the \Option{pagenumber} option to + position the page number in the \PageStyle{headings}, + \PageStyle{myheadings}, and \PValue{plain} page styles with + \Class{scrlttr2}} + \label{tab:\LabelBase.pagenumber} + \begin{desctabular} + \entry{\PValue{bot}, \PValue{foot}}{% + page number in footer, horizontal position unchanged}% + \entry{\PValue{botcenter}, \PValue{botcentered}, \PValue{botmittle}, + \PValue{footcenter}, \PValue{footcentered}, \PValue{footmiddle}}{% + page number in footer, centred}% + \entry{\PValue{botleft}, \PValue{footleft}}{% + page number in footer, left-justified}% + \entry{\PValue{botright}, \PValue{footright}}{% + page number in footer, right-justified}% + \entry{\PValue{center}, \PValue{centered}, \PValue{middle}}{% + page number centred horizontally, vertical position unchanged}% + \entry{\PValue{false}, \PValue{no}, \PValue{off}}{% + no page number}% + \entry{\PValue{head}, \PValue{top}}{% + page number in header, horizontal position unchanged}% + \entry{\PValue{headcenter}, \PValue{headcentered}, \PValue{headmiddle}, + \PValue{topcenter}, \PValue{topcentered}, \PValue{topmiddle}}{% + page number in header, centred}% + \entry{\PValue{headleft}, \PValue{topleft}}{% + page number in header, left-justified}% + \entry{\PValue{headright}, \PValue{topright}}{% + page number in header, right-justified}% + \entry{\PValue{left}}{% + page number left, vertical position unchanged}% + \entry{\PValue{right}}{% + page number right, vertical position unchanged}% + \end{desctabular} +\end{table} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{pagestyle}\Parameter{page style}% + \Macro{thispagestyle}\Parameter{local page style} +\end{Declaration}% +\BeginIndex{Pagestyle}{empty}% +\BeginIndex{Pagestyle}{plain}% +\BeginIndex{Pagestyle}{headings}% +\BeginIndex{Pagestyle}{myheadings}% +Letters written with \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} have four +different page styles available. In contrast, +\Package{scrletter}\OnlyAt{\Package{scrletter}} defines only two of its own +page styles. +\begin{description}\setkomafont{descriptionlabel}{} +\item[{\PageStyle{empty}}] + \LabelPageStyle{empty} is the page style where the headers and footers of + subsequent pages are completely empty. This page style is also automatically + used for the first page of the letter because the header and footer of this + page are set by other means, using + \DescRef{\LabelBase.cmd.opening}\IndexCmd{opening} (see + \autoref{sec:\LabelBase.firstpage}, \DescPageRef{\LabelBase.cmd.opening}). +\item[{\PageStyle{headings}}] + \LabelPageStyle{headings} is, for \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}}, + the page style for automatic running heads on subsequent pages. The sender's + name from the \DescRef{\LabelBase.variable.fromname}\IndexVariable{fromname} + variable and the subject from the + \DescRef{\LabelBase.variable.subject}\IndexVariable{subject} variable are + used to set the marks (see \autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromname} and + \DescPageRef{\LabelBase.variable.subject}). Where exactly these marks and + page numbers are placed depends on the + \DescRef{\LabelBase.option.pagenumber} described above and the + \PName{content} of the + \DescRef{\LabelBase.variable.nexthead}\IndexVariable{nexthead} and + \DescRef{\LabelBase.variable.nextfoot}\IndexVariable{nextfoot} variables. An + author can also change these marks manually after the + \DescRef{\LabelBase.cmd.opening} command. As usual, the + \DescRef{\LabelBase.cmd.markboth} and \DescRef{\LabelBase.cmd.markright} + commands are available, as is \DescRef{scrlayer-scrpage.cmd.markleft} if you + use \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + \IndexPackage{scrlayer-scrpage}% + \important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} + (see \autoref{sec:scrlayer-scrpage.pagestyle.content}, + \DescPageRef{scrlayer-scrpage.cmd.automark}). + + Since \Package{scrletter}\OnlyAt{scrletter} uses + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} internally, any + page style \DescRef{maincls.pagestyle.headings} provided by the class are + redefined as an alias of \DescRef{scrlayer-scrpage.pagestyle.scrheadings}. + You can find more about this page style in \autoref{cha:scrlayer-scrpage} on + \DescPageRef{scrlayer-scrpage.pagestyle.scrheadings}. +\item[{\PageStyle{letter}}] + \LabelPageStyle{letter}% + Since the \PageStyle{headings} page style is generally already in use by + the classes, the \Package{scrletter}\OnlyAt{scrletter} package instead + defines the \PageStyle{letter} page style. This is accomplished with the + help of \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} in + \autoref{cha:scrlayer-scrpage}, \autopageref{cha:scrlayer-scrpage}. With the + \OptionValueRef{scrlayer-scrpage}{automark}{true}% + \important{\OptionValueRef{scrlayer-scrpage}{automark}{true}}% + \IndexOption{automark} setting enabled, \PageStyle{letter} then assumes the + role played by \PageStyle{headings} in \Class{scrlttr2}. With + \OptionValueRef{scrlayer-scrpage}{automark}{false}% + \important{\OptionValueRef{scrlayer-scrpage}{automark}{false}}% + \IndexOption{automark} set, \PageStyle{letter} assumes the role of + \PageStyle{myheadings}. + + When\textnote{Attention!} you use + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} with + \Package{scrletter}, you cannot use the obsolete + \Package{scrpage2}\IndexPackage{scrpage2} package or the + \Package{fancyhdr}\IndexPackage{fancyhdr} package, which is incompatible + with \KOMAScript{}. +\item[{\PageStyle{myheadings}}] + \LabelPageStyle{myheadings}% + in \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} is the page style for manual + running heads on subsequent pages. Unlike \PValue{headings}, you must set + the marks yourself with the + \DescRef{\LabelBase.cmd.markboth}\IndexCmd{markboth} and + \DescRef{\LabelBase.cmd.markright}\IndexCmd{markright} commands. When you + use \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}, + \DescRef{scrlayer-scrpage.cmd.markleft}\IndexCmd{markleft} is also + available. + + With the \Package{scrletter}\OnlyAt{\Package{scrletter}} package, the + \PageStyle{letter} page style also assumes the role of + \PageStyle{myheadings}. +\item[{\PageStyle{plain}}] + \LabelPageStyle{plain}% + is the default page style for \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}}, + which does not use any headers on subsequent pages and only outputs + a single page number. Where this is placed depends on the + \DescRef{\LabelBase.option.pagenumber} option explained above. + + Since \Package{scrletter}\OnlyAt{scrletter} uses + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} internally, the + \DescRef{maincls.pagestyle.plain} page style is redefined as an alias of + \DescRef{scrlayer-scrpage.pagestyle.plain.scrheadings}. You can find more + about this page style in \autoref{cha:scrlayer-scrpage} on + \DescPageRef{scrlayer-scrpage.pagestyle.scrheadings}. +\item[{\PageStyle{plain.letter}}] + \LabelPageStyle{plain.letter}% + Since the \PageStyle{plain} page style is generally already in use by the + classes, the \Package{scrletter}\OnlyAt{scrletter} defines a + \PageStyle{plain.letter} page style instead. This is accomplished with the + help of \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}. + When\textnote{Attention!} you use + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} with + \Package{scrletter}, you cannot use the obsolete + \Package{scrpage2}\IndexPackage{scrpage2} package or the + \Package{fancyhdr}\IndexPackage{fancyhdr} package, which is incompatible + with \KOMAScript{}. +\end{description} + +The appearance of the page styles is also influenced by +the\important{\DescRef{\LabelBase.option.headsepline}\\ + \DescRef{\LabelBase.option.footsepline}} +\DescRef{\LabelBase.option.headsepline}\IndexOption{headsepline} and +\DescRef{\LabelBase.option.footsepline}\IndexOption{footsepline} options +described above. The page style beginning with the current page is changed +using \Macro{pagestyle}. In contrast, \Macro{thispagestyle} changes only the +page style of the current page. The\textnote{Attention!} letter class itself +uses \Macro{thispagestyle}\PParameter{empty} within +\DescRef{\LabelBase.cmd.opening}\IndexCmd{opening} for the first page of the +letter. + +\BeginIndexGroup +\BeginIndex[indexother]{}{font>style}% +\BeginIndex{FontElement}{pageheadfoot}\LabelFontElement{pageheadfoot}% +\BeginIndex{FontElement}{pagefoot}\LabelFontElement{pagefoot}% +\BeginIndex{FontElement}{pagenumber}\LabelFontElement{pagenumber}% +To changing the font style of headers or footers, you should use the user +interface described in \autoref{sec:maincls.textmarkup}. The header and footer +use the same element, which you can refer to by either +\FontElement{pageheadfoot}\important{\FontElement{pagehead}} or +\FontElement{pagehead}. The\ChangedAt{v3.00}{\Class{scrlttr2}} +\FontElement{pagefoot}\important{\FontElement{pagefoot}} element +additionally controls the formatting of the footer. This element is applied +after \FontElement{pageheadfoot} in the +\DescRef{\LabelBase.variable.nextfoot}\IndexVariable{nextfoot} variable or +when \Package{scrlayer-scrpage}\IndexPackage{scrlayer-scrpage} page styles are +used (see \autoref{cha:scrlayer-scrpage}, +\DescPageRef{scrlayer-scrpage.fontelement.pagefoot}). The element for the page +number within the header or footer is called +\FontElement{pagenumber}\important{\FontElement{pagenumber}}. The default +settings are listed in \autoref{tab:maincls.defaultFontsHeadFoot}, +\autopageref{tab:maincls.defaultFontsHeadFoot}. Please also note the example +from \autoref{sec:maincls.pagestyle}, \PageRefxmpl{maincls.cmd.pagestyle}. +% +\EndIndexGroup +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{markboth}\Parameter{left mark}\Parameter{right mark}% + \Macro{markright}\Parameter{right mark} +\end{Declaration} +In most cases, \KOMAScript{}'s options and variables should be quite adequate +for creating headers\Index{header} and footers\Index{footer} for the +subsequent pages, all the more so because, in addition to \Macro{markboth} and +\Macro{markright}, you can change the sender information that \Class{scrlttr2} +or \Package{scrletter} puts in the header. You can, in particular, use the +\Macro{markboth}\IndexCmd{markboth} and \Macro{markright}\IndexCmd{markright} +commands with the \PageStyle{myheadings}\IndexPagestyle{myheadings}% +\important{\PageStyle{myheadings}} pagestyle. Of course, if you use the +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} +package, this is also valid for the +\PValue{scrheadings}\IndexPagestyle{scrheadings} page style. In that case, the +\DescRef{scrlayer-scrpage.cmd.markleft}\IndexCmd{markleft} command is also +available. + +\begin{Declaration} + \Variable{nexthead}% + \Variable{nextfoot}% +\end{Declaration} +At times, however, you may want to the header or the footer of subsequent pages +to more closely resemble the letterhead page. In these cases, you must dispense +with the predefined options that can be selected with the +\DescRef{\LabelBase.option.pagenumber}\IndexOption{pagenumber} option described above. +Instead, you can customise the header and footer of subsequent pages using the +\DescRef{\LabelBase.pagestyle.headings}\IndexPagestyle{headings}% +\important{\DescRef{\LabelBase.pagestyle.headings}, + \DescRef{\LabelBase.pagestyle.myheadings}} or +\DescRef{\LabelBase.pagestyle.myheadings}\IndexPagestyle{myheadings} page styles with \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}}, +and the \DescRef{\LabelBase.pagestyle.letter}% +\IndexPagestyle{letter}\important{\DescRef{\LabelBase.pagestyle.letter}} page style +with \Package{scrletter}\OnlyAt{\Package{scrletter}}. To do so, you create the +structure you want in the \PName{content} of +the\ChangedAt{v3.08}{\Class{scrlttr2}} \Variable{nexthead} or +\Variable{nextfoot} variables. Within the \PName{content} of +\Variable{nexthead} and \Variable{nextfoot} you can, for example, use the \Macro{parbox} +command to place several boxes next to or beneath each other (see \cite{latex:usrguide}). More advanced users should +be able to create their own headers and footers. Of course, you can +and should also make use of additional variables using +\DescRef{\LabelBase.cmd.usekomavar}. \KOMAScript{} does not use the +\PName{description} for either variable. +% +%Only\textnote{Attention!} for compatibility reason the deprecated commands +%\Macro{nexthead}\IndexCmd[indexmain]{nexthead} and +%\Macro{nextfoot}\IndexCmd[indexmain]{nextfoot} of former \Class{scrlttr2} +%releases before 3.08 are also implemented. Nevertheless, you should not use +%those.% +% +\EndIndexGroup +\EndIndexGroup +% +\EndIndexGroup + + +\LoadCommonFile{interleafpage}% \section{Interleaf Pages} + +\LoadCommonFile{footnotes}% \section{Footnotes} + +\LoadCommonFile{lists}% \section{Lists} + + +\section{Mathematics} +\seclabel{math}% +\BeginIndexGroup +\BeginIndex{}{equations}% +\BeginIndex{}{formulas}% +\BeginIndex{}{mathematics}% + +The \KOMAScript{} classes do not provide their own maths environments. +Instead, \KOMAScript{} relies completely on the maths features of the \LaTeX{} +kernel. However\textnote{Attention!}, since numbered equations and formulas +are very unusual in letters, \KOMAScript{} does not actively support them. +Therefore, the \DescRef{maincls.option.leqno} and +\DescRef{maincls.option.fleqn} options for \Class{scrbook}, \Class{scrreprt}, +and \Class{scrartcl}, documented in \autoref{sec:maincls.math}, are not +available with \Class{scrlttr2}. + +You will not find a description here of the maths environments of the \LaTeX{} +kernel, that is \Environment{displaymath}\IndexEnv{displaymath}, +\Environment{equation}\IndexEnv{equation}, and +\Environment{eqnarray}\IndexEnv{eqnarray}. If you want to use them, consult an +introduction to \LaTeX{} like \cite{lshort}. But\textnote{Hint!} if you want +more than very simple mathematics, you should use the \Package{amsmath} +package (see \cite{package:amsmath}).% +% +\EndIndexGroup + + +\section{Floating Environments for Tables and Figures} +\seclabel{floats} + +Floating environments for tables or figures are very unusual in letters. +Therefore\textnote{Attention!} \Class{scrlttr2} does not provide them. If you +still believe you need them, this often indicates a misuse of the letter +class. In such cases, it is advisable to combine one of the \KOMAScript{} +classes from \autoref{cha:maincls} with the +\Package{scrletter}\important{\Package{scrletter}} package instead. In this +case you, the floating environments documented for the class can also be used +in letters. You could also define your own floating environments with help of +\Package{tocbasic}\important{\Package{tocbasic}} (see \autoref{cha:tocbasic}). + +\LoadCommonFile{marginpar} % \section{Margin Notes} + + +\section{Closing} +\seclabel{closing} +\BeginIndexGroup% +\BeginIndex{}{closing}% +\BeginIndex{}{letter>closing}% +\BeginIndex{}{signature}% +\BeginIndex{}{letter>signature}% + +It has already been mentioned in \autoref{sec:\LabelBase.document}, +\DescPageRef{\LabelBase.cmd.closing} that the letter's closing text is +provided by \DescRef{\LabelBase.cmd.closing}\IndexCmd{closing}. Beneath the +closing text, there is often a space for a handwritten signature, beneath +which there can be a printed name, which serves as a kind of annotation to the +actual signature. + +\begin{Declaration} + \Variable{signature}% +\end{Declaration} +The \Variable{signature} variable contains the printed name or annotation for +the handwritten signature. Its default \PName{content} is the +\DescRef{\LabelBase.cmd.usekomavar}\PParameter{fromname}. This annotation can +consist of multiple lines. In that case, you should separate the individual +lines with double backslashes. Paragraph\textnote{Attention!} breaks in the +signature annotation, however, are not permitted.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{raggedsignature} +\end{Declaration} +The closing phrase and the signature will be typeset in a box. The width of +the box is determined by the length of the longest line in the closing +phrase or signature. + +The \PLength{sigindent}\IndexPLength{sigindent} and +\PLength{sigbeforevskip}\IndexPLength{sigbeforevskip} pseudo-lengths determine +exactly where this box is placed (see \autoref{sec:scrlttr2-experts.closing}, +\DescPageRef{scrlttr2-experts.plength.sigindent}). The \Macro{raggedsignature} +command defines the alignment inside the box. In the default \File{lco} files, +the command is either defined as \Macro{centering} (all besides +\Option{KOMAold}) or \Macro{raggedright} (\Option{KOMAold}). In order to +obtain flush-right or flush-left alignment inside the box, you can redefine +the command in the same way as \DescRef{maincls.cmd.raggedsection} (see the +example in \autoref{sec:maincls.structure}, +\DescPageRef{maincls.cmd.raggedsection}). + +\begin{Example} + Now Mr Public wants to make himself seem really important, and therefore he uses the + signature to show once again that he was formerly a chairman himself. So + he changes \PName{contents} of the + \DescRef{\LabelBase.variable.signature} variable. He also wants the signature + be aligned flush-left and so he also redefines \Macro{raggedsignature}:% + \lstinputcode[xleftmargin=1em]{letter-22}% + See \autoref{fig:\LabelBase.letter-22} for the result. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Example: letter with extended sender, logo, + recipient, extra sender information, place, date, subject, + opening, text, closing, modified signature, postscript, distribution + list, enclosure, and hole-punch mark}] + {result of a short letter with extended sender, logo, recipient, + extra sender information, place, date, subject opening, text, + closing, modified signature, postscript, distribution list, enclosure + and hole-punch mark}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-22}} + \end{captionbeside} + \label{fig:\LabelBase.letter-22} + \end{figure} +\end{Example} + +\iftrue% Umbruchkorrekturtext + The preceding example shows the most important, although not all possible, + elements of a letter. It can, however, serve quite well as a general + template.% +\fi +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Letter Class Option Files} +\seclabel{lcoFile}% +\BeginIndexGroup +\BeginIndex{}{lco file=\File{lco} file}% +\BeginIndex{}{letter class option}% + +Normally, you would not redefine selections like the sender's information +every time you write a letter. Instead, you would reuse a whole set of +parameters for certain occasions. The same applies to the letterhead +and footer used on the first page. Therefore it makes sense to save these +settings in a separate file. For this purpose, \KOMAScript{} offers +\File{lco} files. The \File{lco} suffix is an abbreviation for +\emph{\emph{l}etter \emph{c}lass \emph{o}ption}. + +In an \File{lco} file, you can use all commands available to the document at +the time the \File{lco} file is loaded. You can also use internal commands +available to package writers. For \Class{scrlttr2} and \Package{scrletter}, +these are, in particular, the commands +\DescRef{scrlttr2-experts.cmd.newplength}\IndexCmd{newplength}, +\DescRef{scrlttr2-experts.cmd.setplength}\IndexCmd{setplength}, and +\DescRef{scrlttr2-experts.cmd.addtoplength}\IndexCmd{addtoplength} (see +\autoref{sec:scrlttr2-experts.pseudoLengths}). + +\KOMAScript{} comes provided with some \File{lco} files. The \File{DIN.lco}, +\File{DINmtext.lco}, \File{SNleft.lco}, \File{SN.lco}, \File{UScommercial9}, +\File{UScommercial9DW}, and \File{NF.lco}\ChangedAt{v3.04}{\Class{scrlttr2}} +files serve to adapt \Class{scrlttr2} and \Package{scrletter} to different +standards. They are well suited as templates for your own parameter sets as +you become a \KOMAScript{} expert. The \File{KOMAold.lco} file, on the other +hand, serves to improve compatibility with the old letter class +\Class{scrlettr}. This class was removed from \KOMAScript{} over fifteen years +ago. It is therefore not discussed in any detail. Since this file also +contains internal commands that are not released for package writers, you +should not use this as a template for your own \File{lco} files. You can find +a list of predefined \File{lco} files in \autoref{tab:lcoFiles}, +\autopageref{tab:lcoFiles}. + +If you have defined a parameter set for a letter standard that is not yet +supported by \KOMAScript{}, you are explicitly requested to send this +parameter set to the \KOMAScript{} support address. Please also provide +permission for distribution under the \KOMAScript{} license (see the +\File{lppl.txt} file). If you have the necessary measurements for an +unsupported letter standard but are unable to write a corresponding \File{lco} +file yourself, you can also contact the \KOMAScript{} author, Markus Kohm, +directly. you can find further examples of \File{lco} files, some very +complex, at \cite{homepage} or in \cite{DANTE:TK0203:MJK}. Both sites are +mainly in German. + + +\begin{Declaration} + \Macro{LoadLetterOption}\Parameter{name}% + \Macro{LoadLetterOptions}\Parameter{list of names} +\end{Declaration} +With \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} you can load \File{lco} files +with the \Macro{documentclass} command. To do so, give the name of the +\File{lco} file without the extension as an option\Index{option}. The +\File{lco} file is then loaded directly after the class. The +\Package{scrletter}\textnote{Attention!} package does not offer this option. +To load \File{lco} files, you must use \Macro{LoadLetterOption} or +\Macro{LoadLetterOptions}\ChangedAt{v3.14}{\Class{scrlttr2}}. +This\textnote{Recommendation!} is also recommended for \Class{scrlttr2}. + +You can also use \Macro{LoadLetterOption} and \Macro{LoadLetterOptions} after +\Macro{begin}\PParameter{document}, or even from within another \File{lco} +file. Both commands take the \PName{name} of the \File{lco} file without the +extension. While the argument of \Macro{LoadLetterOption} should be exactly +one \File{lco} file, \Macro{LoadLetterOptions} accepts a comma-separated +\PName{list of names}. The corresponding \File{lco} files with those names are +loaded in the order given by the list. +\begin{Example} + Joe Public also writes a document containing several letters. For most of + them, the default format, which follows the format of the German Institute + for Standardisation, or \emph{Deutsches Institut f\"{u}r Normung} (DIN), is + sufficient. So he starts with: +\begin{lstcode} + \documentclass{scrlttr2} +\end{lstcode} + However, he wants to send one letter in a C6/5 envelope, and so he + uses the \File{DINmtext} variant, in which the + address field appears higher on the page, so that more text + fits on the first page. The fold marks are adjusted so that the + address field still fits the address window in a C6/5 envelope. + He achieves this as follows: +\begin{lstcode} + \begin{letter}{% + Joanna Public\\ + 1 Hillside\\ + SAMPLESTEAD\\ + WX12 3YZ} + \LoadLetterOption{DINmtext} + \opening{Hello,} +\end{lstcode} + Since construction of the first page only really begins with the + \DescRef{\LabelBase.cmd.opening}\IndexCmd{opening} command, you only need to + load the \File{lco} file before this point. In particular, you do not need + to load it before \Macro{begin}\PParameter{letter}. That way the changes + made by loading the \File{lco} file are local to the corresponding letter. +\end{Example} + +If\ChangedAt{v2.97}{\Class{scrlttr2}} an \File{lco} file is loaded via +\Macro{documentclass}, then it must not have the same name as an option. + +\begin{Example} + Since Mr Public often writes letters with the same options and parameters, + he finds it quite annoying to copy this information to each new letter. To + simplify the effort of writing a new letter, he therefore creates an + \File{lco} file:% + \lstinputcode[xleftmargin=1em]{ich.lco}% + With this, the size of his letter from the previous example shrinks + considerably: \lstinputcode[xleftmargin=1em]{letter-23.tex}% + Nevertheless, the result does not change, as shown in + \autoref{fig:\LabelBase.letter-23}. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Example: letter with extended sender, logo, + recipient, extra sender information, place, date, subject, + opening, text, closing, modified signature, postscript, distribution + list, enclosure, and hole-punch mark using an \File{lco} file}] + {result of a short letter with extended sender, logo, recipient, + extra sender information, place, date, subject opening, text, + closing, modified signature, postscript, distribution list, enclosure + and hole-punch mark using an \File{lco} file}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-23}} + \end{captionbeside} + \label{fig:\LabelBase.letter-23} + \end{figure} +\end{Example} + +Note\textnote{Attention!} that immediately after loading the document class, +normally neither a package for the input encoding nor a language package has +been loaded. Because of this, you should use \TeX's 7-bit encoding for all +non-ASCII characters. For example, use ``\Macro{ss}'' to produce a German +``\ss''. + +In \autoref{tab:lcoFiles}, \autopageref{tab:lcoFiles} you can find a list of +all predefined \File{lco} files. If\textnote{Attention!} you use a printer +that has large unprintable areas on the left or right side, you might have +problems with the \Option{SN}\IndexOption{SN} option. Since the Swiss standard +SN~101\,130 stipulates that the address field should be placed 8\Unit{mm} from +the right edge of the paper, the headline and the sender attributes are also +placed at a correspondingly small distance from the paper edge. This also +applies to the reference line when using the +\DescRef{\LabelBase.option.refline}\PValue{=wide} option (see +\autoref{sec:\LabelBase.firstpage}, \DescPageRef{\LabelBase.option.refline}). +If\textnote{Hint!} you have this kind of problem, create your own \File{lco} +file that loads \Option{SN} first and then changes +\PLength{toaddrhpos}\IndexPLength{toaddrhpos} (see +\autoref{sec:scrlttr2-experts.addressee}, +\DescPageRef{scrlttr2-experts.plength.toaddrvpos}) to a smaller value. In +addition, you should also reduce \PLength{toaddrwidth} accordingly.% + +By\textnote{Hint!} the way, the \File{DIN} \File{lco} file is always loaded +automatically as the first \File{lco} file. This ensures that all +pseudo-lengths will have more or less reasonable default values. Therefore you +do not need to load this default file on your own. + +%Please\textnote{Attention!} note that it is not possible to use +%\Macro{PassOptionsToPackage} to pass options to packages from within an +%\File{lco} file that have already been loaded by the class. Normally, this +%only applies to the \Package{typearea}, \Package{scrlfile}, \Package{scrbase}, +%and \Package{keyval} packages.% + +\begin{desclist} + \renewcommand*{\abovecaptionskipcorrection}{-\normalbaselineskip}% + \desccaption{% + Predefined \File{lco} files\label{tab:lcoFiles}% + }{% + Predefined \File{lco} files (\emph{continued})% + }% + \oentry{DIN}{% + \leavevmode% + \IndexOption[indexmain]{DIN}\IndexFile[indexmain]{DIN.lco}% + parameters for letters on A4 paper, complying with German standard + DIN~676; suitable for window envelopes in the sizes C4, C5, C6, and C6/5 + (C6 long).}% + \oentry{DINmtext}{% + \leavevmode% + \IndexOption[indexmain]{DINmtext}\IndexFile[indexmain]{DINmtext.lco}% + parameters for letters on A4 paper, complying with DIN~676 but using an + alternate layout with more text on the first page; only suitable for + window envelopes in the sizes C6 and C6/5 (C6 long).}% + \oentry{KakuLL}{% + \leavevmode% + \IndexOption[indexmain]{KakuLL}\IndexFile[indexmain]{KakuLL.lco}% + parameters for Japanese letters on A4 paper; suitable for Japanese + window envelopes of type Kaku A4, in which the window is approximately + 90\Unit{mm} wide by 45\Unit{mm} high, and positioned 25\Unit{mm} from the + left and 24\Unit{mm} from the top edge (see \autoref{cha:japanlco}).}% + \oentry{KOMAold}{% + \leavevmode% + \IndexOption[indexmain]{KOMAold}\IndexFile[indexmain]{KOMAold.lco}% + parameters for letters on A4 paper using a layout close to that of the + obsolete \Class{scrlettr} letter class; suitable for window envelopes in + the sizes C4, C5, C6, and C6/5 (C6 long); some additional commands to + improve compatibility with obsolete \Class{scrlettr} commands are defined; + \Class{scrlttr2} may behave slightly differently with this \File{lco} file + than with the other \File{lco} files.}% + \oentry{NF}{% + \leavevmode% + \IndexOption[indexmain]{NF}\IndexFile[indexmain]{NF.lco}% + parameters for French letters, complying with NF~Z~11-001; suitable for + window envelopes of type DL (110\Unit{mm} by 220\Unit{mm}) with a window + 45\Unit{mm} wide by 100\Unit{mm} high placed about 20\Unit{mm} from the + lower right edge; this file was originally developed by Jean-Marie + Pacquet, who also provides LyX integration in addition to extensions at + \cite{www:NF.lco}.}% + \oentry{NipponEH}{% + \leavevmode% + \IndexOption[indexmain]{NipponEH}\IndexFile[indexmain]{NipponEH.lco}% + parameters for Japanese letters on A4 paper; suitable for Japanese + window envelopes of types Chou or You 3 or 4, in which the window is + approximately 90\Unit{mm} wide by 55\Unit{mm} high, and positioned + 22\Unit{mm} from the left and 12\Unit{mm} from the top edge (see + \autoref{cha:japanlco}).}% + \oentry{NipponEL}{% + \leavevmode% + \IndexOption[indexmain]{NipponEL}\IndexFile[indexmain]{NipponEL.lco}% + parameters for Japanese letters on A4 paper; suitable for Japanese + window envelopes of types Chou or You 3 or 4, in which the window is + approximately 90\Unit{mm} wide by 45\Unit{mm} high, and positioned + 22\Unit{mm} from the left and 12\Unit{mm} from the top edge (see + \autoref{cha:japanlco}).}% + \oentry{NipponLH}{% + \leavevmode% + \IndexOption[indexmain]{NipponLH}\IndexFile[indexmain]{NipponLH.lco}% + parameters for Japanese letters on A4 paper; suitable for Japanese + window envelopes of types Chou or You 3 or 4, in which the window is + approximately 90\Unit{mm} wide by 55\Unit{mm} high, and positioned + 25\Unit{mm} from the left and 12\Unit{mm} from the top edge (see + \autoref{cha:japanlco}).}% + \oentry{NipponLL}{% + \leavevmode% + \IndexOption[indexmain]{NipponLL}\IndexFile[indexmain]{NipponLL.lco}% + parameters for Japanese letters on A4 paper; suitable for Japanese + window envelopes of types Chou or You 3 or 4, in which the window is + approximately 90\Unit{mm} wide by 45\Unit{mm} high, and positioned + 25\Unit{mm} from the left and 12\Unit{mm} from the top edge (see + \autoref{cha:japanlco}).}% + \oentry{NipponRL}{% + \leavevmode% + \IndexOption[indexmain]{NipponRL}\IndexFile[indexmain]{NipponRL.lco}% + parameters for Japanese letters on A4 paper; suitable for Japanese + window envelopes of types Chou or You 3 or 4, in which the window is + approximately 90\Unit{mm} wide by 45\Unit{mm} high, and positioned + 25\Unit{mm} from the left and 24\Unit{mm} from the top edge (see + \autoref{cha:japanlco}).}% + \oentry{SN}{% + \leavevmode% + \IndexOption[indexmain]{SN}\IndexFile[indexmain]{SN.lco}% + parameters for Swiss letters with the address field on the right side, + according to SN~010\,130; suitable for Swiss window envelopes in the sizes + C4, C5, C6, and C6/5 (C6 long).}% + \oentry{SNleft}{% + \leavevmode% + \IndexOption[indexmain]{SNleft}\IndexFile[indexmain]{SNleft.lco}% + parameters for Swiss letters with the address field on the left side; + suitable for Swiss window envelopes with the window on the left side in + the sizes C4, C5, C6, and C6/5 (C6 long).}% + \oentry{UScommercial9}{% + \leavevmode% + \IndexOption[indexmain]{UScommercial9}% + \IndexFile[indexmain]{UScommercial9.lco}% + parameters for US letters on American letter paper; suitable for + \emph{commercial~No.\,9} US window envelopes with a window 4\,1/2\Unit{in} + wide by 1\,1/8\Unit{in} high, positioned 7/8\Unit{in} from the left and + 1/2\Unit{in} from the bottom, without the return address inside the + window; when folded first at the middle mark then at the top fold mark, + legal paper can also be used but results in a paper-size warning}% + \oentry{UScommercial9DW}{% + \leavevmode% + \IndexOption[indexmain]{UScommercial9DW}% + \IndexFile[indexmain]{UScommercial9DW.lco}% + parameters for US letters on American letter paper; suitable for + \emph{commercial~No.\,9} US window envelopes with an recipient-address + window 3\,5/8\Unit{in} wide by 1\,1/8\Unit{in} high, positioned + 3/4\Unit{in} from the left and 1/2\Unit{in} from the bottom, and with a + return-address window 3\,1/2\Unit{in} wide by 7/8\Unit{in} high, + positioned 5/16\Unit{in} from the left and 2\,1/2\Unit{in} from the + bottom; when folded first at the middle mark and then at the top fold + mark, legal paper can also be used but results in a paper-size warning}% +\end{desclist} +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Address Files and Form Letters} +\seclabel{addressFile}% +\BeginIndexGroup +\BeginIndex{}{address>file}% +\BeginIndex{}{form letters}% +\index{serial letters|see form letters}% +\index{circular letters|see form letters}% + +One of the most annoying things about creating form letters is typing up +the different addresses. \KOMAScript{} provides basic support for this task% +\iffalse% Umbruchkorrekturtext +, as did its predecessor \Class{scrlettr}% +\fi% +.% +\iffalse% Umbruchkorrekturtext +\ Currently there are plans for greatly enhanced support.% +\fi + +\begin{Declaration} + \Macro{adrentry}\Parameter{last~name}\Parameter{first~name}% + \Parameter{address}\Parameter{phone}\Parameter{F1}\Parameter{F2}% + \Parameter{comment}\Parameter{key} +\end{Declaration}% +\Class{scrlttr2} and \Package{scrletter} can evaluate address files. +This can be very useful for form letters. An address file must have the +extension \File{.adr} and consists of a number \Macro{adrentry} entries. +An individual entry consists of eight parameters and may look, for example, +like this: +\begin{lstcode} + \adrentry{McEnvy} + {Flann} + {1 High Street\\ Glasgow} + {0141 123 4567} + {builder} + {} + {buys everything} + {FLANN} +\end{lstcode} +You can use the fifth and sixth elements, \PValue{F1} and \PValue{F2}, for +anything you want. Gender, academic grade, birth date, or the date the person +joined a society are all possibilities. The last parameter, \PName{key}, +should consist of more than one letter and be upper-case only so as not to +interfere with existing \TeX{} or \LaTeX{} commands. + +\begin{Example} + Mr McEnvy is one of your most important business partners. Since you + maintain a frequent correspondence with him, it is too tedious to + enter all his data again and again. \KOMAScript{} will do this work for you. + For example, if you have saved your customer contacts in the + \File{partners.adr} address file and you would like to write a letter to + Mr~McEnvy, you can save a great deal of effort by typing: + \begin{lstcode} + \input{partners.adr} + \begin{letter}{\FLANN} + Your correspondence of today \dots + \end{letter} + \end{lstcode} + Please make sure that your {\TeX} system can access your address file. + Otherwise the \Macro{input} command results in an error message. You can + either put your address file in the same directory as your letter or + configure your \TeX{} system to look for a dedicated address directory. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{addrentry}\Parameter{last-name}\Parameter{first-name}% + \Parameter{address}\Parameter{phone}\Parameter{F1}\Parameter{F2}% + \Parameter{F3}\Parameter{F4}\Parameter{key} +\end{Declaration}% +Before you object that a total of two free parameters is too few, +\KOMAScript{} alternatively offers the \Macro{addrentry} command\,---\,note +the additional ``d''\,---\,which adds two more freely definable parameters but +omits the comment parameter. Otherwise, you can use this command in exactly +the same way as \DescRef{\LabelBase.cmd.adrentry}. + +Both \DescRef{\LabelBase.cmd.adrentry} and \Macro{addrentry} commands can be +freely mixed in the \File{adr} files. I should note, however, that other +packages, such as \Package{adrconv}\IndexPackage{adrconv} by Axel Kielhorn, +may not be designed to use \Macro{addrentry}. If necessary, you have to create +the appropriate extensions yourself.% +% +\EndIndexGroup + +In addition to simplifying access to addresses, you can also use the +\File{adr} files to create circulars or form letters. Thus you can create such +mass mailings without a complicated connection to a database system. +% +\begin{Example} + You want to sent a form letter to all members of your fishing club to invite + them to the next general meeting. +\begin{lstcode} + \documentclass{scrlttr2} + \begin{document} + \renewcommand*{\adrentry}[8]{ + \begin{letter}{#2 #1\\#3} + \opening{Dear members,} + Our next general meeting will be on + Monday, 12 August 2002. + + The following topics are \dots + \closing{Regards,} + \end{letter} + } + \input{members.adr} + \end{document} +\end{lstcode} + If the address file also contains \DescRef{\LabelBase.cmd.addrentry} + commands, you must add a corresponding definition before loading the address + file: +\begin{lstcode} + \renewcommand*{\addrentry}[9]{% + \adrentry{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#9}% + } +\end{lstcode} + In this example, the extra freely-definable parameter is not used, and + therefore \DescRef{\LabelBase.cmd.addrentry} is defined using + \DescRef{\LabelBase.cmd.adrentry}. +\end{Example} + +Of course, the letter's contents can also be adapted to the characteristics of +the address data. You can use the free parameters of the +\DescRef{\LabelBase.cmd.adrentry} and \DescRef{\LabelBase.cmd.addrentry} +commands for this. +\begin{Example} + Suppose you use the fifth parameter of the \DescRef{\LabelBase.cmd.adrentry} + command to indicate the gender of a club member (\PValue{m/f}), and the + sixth parameter to indicate the amount of membership dues that is unpaid. + If you would like to write a reminder to each such member and address them + personally, the next example will help you: +\begin{lstcode} + \renewcommand*{\adrentry}[8]{ + \ifdim #6pt>0pt\relax + % #6 is an amount (floating-point number) greater than 0. + % Thus, this selects all members owing dues. + \begin{letter}{#2 #1\\#3} + \if #5m \opening{Dear Mr #2,} \fi + \if #5f \opening{Dear Ms #2,} \fi + + Unfortunately, we have noticed that you are in arrears + with the payment of your membership fees. + + Please remit the outstanding balance of \pounds #6 to the club + account. + \closing{Regards,} + \end{letter} + \fi + } +\end{lstcode} +\end{Example} +It is therefore possible to tailor the text of the letter to the specific +characteristics of the recipient and create the impression of a personal +letter. The extent of the customisation is only limited by the maximum number +of two free \DescRef{\LabelBase.cmd.adrentry} parameters and four free +\DescRef{\LabelBase.cmd.addrentry} parameters. + + +\begin{Declaration} + \Macro{adrchar}\Parameter{initial letter}% + \Macro{addrchar}\Parameter{initial letter} +\end{Declaration} +\Index[indexmain]{address>list}\Index[indexmain]{telephone directory}% +It is possible to create address lists and telephone directories using +\File{adr} files. You also need the \Package{adrconv}\IndexPackage{adrconv} +package by Axel Kielhorn (see \cite{package:adrconv}). This package contains +interactive \LaTeX{} documents which make it easy to create such lists. + +The address files have to be sorted already in order to obtain sorted lists. +It is advisable to insert an \Macro{adrchar} or \Macro{addrchar} command +containing the initial letter of the \PName{last name} before the point in the +list where this letter changes. \Class{scrlettr2} and \Package{scrletter} will +ignore these commands. +% +\begin{Example} + Suppose you have the following, rather tiny address file from which you + want to create an address book: +\begin{lstlisting} + \adrchar{A} + \adrentry{Angel}{Gabriel} + {Cloud 3\\12345 Heaven's Realm} + {000\,01\,02\,03}{}{}{archangel}{GABRIEL} + \adrentry{Angel}{Michael} + {Cloud 3a\\12345 Heaven's Realm} + {000\,01\,02\,04}{}{}{archangel}{MICHAEL} + \adrchar{K} + \adrentry{Kohm}{Markus} + {Freiherr-von-Drais-Stra\ss e 66\\68535 Edingen-Neckarhausen} + {+49~62\,03~1\,??\,??}{}{}{no angel at all} + {KOMA} +\end{lstlisting} + You can now process these entries using the \File{adrdir.tex} document from + \cite{package:adrconv}. One potential problem with this is that + \File{adrdir.tex} up to and including Version~1.3 uses both the obsolete + \Package{scrpage} package and obsolete font commands which \KOMAScript{} has + not supported for some time. If you receive an error message and cannot + install a newer version, you can find a listing of \File{adrdir.tex} which + indicates the changes necessary to avoid these errors at + \cite{https://komascript.de/node/2154} (in German). + + The result looks something like this: + \begin{center} + \setlength{\unitlength}{1mm} + \begin{picture}(80,57) + \put(0,57){\line(1,0){80}} + \put(0,3){\line(0,1){54}} + \put(80,3){\line(0,1){54}} + \thicklines + \put(10,42){\line(1,0){60}} + \put(70,45){\makebox(0,0)[r]{\textsf{\textbf{A}}}} + \put(10,23){\makebox(0,20)[l]{\parbox{5cm}{\raggedright + \textsc{Angel}, Gabriel\\\quad\small Cloud 3\\ + \quad 12345 Heaven's Realm\\ + \quad (archangel)}}} + \put(70,23){\makebox(0,20)[r]{\parbox{2cm}{\raggedright~\\ + \small~\\\textsc{gabriel}\\000\,01\,02\,03}}} + \put(10,4){\makebox(0,20)[l]{\parbox{5cm}{\raggedright + \textsc{Angel}, Michael\\\quad\small Cloud 3a\\ + \quad 12345 Heaven's Realm\\ + \quad (archangel)}}} + \put(70,4){\makebox(0,20)[r]{\parbox{2cm}{\raggedright~\\ + \small~\\\textsc{michael}\\000\,01\,02\,04}}} + \qbezier(0,3)(10,6)(40,3)\qbezier(40,3)(60,0)(80,3) + \end{picture} + \end{center} + The letter in the header is generated by answering ``no'' to the + question ``Names in the header?'' See explanation in \File{adrdir.tex}. +\end{Example} +You can find more about the \Package{adrconv}\IndexPackage{adrconv} package in +its documentation. There you should also find information about whether the +current version of \Package{adrconv} supports the +\DescRef{\LabelBase.cmd.addrentry} and \Macro{addrchar} commands. Previous +versions only recognised the \DescRef{\LabelBase.cmd.adrentry} and +\Macro{adrchar} commands.% +% +\EndIndexGroup +% +\EndIndexGroup +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrlttr2examples.dtx b/macros/latex/contrib/koma-script/source-doc/english/scrlttr2examples.dtx new file mode 100644 index 0000000000..18286886b3 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrlttr2examples.dtx @@ -0,0 +1,347 @@ +% \CheckSum{0} +% \iffalse +% ====================================================================== +% scrlttr2examples.dtx +% Copyright (c) Markus Kohm, 2008-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlttr2examples.dtx +% Copyright (c) Markus Kohm, 2008-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Generation of letter example files for scrlttr2 chapter. +% +% --------------------------------------------------------------------------- +% +% Erzeugung der Brief-Beispiele für das scrlttr2-Kapitel. +% +% ============================================================================ +%<*ins> +\def\batchfile{scrlttr2examples.dtx} +\input docstrip.tex + +\keepsilent +\askforoverwritefalse + +\generate{% + \nopreamble\nopostamble + \file{musterlogo.eps}{\from{scrlttr2examples.dtx}{logo}}% +} + +\generate{% + \nopreamble\nopostamble + \file{ich.lco}{\from{scrlttr2examples.dtx}{lco,23,\languagename}}% +} + +\generate{% + \nopreamble\nopostamble + \file{letter-0.tex}{\from{scrlttr2examples.dtx}{example,0,\languagename}}% + \file{letter-1.tex}{\from{scrlttr2examples.dtx}{example,1,\languagename}}% + \file{letter-2.tex}{\from{scrlttr2examples.dtx}{example,2,\languagename}}% + \file{letter-3.tex}{\from{scrlttr2examples.dtx}{example,3,\languagename}}% + \file{letter-4.tex}{\from{scrlttr2examples.dtx}{example,4,\languagename}}% + \file{letter-5.tex}{\from{scrlttr2examples.dtx}{example,5,\languagename}}% + \file{letter-6.tex}{\from{scrlttr2examples.dtx}{example,6,\languagename}}% + \file{letter-7.tex}{\from{scrlttr2examples.dtx}{example,7,\languagename}}% + \file{letter-8.tex}{\from{scrlttr2examples.dtx}{example,8,\languagename}}% + \file{letter-9.tex}{\from{scrlttr2examples.dtx}{example,9,\languagename}}% + \file{letter-10.tex}{\from{scrlttr2examples.dtx}{example,10,\languagename}}% + \file{letter-11.tex}{\from{scrlttr2examples.dtx}{example,11,\languagename}}% + \file{letter-12.tex}{\from{scrlttr2examples.dtx}{example,12,\languagename}}% + \file{letter-13.tex}{\from{scrlttr2examples.dtx}{example,13,\languagename}}% + \file{letter-14.tex}{\from{scrlttr2examples.dtx}{example,14,\languagename}}% + \file{letter-15.tex}{\from{scrlttr2examples.dtx}{example,15,\languagename}}% + \file{letter-16.tex}{\from{scrlttr2examples.dtx}{example,16,\languagename}}% + \file{letter-17.tex}{\from{scrlttr2examples.dtx}{example,17,\languagename}}% + \file{letter-18.tex}{\from{scrlttr2examples.dtx}{example,18,\languagename}}% + \file{letter-19.tex}{\from{scrlttr2examples.dtx}{example,19,\languagename}}% + \file{letter-20.tex}{\from{scrlttr2examples.dtx}{example,20,\languagename}}% + \file{letter-21.tex}{\from{scrlttr2examples.dtx}{example,21,\languagename}}% + \file{letter-22.tex}{\from{scrlttr2examples.dtx}{example,22,\languagename}}% + \file{letter-23.tex}{\from{scrlttr2examples.dtx}{example,23,\languagename}}% + \file{letter-label.tex}{\from{scrlttr2examples.dtx}{% + example,label,\languagename}}% + \file{letter-nipponA.tex}{\from{scrlttr2examples.dtx}{% + example,22,nipponA,\languagename}}% + \file{letter-nipponB.tex}{\from{scrlttr2examples.dtx}{% + example,22,nipponB,\languagename}}% +} + +\csname endinput\endcsname +%</ins> +% +% \begin{macrocode} +%<*lco&23> +\ProvidesFile{ich.lco}[2008/06/11 lco +%<english> (Joe Public)] +%<ngerman> (Peter Musterfrau)] +\KOMAoptions{foldmarks=true,foldmarks=blmtP, + fromphone,fromemail,fromlogo,subject=titled} +%<*english> +\setkomavar{fromname}{Joe Public} +\setkomavar{signature}{Joe Public\\ + (former chairman)} +%</english> +%<*ngerman> +\setkomavar{fromname}{Peter Musterfrau} +\setkomavar{signature}{Peter Musterfrau\\ + (ehemaliger Vorsitzender)} +%</ngerman> +\renewcommand*{\raggedsignature}{\raggedright} +%<*english> +\setkomavar{fromaddress}{2 Valley\\ + SAMPLEBY\\ + ZY32 1XW} +%</english> +%<*ngerman> +\setkomavar{fromaddress}{Hinter dem Tal 2\\ + 54321 Musterheim} +%</ngerman> +\setkomavar{fromphone}{0\,12\,34~56\,78} +%<english>\setkomavar{fromemail}{joe@public.invalid} +%<ngerman>\setkomavar{fromemail}{Peter@Musterfrau.invalid} +\setkomavar{fromlogo}{% + \includegraphics{musterlogo}} +\setkomavar{location}{\raggedright +%<*english> + Club member no.~4711\\ + since 11.09.2001\\ + chairman 2003--2005} +\setkomavar{place}{Sampleby} +\setkomavar{frombank}{Bank of Friendly Greetings} +%</english> +%<*ngerman> + Mitglied Nr.~4711\\ + seit dem 11.09.2001\\ + Vorsitzender in den Jahren 2003--2005} +\setkomavar{place}{Musterheim} +\setkomavar{frombank}{Bank freundlichen Gru\ss es} +%</ngerman> +%</lco&23> +%<*example> +%<*label> +\AtBeginDocument{% + \usepackage{xcolor,eso-pic}% + \BeforeClosingMainAux{% + \AddToShipoutPicture*{% + \thinlines\color{gray!50}% + \AtPageLowerLeft{% + \put(0,\LenToUnit{8mm}){% + \line(0,1){\LenToUnit{180mm}}% + }% + \multiput(\LenToUnit{70mm},\LenToUnit{8mm})(\LenToUnit{70mm},0){3}{% + \line(0,1){\LenToUnit{216mm}}% + }% + \multiput(0,\LenToUnit{8mm})(0,\LenToUnit{36mm}){6}{% + \line(1,0){\LenToUnit{210mm}}% + }% + \put(\LenToUnit{70mm},\LenToUnit{224mm}){% + \line(1,0){\LenToUnit{140mm}}% + }% + }\color{black}% + }% + }% +} +%</label> +%<0|1|2|3|4|5>\documentclass[version=last]{scrlttr2} +%<6>\documentclass[version=last,fontsize=14pt]{scrlttr2} +%<!0&!1&!2&!3&!4&!5&!6&!23&!label&!nipponA&!nipponB>\documentclass[foldmarks=true,foldmarks=blmtP, +%<nipponA|nipponB>\documentclass[foldmarks=true,locfield=wide, +%<8> fromalign=false, +%<9> fromalign=center, +%<10> fromalign=false,fromrule=aftername, +%<11> fromalign=center,fromrule=aftername, +%<12> fromalign=false,fromrule=afteraddress, +%<13|17> fromalign=center,fromrule=afteraddress, +%<14|16> fromrule=afteraddress, +%<15|18> fromalign=right,fromrule=afteraddress, +%<12|13|14|15> fromphone,fromemail, +%<16|17|18|19|20|21|22> fromphone,fromemail,fromlogo, +%<nipponA|nipponB> fromphone=false,fromemail=false, +%<21|22> subject=titled, +%<!0&!1&!2&!3&!4&!5&!6&!23&!label> version=last]{scrlttr2} +%<23>\documentclass[version=last,ich]{scrlttr2} +%<nipponA>\LoadLetterOption{NipponLL} +%<nipponB>\LoadLetterOption{NipponEL} +%<label>\documentclass[version=last,ich,settleford600label]{scrlttr2} +%<ngerman>\usepackage[ngerman]{babel} +%<english>\usepackage[british]{babel} +%<16|17|18|19|20|21|22|23|label>\usepackage{graphics} +\begin{document} +%<*!0&!1&!2&!3&!4&!5&!6&!7&!23&!label> +%<english>\setkomavar{fromname}{Joe Public} +%<ngerman>\setkomavar{fromname}{Peter Musterfrau} +%<*22> +%<*english> +\setkomavar{signature}{Joe Public\\ + (former chairman)} +%</english> +%<*ngerman> +\setkomavar{signature}{Peter Musterfrau\\ + (ehemaliger Vorsitzender)} +%</ngerman> +\renewcommand*{\raggedsignature}{\raggedright} +%</22> +%<*english> +\setkomavar{fromaddress}{2 Valley\\ + SAMPLEBY\\ + ZY32 1XW} +%</english> +%<*ngerman> +\setkomavar{fromaddress}{Hinter dem Tal 2\\ + 54321 Musterheim} +%</ngerman> +%<*!9&!10&!11> +\setkomavar{fromphone}{0\,12\,34~56\,78} +%<english>\setkomavar{fromemail}{joe@public.invalid} +%<ngerman>\setkomavar{fromemail}{Peter@Musterfrau.invalid} +%<*!12&!13&!14&!15> +\setkomavar{fromlogo}{\includegraphics{musterlogo}} +%</!12&!13&!14&!15> +%</!9&!10&!11> +%</!0&!1&!2&!3&!4&!5&!6&!7&!23&!label> +%<*19|20|21|22|23|label> +%<*!23&!label&!nipponA&!nipponB> +\setkomavar{location}{\raggedright +%<*english> + Club member no.~4711\\ + since 11.09.2001\\ + chairman 2003--2005} +%</english> +%<*ngerman> + Mitglied Nr.~4711\\ + seit dem 11.09.2001\\ + Vorsitzender in den Jahren 2003--2005} +%</ngerman> +%</!23&!label&!nipponA&!nipponB> +%<*20|21|22|23|label> +%<english>\setkomavar{date}{29th February 2011} +%<ngerman>\setkomavar{date}{29. Februar 2011} +%<*!23&!label> +%<english>\setkomavar{place}{Sampleby} +%<ngerman>\setkomavar{place}{Musterheim} +%</!23&!label> +%<*21|22|23|label> +%<english>\setkomavar{subject}{Missing general meeting} +%<ngerman>\setkomavar{subject}{Mitgliederversammlung vermisst} +%</21|22|23|label> +%</20|21|22|23|label> +%</19|20|21|22|23|label> +%<!5>\begin{letter}{% +%<5>\begin{letter}[fontsize=14pt]{% +%<*english> + Joanna Public\\ + 1 Hillside\\ + SAMPLESTEAD\\ + WX12 3YZ% +%</english> +%<*ngerman> + Petra Mustermann\\ + Vor dem Berg 1\\ + 12345 Musterhausen% +%</ngerman> + } +%<label>\savelabel{3}{2} +%<english>\opening{Dear Madam Chair,} +%<ngerman>\opening{Liebe Vereinsvorsitzende,} +%<*!0> +%<*english> +The last general meeting was more than a year ago. +I would like to remind you that the articles of our +club stipulate that one should be held every +six months. For this reason, I call on the executive +board to arrange such a meeting immediately. +\closing{Anticipating an invitation} +%</english> +%<*ngerman> +seit einem Jahr gab es keine Mitgliederversammlung +mehr. Ich erinnere daran, dass unsere Satzung eine +solche jedes halbe Jahr vorsieht. Ich fordere den +Vorstand daher auf, umgehend eine solche in +Angriff zu nehmen. +\closing{In Erwartung einer Einladung} +%</ngerman> +%<*!1> +%<*english> +\ps PS: I hope you do not take this request amiss. +%</english> +%<*ngerman> +\ps PS: Ich hoffe, Du nimmst mir das nicht krumm. +%</ngerman> +%<*!2> +%<*!3> +%<*english> +\setkomavar*{enclseparator}{Enclosure} +\encl{Excerpt from the articles governing general + meetings} +%</english> +%<*ngerman> +\setkomavar*{enclseparator}{Anlage} +\encl{Auszug aus der Satzung, in dem die + Mitgliederversammlungen geregelt sind} +%</ngerman> +%</!3> +%<*english> +\cc{executive board\\all members} +%</english> +%<*ngerman> +\cc{Die Vereinsvorsitzende\\Alle Mitglieder} +%</ngerman> +%</!2> +%</!1> +%</!0> +\end{letter} +\end{document} +%</example> +%<*logo> +%%! +%%BoundingBox: 0 0 72 72 +0 0 moveto +72 72 rlineto +72 neg 0 rlineto +72 72 neg rlineto +stroke +0 0 moveto +/Bitstream-Charter findfont +72 scalefont +setfont +(M) show +showpage +%</logo> +% \end{macrocode} +% +% \iffalse +\endinput +%%% Local Variables: +%%% mode: doctex +%%% TeX-master: t +%%% End: +% \fi diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrwfile.tex b/macros/latex/contrib/koma-script/source-doc/english/scrwfile.tex new file mode 100644 index 0000000000..78253e34e0 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/scrwfile.tex @@ -0,0 +1,288 @@ +% ====================================================================== +% scrwfile.tex +% Copyright (c) Markus Kohm, 2010-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrwfile.tex +% Copyright (c) Markus Kohm, 2010-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrwfile of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber scrwfile in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrwfile.tex}% + [$Date: 2018-03-27 11:46:14 +0200 (Tue, 27 Mar 2018) $ + KOMA-Script guide (chapter: scrwfile)] + +% Date of the translated German file: 2018-02-15 + +\translator{Markus Kohm\and Jana Schubert\and Karl Hagen} + +\chapter{Economising and Replacing Files with \Package{scrwfile}} +\labelbase{scrwfile} +\BeginIndexGroup +\BeginIndex{Package}{scrwfile} + +One of the problems not solved by the introduction of \eTeX{} is the fact that +\TeX{} can support only 18 open write handles. This number seems quite large +at first, but many of these handles are already reserved. \TeX{} itself uses +handle 0 for the log file. \LaTeX{} needs handle 1 for \Macro{@mainaux}, +handle 2 for \Macro{@partaux}, one handle for \Macro{tableofcontents}, one +handle for \Macro{listoffigures}, one handle for \Macro{listoftables}, and one +handle for \Macro{makeindex}. Every other such list generates another handle, +and packages like \Package{hyperref} or \Package{minitoc} require write +handles too. + +The bottom line is that eventually you may get the following error message: +\begin{lstcode} + ! No room for a new \write . + \ch@ck ...\else \errmessage {No room for a new #3} + \fi +\end{lstcode} + +For some time, the simplest solution to this problem has been to use +\mbox{Lua\LaTeX} instead of \mbox{pdf\LaTeX} or \XeLaTeX. This eliminates the +restriction, and the maximum number of files you can have open for writing is +then limited only by the operating system. In reality, you usually so not need +to worry about it any more. + +The fact that \LaTeX{} always opens a new file for writing every table of +contents, list of figures, list of tables, etc. has another disadvantage. Such +lists are not only output by their respective commands, they also could not be +output a second time because the associated auxiliary file\footnote{The term + \emph{auxiliary file} here refers not to the main \File{aux} file but to the + other internal files used indirectly via the \File{aux} file, e.\,g. the + \File{toc} file, the \File{lof} file, or the \File{lot} file.} is empty +after the respective command until the end of the document. + +The \Package{scrwfile} package makes a fundamental change to the \LaTeX{} +kernel, which can solve both problems not only for \mbox{Lua\LaTeX} but also +for \mbox{pdf\LaTeX} or \XeLaTeX. + +\section{Fundamental Changes to the \LaTeX{} Kernel} +\seclabel{kernelpatches} + +\LaTeX{} classes use the \LaTeX{} kernel command +\Macro{@starttoc}\IndexCmd{@starttoc} to allocate a new file handle, such as +for \Macro{tableofcontents} or \Macro{listoffigures}. This command not only +loads the associated auxiliary file but also reopens it for writing. If +entries to these lists are added using \Macro{addcontentsline}, however, the +system does not write directly to these auxiliary files. Instead, \LaTeX{} +writes \Macro{@writefile}\IndexCmd{@writefile} commands to the \File{aux} +file. Only while reading the \File{aux} file at the end of the document do +those \Macro{@writefile} commands become actual write operations in the +auxiliary files. Additionally, \LaTeX{} does not close the auxiliary files +explicitly. Instead it relies on \TeX{} to close all open files at the end. + +This procedure ensures that the auxiliary files are only written to within +\Macro{end}\PParameter{document}, but they remain open throughout the entire +\LaTeX{} run. \Package{scrwfile} takes is starting point here, by redefining +\Macro{@starttoc} and \Macro{@writefile}. + +Of course\textnote{Attention!} changes to the \LaTeX{} kernel always have the +potential to cause incompatibilities with other packages. Those primarily +affected may be those which also redefine \Macro{@starttoc} or +\Macro{@writefile}. In some cases, it may help to change the order the +packages are loaded. If you encounter such a problem, please contact the +\KOMAScript{} author. + +\section{The Single-File Method} +\seclabel{singlefilefeature} + +As soon as the package is loaded with +\begin{lstcode} + \usepackage{scrwfile} +\end{lstcode} +\Package{scrwfile} redefines \Macro{@starttoc}\IndexCmd{@starttoc} so that it +no longer allocates a write handle or opens a file for writing. +\Macro{@writefile} is redefined so that immediately before closing the +\File{aux} file in \Macro{end}\PParameter{document}, it writes not to the +usual auxiliary files but to a single new file with extension \File{wrt}. +After reading the \File{aux} file, this \File{wrt} file will be processed once +for each of the auxiliary files that \Macro{@writefile} writes information to. +However these auxiliary files do not all have to be open at the same time. +Instead, only one is open at a time and is explicitly closed afterwards. Since +\LaTeX{} reuses an internal write file, \Package{scrwfile} doesn't need its +own write handle for this type of table of contents or list of floating +environments. + +Because of this behaviour, even if you have only one table of contents, once +you load \Package{scrwfile} you will have access to a write file handle for +bibliographies, indexes, glossaries, and similar lists that do not use +\Macro{@starttoc}. Additionally, you can create any number of tables of +contents and other lists that use \Macro{@starttoc}\IndexCmd{@starttoc}. + +\section{The File Cloning Method} +\seclabel{clonefilefeature} + +Since \Macro{@writefile}\IndexCmd{@writefile} has already been modified for +the single-file method described in the previous system so that it no longer +writes directly to the corresponding auxiliary file, a further possibility +suggests itself. When copying the \Macro{@writefile} statements into the +\File{wrt} file, you can also copy them to other destinations. + +\begin{Declaration} + \Macro{TOCclone}% + \OParameter{list heading}\Parameter{source extension}% + \Parameter{destination extension} +\end{Declaration} +This cloning of file entries copies entire tables of contents or other lists. +For this, you only need to specify the extension of the auxiliary file whose +entries should be copied and the extension of a destination file. The entries +are then copied there. Of course, you can also write additional entries to +this cloned file. + +You can manage the \PName{destination extention} using +\hyperref[cha:tocbasic]{\Package{tocbasic}}% +\important{\hyperref[cha:tocbasic]{\Package{tocbasic}}} (see +\autoref{cha:tocbasic}). If such a file is already under the control of +\hyperref[cha:tocbasic]{\Package{tocbasic}}, a warning will be issued. +Otherwise, a new list for this extension will be created using +\hyperref[cha:tocbasic]{\Package{tocbasic}}. You can set the heading for this +list with the optional argument \PName{list heading}. + +You can then output this new content list, for example, with the command +\Macro{listof\PName{destination extension}}. The content-list +attributes\important{\hyperref[cha:tocbasic]{\Package{tocbasic}}} +\PValue{leveldown}, \PValue{numbered}, \PValue{onecolumn}, and \PValue{totoc} +(see \DescRef{tocbasic.cmd.setuptoc} in \autoref{sec:tocbasic.toc}, +\DescPageRef{tocbasic.cmd.setuptoc}) are automatically copied to the +destination list if they were already set in the source list. The +\PValue{nobabel} attribute is always set for cloned content lists, because the +language-selection commands in the source content list are already copied +anyway. + +\begin{Example} + Suppose you want a short table of contents with only the chapter level in + addition to the normal the table of contents: +\begin{lstcode} + \usepackage{scrwfile} + \TOCclone[Summary Contents]{toc}{stoc} +\end{lstcode} + This creates a new table of contents with the heading ``Summary Contents''. + The new table of contents uses an auxiliary file with the extension + \File{stoc}. All entries to the auxiliary file with extension \File{toc} + will also be copied to this new auxiliary file. + + In order to have the new short table of contents display only the chapter + entries, we use: +\begin{lstcode} + \addtocontents{stoc}{\protect\value{tocdepth}=0} +\end{lstcode} + Although\textnote{Attention!} normally you cannot write to an auxiliary file + before \Macro{begin}\PParameter{document}, the code above works in the + preamble after loading \Package{scrwfile}. Owing to the unconventional way + of changing the \DescRef{maincls.counter.tocdepth} counter within the TOC + file, this change only applies to this content list. + + Later in the document, we then output the content list with the file + extension \File{stoc} with: +\begin{lstcode}[moretexcs={listofsttoc}] + \listofstoc +\end{lstcode} + and this shows only the parts and chapters of the document. + + Things become a bit more difficult if the summary contents are to be + listed in the table of contents. This would seem to be possible with +\begin{lstcode} + \addtocontents{toc}{% + \protect\addxcontentsline + {stoc}{chapter}{\protect\contentsname}% + } +\end{lstcode} +However, since all entries in \File{toc} are also copied to \File{stoc}, this +entry would also be copied from the summary contents. So we cannot generate +the entry from the content list. Because we use the +\Package{tocbasic}\important{\Package{tocbasic}} package, we can use the +following: +\phantomsection\xmpllabel{cmd.BeforeStartingTOC} +\begin{lstcode} + \BeforeStartingTOC[toc]{% + \addcontentslinedefault{stoc}{chapter} + {\protect\contentsname}% + } +\end{lstcode} +Of course, this assumes that the \File{toc} file is under the control +of the \Package{tocbasic} package, which is indeed the case for all +\KOMAScript{} classes. See \autoref{sec:tocbasic.toc} on +\DescPageRef{tocbasic.cmd.BeforeStartingTOC} for more information about +\DescRef{tocbasic.cmd.BeforeStartingTOC}.% +\end{Example} +Incidentally, the \DescRef{tocbasic.cmd.addxcontentsline} command used in the +examples is also documented in \autoref{cha:tocbasic}, +\DescPageRef{tocbasic.cmd.addxcontentsline}.% +\EndIndexGroup + + +\section{Note on the State of Development} +\seclabel{draft} + +Although this package has already been tested by many users and is often in +production use, its development is still ongoing. Therefore, it is +theoretically possible that there might be changes, especially to the internal +functionality. It is likely that the package will be extended in the future. +Some code for such extensions is already in the package. However, as there are +no user commands that make use of these features, they are currently +undocumented. + +\section{Known Package Incompatibilities} +\seclabel{incompatible} + +As mentioned in \autoref{sec:scrwfile.kernelpatches}, \Package{scrwfile} +redefines some commands of the \LaTeX{} kernel. This happens not only while +loading the package, but indeed at various times while the document is +processed, for example just before reading the \File{aux} file. +This\textnote{Attention!} results in incompatibility with packages that also +redefine these commands at run time. + +The \Package{titletoc}\important{Package{titletoc}}\IndexPackage{titletoc} +package is an example for such an incompatibility. That package redefines +\Macro{@writefile} under some conditions at run time. If you use both +\Package{scrwfile} and \Package{titletoc}, there is no warranty for the +correct behaviour of either one. This is neither an error of +\Package{titletoc} nor of \Package{scrwfile}.% +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/tocbasic.tex b/macros/latex/contrib/koma-script/source-doc/english/tocbasic.tex new file mode 100644 index 0000000000..36681ff609 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/tocbasic.tex @@ -0,0 +1,2439 @@ +% ====================================================================== +% tocbasic.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% tocbasic.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Package tocbasic for Package and Class Authors +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Paket tocbasic fuer Paket- und Klassenautoren +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{tocbasic.tex} + [$Date: 2018-08-31 09:11:20 +0200 (Fri, 31 Aug 2018) $ + KOMA-Script guide (package tocbasic)] + +% Date of the translated German file: 2018-08-31 + +\translator{Markus Kohm\and Arndt Schubert\and Karl Hagen} + +\chapter{Managing Content Lists with \Package{tocbasic}} +\labelbase{tocbasic} +\BeginIndexGroup% +\BeginIndex{Package}{tocbasic}% +\BeginIndex{}{table of contents}% +\BeginIndex{}{content list}% +\BeginIndex{}{file>extension}% +The main purpose of the \Package{tocbasic} package is to give authors of +packages and classes the ability to create their own tables or lists of +content, content lists for short, similar to the list of figures and the list +of tables, allowing classes and other packages some control over these lists. +The \Package{tocbasic} package also delegates control of the +language-dependent parts of these content lists to the +\Package{babel}\IndexPackage{babel} package (see \cite{package:babel}). Using +\Package{tocbasic} relieves package and class authors from the burden of +implementing such features themselves. + +As a minor side effect, the package can also be used to define new floating +environments, or floating environments like non-floating environments for +reference objects. For more details, after you read about the basic commands +in the next four sections, see the example in \autoref{sec:tocbasic.example}, +which is compactly summarized in \autoref{sec:tocbasic.declarenewtoc}. + +\KOMAScript{} itself uses \Package{tocbasic} not only for the table of +contents but also for the already mentioned lists of figures and tables. + +\section{Basic Commands} +\label{sec:tocbasic.basics} + +The basic commands are primarily used to handle a list of all known file +extensions\textnote{file extension, content lists} that +represent a table or list of contents. We call these auxiliary +files\Index{auxiliary file}\footnote{The term \emph{auxiliary file} here + refers not to the main \File{aux} file but to the other internal files used + indirectly via the \File{aux} file, e.\,g. the \File{toc} file, the + \File{lof} file, or the \File{lot} file.} TOC files\textnote{TOC + file}\Index[indexmain]{TOC file} regardless of the file extension that is +actually used. Entries to such files are typically written using +\Macro{addtocontents}\important{\Macro{addtocontents}, +\DescRef{\LabelBase.cmd.addxcontentsline}}, or +\DescRef{\LabelBase.cmd.addxcontentsline}. There are also commands to perform +actions on all of these file extensions. Additionally, there are commands to +set or unset features for the file associated with a given extension. +Typically an file extension also has an owner\textnote{file owner}. This owner +may be a class or package, or an identifier that the author of the class or +package using \Package{tocbasic} has chosen independently. For example, +\KOMAScript{} uses the owner \texttt{float} for the \File{lof} and \File{lot} +file extensions that are associated with the list of figures and list of +tables, respectively. For the table of contents, \KOMAScript{} uses the file +name of the class. + +\begin{Declaration} + \Macro{ifattoclist}\Parameter{extension}\Parameter{then code}% + \Parameter{else code} +\end{Declaration} +This command tests whether or not the \PName{extension} already exists in the +list of known file extensions. If the \PName{extension} is already known, the +\PName{then code} will be executed. Otherwise, the \PName{else code} will be +executed. +\begin{Example} + Suppose you want to know if the file name extension ``\File{foo}'' is + already in use in order to report an error because it cannot be used: +\begin{lstcode} + \ifattoclist{foo}{% + \PackageError{bar}{% + extension `foo' already in use% + }{% + Each extension may be used only + once.\MessageBreak + The class or another package already + uses extension `foo'.\MessageBreak + This error is fatal!\MessageBreak + You should not continue!}% + }{% + \PackageInfo{bar}{using extension `foo'}% + } +\end{lstcode} +\end{Example} +\EndIndexGroup + + +\begin{Declaration} + \Macro{addtotoclist}\OParameter{owner}\Parameter{extension} +\end{Declaration} +This command adds the \PName{extension} to the list of known extensions. But +if the \PName{extension} is known already, an error is reported to prevent +duplicate use of the same \PName{extension}. + +If you specify the optional \OParameter{owner} argument, the given +\PName{owner} for this file extension is also saved. If you omit the optional +argument, \Package{tocbasic} tries to determine the file name of the class or +package currently being processed and saves it as the owner. +This\textnote{Attention!} procedure only works if you call +\Macro{addtotoclist} while loading a class or package. It will fail if a user +calls \Macro{addtotoclist} afterwards. In this case, the owner is set to +``\PValue{.}''. + +Note\textnote{Attention!} that passing an empty \PName{owner} argument is not +the same as completely omitting the optional argument, including the square +brackets. An empty argument would also result in an empty owner. +\begin{Example} + Suppose you want to add the extension ``\File{foo}'' to the list of known + file extensions while loading your package with the file name + ``\File{bar.sty}'': +\begin{lstcode} + \addtotoclist{foo} +\end{lstcode}% + This will add the extension ``\PValue{foo}'' with the owner + ``\PValue{bar.sty}'' to the list of known extensions if this extension was + not already in the list. If the class or another package has already added + the extension, you will get the error: +\begin{lstoutput} + Package tocbasic Error: file extension `foo' cannot be used twice + + See the tocbasic package documentation for explanation. + Type H <return> for immediate help. +\end{lstoutput} + If you press the ``\texttt{h}'' key followed by return, you will get the + following help: +\begin{lstoutput} + File extension `foo' is already used by a toc-file, while bar.sty + tried to use it again for a toc-file. + This may be either an incompatibility of packages, an error at a package, + or a mistake by the user. +\end{lstoutput} + + Perhaps your package also provides a command that dynamically generates a + content list. In this case, you should use the optional argument of + \Macro{addtotoclist} to specify the owner. +\begin{lstcode} + \newcommand*{\createnewlistofsomething}[1]{% + \addtotoclist[bar.sty]{#1}% + % Do something more to make this content list available + } +\end{lstcode} + Now if the user calls this command, for example with +\begin{lstcode} + \createnewlistofsomething{foo} +\end{lstcode} + this will add the extension ``\PValue{foo}'' with the owner + ``\PValue{bar.sty}'' to the list of known extension or report an error, if + the extension is already in use. +\end{Example} +You can specify any \PName{owner} you want, but it must be unique. For +example, if you were the author of the \Package{float} package, you could +specify ``\PValue{float}'' instead of ``\PValue{float.sty}'' as the +\PName{owner}. In this case, the \KOMAScript{} +options\important{\DescRef{maincls.option.listof}}% +\IndexOption{listof~=\PName{setting}} for the list of figures and the list of +tables would also affect your content lists because these lists are already +added to the list of known file extensions at the time the option is set, and +\KOMAScript{} associates the file extensions ``\PValue{lof}'' for the list of +figures and ``\PValue{lot}'' for the list of tables with the owner +``\PValue{float}'' and sets the options for this owner. + +By the way, the \hyperref[cha:scrhack]{\Package{scrhack}}% +\IndexPackage{scrhack}\important{\hyperref[cha:scrhack]{\Package{scrhack}}} +package contains patches for several packages, such as \Package{float} or +\Package{listings}, which provide their own content lists. If you use +\hyperref[cha:scrhack]{\Package{scrhack}}, among other things, the respective +file extensions will be added to the list of known file extensions. Their +\PName{owner} is also ``\PValue{float}''. This is the basic building block, so +to speak, allowing you to use the features of \Package{tocbasic} and the +\KOMAScript{} classes with these content lists as well.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AtAddToTocList}\OParameter{owner}\Parameter{commands} +\end{Declaration} +This command adds the \PName{commands} to an internal list of commands that +will be processed whenever a file extension with the specified \PName{owner} +is added to the list of known extensions with +\DescRef{\LabelBase.cmd.addtotoclist}. The optional argument is handled in the +same way as in the \DescRef{\LabelBase.cmd.addtotoclist} command. If you leave +the optional argument blank, the commands will always be executed, regardless +of the owner, every time a new file extension is added to the list of known +file extensions. Furthermore, while processing the \PValue{commands}, +\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} is set to the +extension of the extension currently being added. +\begin{Example} + \Package{tocbasic} itself uses +\begin{lstcode} + \AtAddToTocList[]{% + \expandafter\tocbasic@extend@babel + \expandafter{\@currext}% + } +\end{lstcode} + to add every file extension to the existing \Package{tocbasic} integration + with the \Package{babel} package. +\end{Example} + +The two \Macro{expandafter} commands in the example are needed because the +argument of \DescRef{\LabelBase.cmd.tocbasic@extend@babel} has to be expanded. +See the description of \DescRef{\LabelBase.cmd.tocbasic@extend@babel} in +\autoref{sec:tocbasic.internals}, +\DescPageRef{\LabelBase.cmd.tocbasic@extend@babel} for more information.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{removefromtoclist}\OParameter{owner}\Parameter{extension} +\end{Declaration} +This command removes the \PName{extension} from the list of known extensions. +If the optional argument, \OParameter{owner}, is given, the \PName{extension} +will only be removed if it was added by this \PName{owner}. See +\DescRef{\LabelBase.cmd.addtotoclist} for an explanation of how the list owner +is determined if the optional argument is omitted. If you specify an empty +\PName{owner}, the owner is not tested and the \PName{extension} is removed +regardless of the owner.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{doforeachtocfile}\OParameter{owner}\Parameter{commands} +\end{Declaration} +To this point, we've introduced commands provide additional security for class +and package authors, but also more overhead. With \Macro{doforeachtocfile}, +you can reap the first benefit for this. This command lets you execute the +specified \PName{commands} for each file extension associated with an +\PName{owner}. While processing the \PName{commands}, \Macro{@currext} is the +extension of the current file. If you omit the optional \OParameter{owner} +argument, all file extensions are processed regardless of the owner. If the +optional argument is empty, on the other hand, only extensions with an empty +owner will be processed. +\begin{Example} + If you want to output a list of all known file extensions to the terminal + and to the \File{log} file, you can easily accomplish this: +\begin{lstcode} + \doforeachtocfile{\typeout{\@currext}} +\end{lstcode} + If, on the other hand, you only want to output the extensions owned by + ``\PValue{foo}'', this too is easy: +\begin{lstcode} + \doforeachtocfile[foo]{\typeout{\@currext}} +\end{lstcode} +\end{Example} +The \KOMAScript{} classes \Class{scrbook} and \Class{scrreprt} use this +command to optionally put a vertical skip or the chapter heading in content +lists using the \PValue{chapteratlist} feature. You can learn how to set this +feature in \autoref{sec:tocbasic.toc} on +\DescPageRef{\LabelBase.cmd.setuptoc}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasicautomode} +\end{Declaration} +This command redefines \LaTeX{} kernel macro \Macro{@starttoc} for class and +package authors so that every time \Macro{@starttoc} is called, the specified +file extension is added to the list of known extensions, if it has not already +been added. It also uses \DescRef{\LabelBase.cmd.tocbasic@starttoc} instead of +\Macro{@starttoc}. See \autoref{sec:tocbasic.internals}, +\DescPageRef{\LabelBase.cmd.tocbasic@starttoc} for more information about +\DescRef{\LabelBase.cmd.tocbasic@starttoc} and \Macro{@starttoc}. + +After you use \Macro{tocbasicautomode}, every content list created with +\Macro{@starttoc} is automatically put under the control of +\Package{tocbasic}. Whether or not this leads to the desired result, however, +depends very much on the individual content list. The \Package{babel} package +extensions, at least, will work for all those content lists. Nevertheless, it +is preferable for the class or package authors to use \Package{tocbasic} +explicitly. That way they can also take advantage of the other features of +\Package{tocbasic}, which are described in the following sections.% +\EndIndexGroup + + +\section{Creating a Content List} +\label{sec:tocbasic.toc} + +In the previous section, you learned how to maintain a list of known file +extensions and how to automatically execute commands when adding new +extensions to this list. You also saw a command that can be used to execute +instructions for all known extensions or all extensions belonging to one +owner. In this section, you will learn commands that apply to the files +associated with these file extensions. + +\begin{Declaration} + \Macro{addtoeachtocfile}\OParameter{owner}\Parameter{content} +\end{Declaration} +The \Macro{addtoeachtocfile} command uses the \LaTeX{} kernel command +\Macro{addtocontents} to write the \PName{content} to every TOC file\Index{TOC +file} in the list of known file extensions that has the specified +\PName{owner}. If you omit the optional argument, the \PName{content} is +written to each file in the list of known file extensions. Incidentally, the +actual file name is constructed from \Macro{jobname} and the file extension. +While writing the \PName{content}, +\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} is the +extension of the file currently being processed. +\begin{Example} + You want to add a vertical space of one line to all TOC files. +\begin{lstcode} + \addtoeachtocfile{% + \protect\addvspace{\protect\baselineskip}% + } +\end{lstcode} + If, on the other hand, you want to do this only for the files that have the + owner ``\PValue{foo}'', use: +\begin{lstcode} + \addtoeachtocfile[foo]{% + \protect\addvspace{\protect\baselineskip}% + } +\end{lstcode} +\end{Example} +You should protect commands that should not be expanded when they are written +by prefixing them with \Macro{protect}, in the same way as you would in +\Macro{addtocontents}. +\EndIndexGroup + + +\begin{Declaration} + \Macro{addxcontentsline}% + \Parameter{extension}\Parameter{level}\OParameter{section number}% + \Parameter{text} +\end{Declaration} +This command is very similar to +\Macro{addcontentsline}\IndexCmd{addcontentsline} from the \LaTeX{} kernel. +However, it has an additional optional argument for the \PName{section number} +of the entry, whereas for \Macro{addcontentsline}, it is specified in the +\PName{text} argument. It is used to include numbered or unnumbered entries in +the content list specified by the file \PName{extension}, where \PName{level} +is the sectioning level and \PName{text} is the content of the corresponding +entry. The page number is determined automatically. + +In contrast to \Macro{addcontentsline}, \Macro{addxcontentsline} first tests +whether the \Macro{add\PName{level}\PName{extension}entry} command is defined. +If so, it will be used for the entry, passing the \PName{section number} as an +optional argument and \PName{text} as a mandatory argument. You can find an +example of such a command provided by the \KOMAScript{} classes in +\DescRef{maincls-experts.cmd.addparttocentry} (see +\autoref{sec:maincls-experts.experts}, +\DescPageRef{maincls-experts.cmd.addparttocentry}). If the corresponding +command is undefined, the internal command +\DescRef{\LabelBase.cmd.tocbasic@addxcontentsline} is used instead. This takes +all four arguments as mandatory arguments and then uses +\Macro{addcontentsline} to create the desired entry. You can find more about +\DescRef{\LabelBase.cmd.tocbasic@addxcontentsline} in +\autoref{sec:tocbasic.internals}, +\DescPageRef{\LabelBase.cmd.tocbasic@addxcontentsline}. + +One advantage of using \Macro{addxcontentsline} rather than +\Macro{addcontentsline} is that the \PValue{numberline} feature is respected +(see \DescPageRef{\LabelBase.cmd.setuptoc}). Furthermore, you can configure +the form of the entries by defining the appropriate commands specific to the +\PName{level} and file \PName{extension}.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{addxcontentslinetoeachtocfile}\OParameter{owner} + \Parameter{level} + \OParameter{section number}% + \Parameter{text} + \Macro{addcontentslinetoeachtocfile}\OParameter{owner} + \Parameter{level}\Parameter{text}% +\end{Declaration} +These two commands are directly related to +\DescRef{\LabelBase.cmd.addxcontentsline}\ChangedAt{v3.12}{\Package{tocbasic}} +explained above, or to \Macro{addcontentsline} from the \LaTeX kernel. The +difference is that these statements write \PName{text} not just to a single +file but to all the files of a given \PName{owner} and, if the first optional +argument is omitted, to all files in the list of known file extensions. +\begin{Example} + Suppose you are a class author and you want to write the chapter entry not + just in the table of contents but in all content-list files. Suppose further + that \PValue{\#1} currently contains the text to be written. +\begin{lstcode} + \addxcontentslinetoeachtocfile{chapter}% + [\thechapter]{#1} +\end{lstcode} + In this case, of course, the current chapter number should be expanded + directly when writing to the TOC file, which is why it was not protected + from expansion with \Macro{protect}. +\end{Example} +While writing the \PName{content}, +\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} here is also +the extension of the file being written to, as it is with +\DescRef{\LabelBase.cmd.addtoeachtocfile}.% + +Whenever\ChangedAt{v3.12}{\Package{tocbasic}} possible, the +\Macro{addxcontentslinetoeachtocfile} command is preferable to +\Macro{addcontentslinetoeachtocfile} because only the former offers the +enhancements of \DescRef{\LabelBase.cmd.addxcontentsline}. You can find more +about these enhancements and benefits in the explanation of +\DescRef{\LabelBase.cmd.addxcontentsline} above.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{listoftoc}\OParameter{list-of title}\Parameter{extension}% + \Macro{listoftoc*}\Parameter{extension}% + \Macro{listofeachtoc}\OParameter{owner}% + \Macro{listof\PName{extension}name} +\end{Declaration} +You can use these commands to print the content lists. +The\important{\Macro{listoftoc*}} stared version \Macro{listoftoc*} needs only +one argument, the \PName{extension} of the file. The command first initializes +the vertical and horizontal spacing of paragraphs, calls the hook to execute +commands before reading the file, then reads the file, and finally executes +the hook to execute commands after reading the file. Thus you can think of +\Macro{listoftoc*} as a direct replacement for the \LaTeX{} kernel macro +\Macro{@starttoc}\IndexCmd{@starttoc}\important{\Macro{@starttoc}}. + +The\important{\Macro{listoftoc}} version of \Macro{listoftoc} without the star +prints the complete content list and also creates an optional entry in the +table of contents and the running heads. If you provide the optional +\OParameter{list-of title} argument, it is used both as the title for the list +and as an optional entry in the table of contents and the running head. +If\textnote{Attention!} the \OParameter{list-of title} argument is empty, the +title will be empty too. If, on the other hand, you completely omit the +optional argument, including the square brackets, the +\Macro{listof\PName{extension}name} command will be used if it is defined. If +it is undefined, a default replacement name is used and a warning is issued. + +The\important{\Macro{listofeachtoc}} \Macro{listofeachtoc} command outputs all +content lists associated with the given \PName{owner}, or of all known file +extensions if the optional argument is omitted. To\textnote{Attention!} output +the correct titles, \Macro{listof\PName{extension}name} should be defined. + +You\textnote{Hint!} should define \Macro{listof\PName{extension}name} +appropriately for all file extensions because users may use \Macro{listoftoc} +without the optional argument, or \Macro{listofeachtoc}, themselves. +\begin{Example} + Suppose you have a new ``list of algorithms'' with the file extension + \PValue{loa} and want to output it. The command +\begin{lstcode} + \listoftoc[List of Algorithms]{loa} +\end{lstcode} + will do it for you. If, however, you want to output this list without a + title, you could use +\begin{lstcode} + \listof*{loa} +\end{lstcode} + In the second case, of course, there will be no entry in the table of + contents. For more information about creating entries in the table of + contents, see the \DescRef{\LabelBase.cmd.setuptoc} command on + \DescPageRef{\LabelBase.cmd.setuptoc}. + + If you have defined +\begin{lstcode} + \newcommand*{\listofloaname}{% + List of Algorithms% + } +\end{lstcode} + already, then +\begin{lstcode} + \listoftoc{loa} +\end{lstcode} + will suffice to print the content list with the desired heading. It may be + easier for users to remember if you also define a simple list-of command: +\begin{lstcode} + \newcommand*{\listofalgorithms}{\listoftoc{loa}} +\end{lstcode} +\end{Example} + +Because\textnote{Attention!} \LaTeX{} normally opens a new file for each of +these content lists, calling each of these commands may +result in an error like: +\begin{lstoutput} + ! No room for a new \write . + \ch@ck ...\else \errmessage {No room for a new #3} + \fi +\end{lstoutput} +if there are no more write handles left. Loading the +\Package{scrwfile}\important{\Package{scrwfile}}\IndexPackage{scrwfile} +package (see \autoref{cha:scrwfile}) can solve this problem. + +Also, the \hyperref[cha:scrhack]{\Package{scrhack}}\IndexPackage{scrhack}% +\important{\hyperref[cha:scrhack]{\Package{scrhack}}} package contains patches +for several packages, such as \Package{float} or \Package{listings}, so that +their content-list commands can use \Macro{listoftoc}. As a result, many +features of \Package{tocbasic} and the \KOMAScript{} classes are also +available for their content lists.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{BeforeStartingTOC}\OParameter{extension}\Parameter{commands}% + \Macro{AfterStartingTOC}\OParameter{extension}\Parameter{commands} +\end{Declaration} +Sometimes it's useful to be able to execute \PName{commands} immediately +before reading the auxiliary TOC file. With \Macro{BeforeStartingTOC} you can +do so either for a single file \PName{extension} or for all files that are +read using \DescRef{\LabelBase.cmd.listoftoc*}, +\DescRef{\LabelBase.cmd.listoftoc}, or \DescRef{\LabelBase.cmd.listofeachtoc}. +You can also execute \PName{commands} after reading the file if you define +them with \Macro{AfterStartingTOC}. If you omit the optional argument (or set +an empty one) a general hook will be set and the commands will be applied to +all content lists. The general before-hook is called before the individual +one, and the general after-hook is called after the individual one. While +executing the commands in these hooks, +\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} is the +extension of the TOC file which is about to be or has just been read. + +You can find an example\textnote{Example} using \Macro{BeforeStartingTOC} in +\autoref{sec:scrwfile.clonefilefeature} on +\PageRefxmpl{scrwfile.cmd.BeforeStartingTOC}. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{BeforeTOCHead}\OParameter{extension}\Parameter{commands}% + \Macro{AfterTOCHead}\OParameter{extension}\Parameter{commands} +\end{Declaration} +You can also define \PName{commands} that will be executed immediately before +or after setting the title of a content list using +\DescRef{\LabelBase.cmd.listoftoc*} or \DescRef{\LabelBase.cmd.listoftoc}. The +treatment of the optional parameter and the meaning of +\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} is the same as +described for \DescRef{\LabelBase.cmd.BeforeStartingTOC} and +\DescRef{\LabelBase.cmd.AfterStartingTOC}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{MakeMarkcase}\Parameter{text} +\end{Declaration} +Whenever \Package{tocbasic} sets a mark for a running head, The text of the +mark will be an argument of \Macro{MakeMarkcase}. You can use this command to +change the case of the running head if necessary. The \KOMAScript{} classes +use \Macro{@firstofone}\IndexCmd{@firstofone}\important{\Macro{@firstofone}} +by default. This means the text of the running head will be set without +changing the capitalisation. If you use a different class, +\Macro{MakeMarkcase} will be set to +\Macro{MakeUppercase}\IndexCmd{MakeUppercase}% +\important{\Macro{MakeUppercase}}. However, \Package{tocbasic} only defines +this command if it is not already defined. It can therefore be predefined by +another class or package and \Package{tocbasic} will use that definition +rather than overwriting it. +\begin{Example} + For some strange reason, you want to set the running heads entirely in + lower-case letters. To apply this change automatically for all running heads + set by \Package{tocbasic}, you define: +\begin{lstcode} + \let\MakeMarkcase\MakeLowercase +\end{lstcode} +\end{Example} +Let\textnote{Hint!} me give you some advice about +\Macro{MakeUppercase}\IndexCmd{MakeUppercase}. First of all, this command is +not fully expandable. This means that it can cause problems interacting with +other commands. Beyond that, typographers agree that whenever you set whole +words or phrases in capital letters, additional spacing is absolutely +necessary. However, adding a fixed spacing between all letters is not an +adequate solution. Different pairs of letters require different spaces between +them. Additionally, some letters already create gaps in the text that must be +taken into account. Packages like \Package{ulem} or \Package{soul} can +scarcely achieve this, nor can \Macro{MakeUppercase}. The automatic letter +spacing using the \Package{microtype} package is in this respect only an +approximate solution, because it does not take into account the concrete, +font-dependent glyphs. Because\textnote{Attention!} typesetting all-capital +text is expert work and almost always requires manual adjustment, ordinary +users are recommended avoid using it, or to use it only sparingly and not in +such an exposed place as the running head.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{deftocheading}\Parameter{extension}\Parameter{definition} +\end{Declaration} +The \Package{tocbasic} package contains a default definition for typesetting +the titles of content lists. You can configure this default definition through +various features discussed in the \DescRef{\LabelBase.cmd.setuptoc} comand +below. If those features are not enough, you can use \Macro{deftocheading} +to define your own title for the content list with the given file +\PName{extension}. The \PName{definition} of the title can use a single +parameter, \PValue{\#1}. When the command is called inside +\DescRef{\LabelBase.cmd.listoftoc} or \DescRef{\LabelBase.cmd.listofeachtoc}, +that \PValue{\#1} will be replaced by the title of this content list.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setuptoc}\Parameter{extension}\Parameter{feature list}% + \Macro{unsettoc}\Parameter{extension}\Parameter{feature list} +\end{Declaration} +You can use these two commands to set and clear features for a TOC file +\PName{extension} or the content list associated with it. The \PName{feature +list} is a comma-separated list of features. The \Package{tocbasic} package +recognizes following features: +\begin{description} +\item[\texttt{leveldown}] means that the content list's heading is created not + with the highest sectioning level below + \DescRef{maincls.cmd.part}\,---\,\DescRef{maincls.cmd.chapter} if available, + \DescRef{maincls.cmd.section} otherwise\,---\,but with a heading of the next + level below that. This feature is evaluated by the internal heading command. + On the other hand, if a user-defined heading command has been created with + \DescRef{\LabelBase.cmd.deftocheading}, the person defining that command is + responsible for evaluating the feature. The \KOMAScript{} classes set this + feature using the \OptionValueRef{maincls}{listof}{leveldown}% + important{\OptionValueRef{maincls}{listof}{leveldown}}% + \IndexOption{listof~=\textKValue{leveldown}} option for all file extensions + with the owner \PValue{float}. +\item[\texttt{nobabel}] prevents using the language-switching features of + \Package{babel}\IndexPackage{babel} for the TOC file associated with the + this file \PName{extension}. This feature should be used only for content + lists that are created in a fixed language, which means that changes of the + language inside of the document will no longer affect the content list. The + \Package{scrwfile}\important{\Package{scrwfile}}\IndexPackage{scrwfile} + package also uses this feature for cloned destinations, as because those + files already inherit any language changes from the cloning source. + + Note\textnote{Attention!} that you must set this feature before you add a + file extension to the list of known extensions. Changing the feature + afterwards will have no effect. +\item[\texttt{noparskipfake}] prevents\ChangedAt{v3.17}{\Package{tocbasic}} + the insertion of a final \Length{parskip} before switched off paragraph + spacing for content lists. In general, this will cause documents that use + spacing between paragraphs to have less vertical space between the list + heading and first entry than between normal headings and normal text. + Normally, therefore, you will obtain a more uniform formatting without this + feature. +\item[\texttt{noprotrusion}] prevents\ChangedAt{v3.10}{\Package{tocbasic}} + character protrusion, which allows optical margin alignment, from being + disabled in the content lists. By default, character protrusion is disabled + when the \Package{microtype}\IndexPackage{microtype} package, or another + package that supports \Macro{microtypesetup}\IndexCmd{microtypesetup}, is + loaded. So if you want optical margin alignment in the content lists, you + must set this feature. Note\textnote{Attention!}, however, that character + protrusion in content lists often results in incorrect results. This is a + known issue with character protrusion. +\item[\texttt{numbered}] means that the heading for the content list should + be numbered and included in the table of contents. This feature is evaluated + by the internal heading command. However, if a user-defined heading command + has been created with \DescRef{\LabelBase.cmd.deftocheading}, the person + creating that definition is responsible evaluating the feature. The + \KOMAScript{} classes set this feature using the + \OptionValueRef{maincls}{listof}{numbered}% + \important{\OptionValueRef{maincls}{listof}{numbered}}% + \IndexOption{listof~=\textKValue{numbered}} option for all file extensions + with the owner \PValue{float}. +\item[\texttt{numberline}] \leavevmode\ChangedAt{v3.12}{\Package{tocbasic}}% + means that any entries made using \DescRef{\LabelBase.cmd.addxcontentsline} + or \DescRef{\LabelBase.cmd.addxcontentslinetoeachtocfile}, where the + optional argument for the number is missing or empty, will be provided with + an empty \DescRef{\LabelBase.cmd.numberline} command. This usually results + in these entries being left-aligned not with the number but with the text of + the numbered entries of the same level. + Using\ChangedAt{v3.20}{\Package{tocbasic}} the \PValue{tocline} entry style + can have additional side effects. See the style attribute + \Option{breakafternumber} and \Option{entrynumberformat} in + \autoref{tab:tocbasic.tocstyle.attributes} starting on + \autopageref{tab:tocbasic.tocstyle.attributes}. + + \KOMAScript{} classes set this feature for the file extensions with the + owner \PValue{float} if you use the + \OptionValueRef{maincls}{listof}{numberline}% + \important{\OptionValueRef{maincls}{listof}{numberline}}% + \IndexOption{listof~=\textKValue{numberline}} option and for the file + extension \PValue{toc} if you use the + \OptionValueRef{maincls}{toc}{numberline}% + \important{\OptionValueRef{maincls}{toc}{numberline}}% + \IndexOption{toc~=\textKValue{numberline}} option. Similarly, this feature + is reset if you use \OptionValueRef{maincls}{listof}{nonumberline}% + \important{\OptionValueRef{maincls}{listof}{nonumberline}}% + \IndexOption{listof~=\textKValue{nonumberline}} or + \OptionValueRef{maincls}{toc}{nonumberline}% + \important{\OptionValueRef{maincls}{toc}{nonumberline}}% + \IndexOption{toc~=\textKValue{nonumberline}}. +\item[\texttt{onecolumn}] \leavevmode\ChangedAt{v3.01}{\Package{tocbasic}}% + means that this content list will automatically use \LaTeX's internal + one-column mode with \Macro{onecolumn}\IndexCmd{onecolumn}. + However\textnote{Attention!}, this applies only if this content list does + not use the \PValue{leveldown}\important{\PValue{leveldown}} feature. The + \KOMAScript{} classes \Class{scrbook} and \Class{scrreprt} activate this + feature with \DescRef{\LabelBase.cmd.AtAddToTocList} (see + \autoref{sec:tocbasic.basics}, \DescPageRef{\LabelBase.cmd.AtAddToTocList}) + for all content lists with the owner \PValue{float} or with themselves as + owner. Thus, for example, the table of contents, the list of figures, and + the list of tables are automatically printed in a single column for both + these classes. The multicolumn mode of the + \Package{multicol}\IndexPackage{multicol} package is expressly unaffected by + this option. +\item[\texttt{totoc}] means that the title of content list should be included + in the table of contents. This feature will be evaluated by the internal + heading command. However, if an user-defined heading command has been + created with \DescRef{\LabelBase.cmd.deftocheading}, the person defining + that command is responsible for evaluating this feature. The \KOMAScript{} + classes set this feature using the \OptionValueRef{maincls}{listof}{totoc}% + \important{\OptionValueRef{maincls}{listof}{totoc}}% + \IndexOption{listof~=\textKValue{totoc}} option for all file extensions with + the owner \PValue{float}. +\end{description} +The \KOMAScript{} classes recognize an additional feature: +\begin{description} +\item[\texttt{chapteratlist}] ensures that an optional subdivision is added + to the content list for each new chapter. By default, this subdivision is a + vertical space. See \DescRef{maincls.option.listof}% + \IndexOption{listof}\important{\DescRef{maincls.option.listof}} in + \autoref{sec:maincls.floats}, \DescPageRef{maincls.option.listof} for more + information about this option. +\end{description} +\begin{Example} + Because \KOMAScript{} classes use \Package{tocbasic} for the list of figures + and list of tables, there is another way to prevent chapter subdivisions in + these lists: +\begin{lstcode} + \unsettoc{lof}{chapteratlist} + \unsettoc{lot}{chapteratlist} +\end{lstcode} + + If you want the chapter subdivisions for your own list that you have defined + with the file \PName{extension} ``\PValue{loa}'' to use the same subdivision + format used by the \KOMAScript{} classes, you can use +\begin{lstcode} + \setuptoc{loa}{chapteratlist} +\end{lstcode} + And if you also want classes that use \DescRef{maincls.cmd.chapter} as the + top-level structure to use the one-column mode automatically, you can + use +\begin{lstcode} + \ifundefinedorrelax{chapter}{}{% + \setuptoc{loa}{onecolumn}% + } +\end{lstcode} + Using \DescRef{scrbase.cmd.ifundefinedorrelax} requires the + \Package{scrbase} package (see \autoref{sec:scrbase.if}, + \DescPageRef{scrbase.cmd.ifundefinedorrelax}). + + Even\textnote{Hint!} if your package will be used with another class, it + does not hurt to set these features. To the contrary, if another class also + evaluates these features, then your package would automatically use the + features of that class. +\end{Example} +As you can see, packages that use \Package{tocbasic} already support a wide +range of options for content lists that would otherwise require a great deal +of effort to implement and which are therefore missing in many packages.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{iftocfeature}\Parameter{extension}\Parameter{feature}% + \Parameter{then code}\Parameter{else code} +\end{Declaration} +You can use this command to test if a \PName{feature} was set for the given +file \PName{extension}. If so the \PName{then code} will be executed, +otherwise the \PName{else code} will be. This can be useful, for example, if +you define your own heading command using +\DescRef{\LabelBase.cmd.deftocheading} but want to support the features +\PValue{totoc}, \PValue{numbered} or \PValue{leveldown}.% +\EndIndexGroup + + +\section{Configuring Content-List Entries} +\seclabel{tocstyle}% +\BeginIndexGroup +\BeginIndex{}{table of contents>entry}% +\Index{list of contents|\see{table of contents}} + +Since\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} version~3.20, the +\Package{tocbasic} package has been able not only to configure the tables or +lists of contents and their auxiliary files but also to influence their +entries. To do so, you can define new styles or you can use and configure one +of the predefined styles. In the medium term, \Package{tocbasic} will replace +the experimental \Package{tocstyle} package that never became an official part +of the \KOMAScript{} bundle. The \KOMAScript{} classes themselves have relied +completely on the \Package{tocbasic} entry styles since version~3.20. + +\begin{Declaration} + \Counter{tocdepth} +\end{Declaration} +Entries to content lists are usually hierarchical. For this purpose, each +entry level has a numerical value. The higher this value, the lower in the +hierarchy is this level. In the standard classes, for example, parts have the +level -1 and chapters have the value 0. The \LaTeX{} counter +\Counter{tocdepth} determines the deepest level that should be shown in the +table of contents and other content lists. + +For example, the \Class{book} class sets \Counter{tocdepth} to 2, so entries +of the levels \PValue{part}, \PValue{chapter}, \PValue{section}, and +\PValue{subsection} are printed. Deeper levels like \PValue{subsubsection}, +which has the numerical value 3, are not printed. Nevertheless the entries are +part of the auxiliary file for the table of contents. + +Note that most \Package{tocbasic} entry styles, with the exception of +\PValue{gobble} (see \DescRef{\LabelBase.cmd.DeclareTOCStyleEntry}\iffree{}{, +later in this section}) observe \Counter{tocdepth}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{numberline}\Parameter{entry number}% + \Macro{usetocbasicnumberline}\OParameter{code} +\end{Declaration} +Although\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} the \LaTeX{} kernel +already defines a \Macro{numberline} command, the definition is not sufficient +for \Package{tocbasic}. Therefore \Package{tocbasic} defines its own commands +and sets \Macro{numberline} as needed using \Macro{usetocbasicnumberline} for +each content-list entry. Redefining \Macro{numberline}, therefore, is often +ineffective and may result in warnings if you use \Package{tocbasic}. + +You can use the definition of \Package{tocbasic} by putting +\Macro{usetocbasicnumberline} into your document's preamble. The command first +checks if the current definition of \Macro{numberline} +uses certain important, internal commands of \Package{tocbasic}. If this is not +the case, \Macro{usetocbasicnumberline} redefines \Macro{numberline} and +executes \PName{code}. If you omit the optional argument, it issues +a message about the redefinition with \Macro{PackageInfo}. If +you just do not want such a message, use an empty optional argument. + +Note\textnote{Attention!} that \Macro{usetocbasicnumberline} can change the +internal switch \Macro{@tempswa} globally!% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DeclareTOCStyleEntry}\OParameter{option list}\Parameter{style}% + \Parameter{entry level} + \Macro{DeclareTOCStyleEntries}\OParameter{option list}\Parameter{style}% + \Parameter{entry level list} +\end{Declaration} +These\ChangedAt{v3.20}{\Package{tocbasic}} commands define or configure the +content-list entries of a given \PName{entry level}. The \PName{entry level} +argument is a symbolic name, e.\,g. \PValue{section}, for the entry to the +table of contents of the section level with the same name or \PValue{figure} +for an entry of a figure to the list of figures. A \PName{style} is assigned +to each \PName{entry level}. The \PName{style} has to be defined before using +it as an argument of \Macro{DeclareTOCStyleEntry} or +\Macro{DeclareTOCStyleEntries}. You can use the \PName{option list} to +configure the various, usually \PName{style}-dependent, attributes of the +entries. + +Currently, \Package{tocbasic} defines the following entry styles: +\begin{description} +\item[\PValue{default}] defaults to a clone of the \PValue{dottedtocline} + style. Class authors who use \Package{tocbasic} are encouraged to change + this style to the default content-list style of the class using + \Macro{CloneTOCStyle}. For example the \KOMAScript{} classes change + \PValue{default} into a clone of \PValue{tocline}. +\item[\PValue{dottedtocline}] is similar to the style used by the standard + classes \Class{book} and \Class{report} for the \PValue{section} down to + \PValue{subparagraph} entry levels of the table of contents and for the + entries at the list of figures or list of tables. It supports the attributes + \PValue{level}, \PValue{indent}, and \PValue{numwidth}. The entries are + indented by the value of \PValue{indent} from the left. The width of the + entry number is given by the value of \PValue{numwidth}. For multi-line + entries, the indent will be increased by the value of \PValue{numwidth} for + the second and following lines. The page number is printed using + \Macro{normalfont}\IndexCmd{normalfont}. The entry text and the page number + are connected by a dotted line. \hyperref[fig:tocbasic.dottedtocline]% + {Figure~\ref*{fig:tocbasic.dottedtocline}} illustrates the attributes of + this style. + \begin{figure} + \centering + \resizebox{.8\linewidth}{!}{% + \begin{tikzpicture} + \draw[color=lightgray] (0,2\baselineskip) -- (0,-2.5\baselineskip); + \draw[color=lightgray] (\linewidth,2\baselineskip) -- + (\linewidth,-2.5\baselineskip); + \node (dottedtocline) at (0,0) [anchor=west,inner sep=0,outer sep=0] + {% + \hspace*{7em}% + \parbox[t]{\dimexpr\linewidth-9.55em}{% + \setlength{\parindent}{-3.2em}% + \addtolength{\parfillskip}{-2.55em}% + \makebox[3.2em][l]{1.1.10}% + Text of an entry in the table of contents with the + \PValue{dottedtocline} style and more than one line% + \leaders\hbox{$\csname m@th\endcsname + \mkern 4.5mu\hbox{.}\mkern 4.5mu$}\hfill\nobreak + \makebox[1.55em][r]{12}% + }% + }; + \draw[|-|,color=gray,overlay] (0,0) -- + node [anchor=north,font=\small] { + \PValue{indent} + } + (3.8em,0); + \draw[|-|,color=gray,overlay] (3.8em,\baselineskip) -- + node [anchor=south,font=\small] { + \PValue{numwidth} + } + (7em,\baselineskip); + \draw[|-|,color=gray,overlay] (\linewidth,\ht\strutbox) -- + node [anchor=south,font=\small] { + \Macro{@tocrmarg} + } + (\linewidth-2.55em,\ht\strutbox); + \draw[|-|,color=gray,overlay] (\linewidth,-\baselineskip) -- + node [anchor=north,font=\small] { + \Macro{@pnumwidth} + } + (\linewidth-1.55em,-\baselineskip); + \end{tikzpicture}% + } + \caption{Illustrations of some attributes of a TOC entry with the + \PValue{dottedtocline} style} + \label{fig:tocbasic.dottedtocline} + \end{figure} +\item[\PValue{gobble}] is the simplest possible style. Entries in this style, + regardless of the setting of \DescRef{\LabelBase.counter.tocdepth}% + \IndexCounter{tocdepth}\important{\DescRef{\LabelBase.counter.tocdepth}}, + will never be printed. The style simply gobbles the + entries, so to speak. It has the default \PValue{level} attribute, but + it is never evaluated. +\item[\PValue{largetocline}] is similar to the style used by the standard + classes for the \PValue{part} level. It supports the \PValue{level} and + \PValue{indent} attributes only. The latter deviates from the standard + classes, which do not support an indent of the \PValue{part} entries. + + A penalty is set to permit page breaks before an entry of an appropriate + level. The entries will be indented by the value of \PValue{indent} from the + left and printed with the font style \Macro{large}\Macro{bfseries}. If + \DescRef{\LabelBase.cmd.numberline} is used, the number width is 3\Unit{em}. + \DescRef{\LabelBase.cmd.numberline} is not redefined. The standard classes + do not use \DescRef{\LabelBase.cmd.numberline} for \PName{part} entries. The + value of \PName{indent} also has no effect on the indentation from the + second line and after in a multi-line entry. + + \hyperref[fig:tocbasic.largetocline]% + {Figure~\ref*{fig:tocbasic.largetocline}} illustrates the characteristics of + this style. You will also notice that the style has adopted some + inconsistencies present in the standard classes, e.\,g. the missing indent + of the second and following lines of an entry or the different values of + \Macro{@pnumwidth} that results from the font-size dependency. This can + result, in extreme cases, in the entry text coming too close. Note that the + width of the entry number shown in the figure is only valid if + \DescRef{\LabelBase.cmd.numberline} has been used. The standard classes, + however, use a distance of 1\Unit{em} after the number. + \begin{figure} + \centering + \resizebox{.8\linewidth}{!}{% + \begin{tikzpicture} + \draw[color=lightgray] (0,2\baselineskip) -- (0,-2.5\baselineskip); + \draw[color=lightgray] (\linewidth,2\baselineskip) -- + (\linewidth,-2.5\baselineskip); + \node (largetocline) at (0,0) [anchor=west,inner sep=0,outer sep=0] {% + \parbox[t]{\dimexpr \linewidth-1.55em\relax}{% + \makebox[3em][l]{\large\bfseries I}% + \large\bfseries + Text of an entry to the table of contents with the + \PValue{largetocline} style and more than one line% + \hfill + \makebox[0pt][l]{\normalsize\normalfont + \makebox[1.55em][r]{\large\bfseries 1}}% + }% + }; + \draw[|-|,color=gray] (0,\baselineskip) -- + node [anchor=south] { 3\,em } + (3em,\baselineskip); + \draw[|-|,color=gray,overlay] (\linewidth,\ht\strutbox) -- + node [anchor=south] { \Macro{@pnumwidth} } + (\linewidth-1.55em,\ht\strutbox); + \large\bfseries + \draw[|-|,color=gray,overlay] (\linewidth,-\baselineskip) -- + node [anchor=north,font=\normalfont\normalsize] { + \Macro{large}\Macro{@pnumwidth} + } + (\linewidth-1.55em,-\baselineskip); + \end{tikzpicture}% + } + \caption{Illustrations of some attributes of a TOC entry with style + \PValue{largetocline}} + \label{fig:tocbasic.largetocline} + \end{figure} +\item[\PValue{tocline}] is a flexible style. The \KOMAScript{} classes use + this style by default for all kinds of entries. Likewise, these classes + define the clones \PValue{part}, \PValue{chapter}, and \PValue{section}, or + \PValue{section} and \PValue{subsection} using this style, but add extra + \PName{initial code} to the clones to change their defaults. + + The style supports 16\important{\PValue{level}, \PValue{beforeskip}, + \PValue{breakafternumber}, \PValue{dynnumwidth}, \PValue{entryformat}, + \PValue{entrynumberformat}, \PValue{indent}, \PValue{linefill}, + \PValue{numsep}, \PValue{numwidth}, \PValue{onstarthigherlevel}, + \PValue{onstartlowerlevel}, \PValue{onstartsamelevel}, + \PValue{pagenumberbox}, \PValue{pagenumberformat}, + \PValue{raggedentrytext}, \PValue{raggedpagenumber}} additional attributes + in addition to the default \PValue{level} attribute. The defaults of all + these attributes depend on the name of the \PName{entry level} and + correspond to the results of the standard classes. So after loading + \Package{tocbasic}, you can change the style of the entries in the table of + contents of the standard classes into \PValue{tocline} using + \DescRef{\LabelBase.cmd.DeclareTOCEntryStyle} without this leading directly + to major changes in their appearance. Thus you can precisely change only + those attributes that are necessary for the desired changes. The same + applies to the list of figures and the list of tables for the standard + classes. + + Because its great flexibility, this style can in principle replace the + \PValue{dottedtocline}, \PValue{undottedtocline}, and \PValue{largetocline} + styles, but this requires more effort to configure. + + \hyperref[fig:tocbasic.tocline]% + {Figure~\ref*{fig:tocbasic.tocline}} illustrates some of the length + attributes of this style. The others are explained in + \autoref{tab:tocbasic.tocstyle.attributes} starting on + \autopageref{tab:tocbasic.tocstyle.attributes}. + \begin{figure} + \centering + \resizebox{.8\linewidth}{!}{% + \begin{tikzpicture} + \coordinate (subsection) at (0,0); + \coordinate (section) at ($(subsection)+(0,2\baselineskip)$); + \coordinate (chapter) at ($(section)+(0,2\baselineskip)$); + \coordinate (part) at ($(chapter)+(0,2.4\baselineskip+1em)$); + + \draw[color=lightgray] + ($(part)+(0,2\baselineskip)$) -- + (0,-2.5\baselineskip); + \draw[color=lightgray] + ($(part)+(\linewidth,2\baselineskip)$) -- + (\linewidth,-2.5\baselineskip); + + \coordinate (subsection) at (0,0); + + \node at (part) [anchor=west,inner sep=0,outer sep=0] + {% + \hspace*{3em}% + \parbox[t]{\dimexpr\linewidth-5.55em}{% + \setlength{\parindent}{-3em}% + \addtolength{\parfillskip}{-2.55em}% + \makebox[3em][l]{\large\bfseries I.}% + \textbf{\large Text of a part entry with the + \PValue{tocline} style and at least two lines of text}% + \hfill + \makebox[1.55em][r]{\bfseries 12}\large + }% + }; + \draw[|-|,color=gray,overlay] + (part) -- + ($(part)+(3em,0)$) + node [anchor=north east,font=\small] { + \PValue{numwidth} + }; + \draw[|-|,color=gray,overlay] + ($(part)+(\linewidth,\ht\strutbox)$) + node [anchor=north,font=\small] { + \Macro{@tocrmarg} + } -- + ($(part)+(\linewidth-2.55em,\ht\strutbox)$); + \draw[|-|,color=gray,overlay] + ($(part)+(\linewidth,-\baselineskip)$) -- + node [anchor=north,font=\small] { + \Macro{@pnumwidth} + } + ($(part)+(\linewidth-1.55em,-\baselineskip)$); + \node at (chapter) [anchor=west,inner sep=0,outer sep=0] + {% + \hspace*{1.5em}% + \parbox[t]{\dimexpr\linewidth-4.05em}{% + \setlength{\parindent}{-1.5em}% + \addtolength{\parfillskip}{-2.55em}% + \makebox[1.5em][l]{\bfseries 1.}% + \textbf{Text of a chapter entry with the + \PValue{tocline} style and more than one line of text + for demonstration purposes}% + \hfill + \makebox[1.55em][r]{\bfseries 12}% + }% + }; + \draw[|-|,color=gray,overlay] + ($(chapter)+(3em,\baselineskip)$) -- + node [anchor=west,font=\small] { + \PValue{beforeskip} + } + ($(part)+(3em,-\baselineskip)$); + \draw[|-|,color=gray,overlay] + (chapter) -- + ($(chapter)+(1.5em,0)$) + node [anchor=north east,font=\small] { + \PValue{numwidth} + }; + \draw[|-|,color=gray,overlay] + ($(chapter)+(\linewidth,\ht\strutbox)$) + node [anchor=north,font=\small] { + \Macro{@tocrmarg} + } -- + ($(chapter)+(\linewidth-2.55em,\ht\strutbox)$); + \draw[|-|,color=gray,overlay] + ($(chapter)+(\linewidth,-\baselineskip)$) + node [anchor=north,font=\small] { + \Macro{@pnumwidth} + } -- + ($(chapter)+(\linewidth-1.55em,-\baselineskip)$); + \node at (section) [anchor=west,inner sep=0,outer sep=0] + { + \hspace*{3.8em}% + \parbox[t]{\dimexpr\linewidth-6.35em}{% + \setlength{\parindent}{-2.3em}% + \addtolength{\parfillskip}{-2.55em}% + \makebox[2.3em][l]{1.1.}% + Text of a section entry with the \PValue{tocline} + style and more than one line of text for + demonstration purposes% + \leaders\hbox{$\csname m@th\endcsname + \mkern 4.5mu\hbox{.}\mkern 4.5mu$}\hfill\nobreak + \makebox[1.55em][r]{3}% + }% + }; + \node at (subsection) [anchor=west,inner sep=0,outer sep=0] + {% + \hspace*{7em}% + \parbox[t]{\dimexpr\linewidth-9.55em}{% + \setlength{\parindent}{-3.2em}% + \addtolength{\parfillskip}{-2.55em}% + \makebox[3.2em][l]{1.1.10.}% + Text of a subsection entry with the \PValue{tocline} + and more than one line of text for demonstration + purposes% + \leaders\hbox{$\csname m@th\endcsname + \mkern 4.5mu\hbox{.}\mkern 4.5mu$}\hfill\nobreak + \makebox[1.55em][r]{12}% + }% + }; + \draw[|-|,color=gray,overlay] + ($(subsection)+(0,\ht\strutbox)$) -- + node [anchor=north,font=\small] { + \PValue{indent} + } + ($(subsection)+(3.8em,\ht\strutbox)$); + \draw[|-|,color=gray,overlay] + ($(subsection)+(3.8em,0)$) -- + ($(subsection)+(7em,0)$) + node [anchor=north east,font=\small] { + \PValue{numwidth} + }; + \draw[|-|,color=gray,overlay] + ($(subsection)+(\linewidth,\ht\strutbox)$) + node [anchor=north,font=\small] { + \Macro{@tocrmarg} + } -- + ($(subsection)+(\linewidth-2.55em,\ht\strutbox)$); + \draw[|-|,color=gray,overlay] + ($(subsection)+(\linewidth,-\baselineskip)$) -- + node [anchor=north,font=\small] { + \Macro{@pnumwidth} + } + ($(subsection)+(\linewidth-1.55em,-\baselineskip)$); + \end{tikzpicture}% + } + \caption{Illustrations of some attributes of a TOC entry with the + \PValue{tocline} style} + \label{fig:tocbasic.tocline} + \end{figure} +\item[\PValue{undottedtocline}] is similar to the style used by the standard + \Class{book} and \Class{report} classes for the \PValue{chapter} entry + level, or by \Class{article} for the \PValue{section} entry level in the + table of contents. It supports\important{\PValue{level}, \PValue{indent}, + \PValue{numwidth}} only three attributes. A penalty is inserted permitting + an appropriate page break before the entry, as is a vertical skip. The + entries are printed with an indentation of \PValue{indent} from the left and + in \Macro{bfseries}. This is a departure from the standard classes, which do + not support the indentation of these entry levels. + \DescRef{\LabelBase.cmd.numberline} is used unchanged. The width of the + entry number is determined by \PValue{numwidth}. For multi-line entries the + indent will be increased by the value of \PValue{numwidth} for the second + and following lines. \hyperref[fig:tocbasic.undottedtocline]% + {Figure~\ref*{fig:tocbasic.undottedtocline}} illustrates the attributes of + this style. + \begin{figure} + \centering + \resizebox{.8\linewidth}{!}{% + \begin{tikzpicture} + \draw[color=lightgray] (0,2\baselineskip) -- (0,-2.5\baselineskip); + \draw[color=lightgray] (\linewidth,2\baselineskip) -- + (\linewidth,-2.5\baselineskip); + \node (undottedtocline) at (0,0) [anchor=west,inner sep=0,outer sep=0] + {% + \makebox[1.5em][l]{\bfseries 1}% + \parbox[t]{\dimexpr \linewidth-4.05em\relax}{% + \bfseries + Text of an entry to the table of contents with the + \PValue{undottedtocline} style and more than one line% + }% + \raisebox{-\baselineskip}{\makebox[2.55em][r]{\bfseries 3}}% + }; + \draw[|-|,color=gray,overlay] (0,\baselineskip) -- + node [anchor=south,font=\small] { + \PValue{numwidth} + } + (1.5em,\baselineskip); + \draw[|-|,color=gray,overlay] (\linewidth,\ht\strutbox) -- + node [anchor=south,font=\small] { + \Macro{@tocrmarg} + } + (\linewidth-2.55em,\ht\strutbox); + \draw[|-|,color=gray,overlay] (\linewidth,-\baselineskip) -- + node [anchor=north,font=\small] { + \Macro{@pnumwidth} + } + (\linewidth-1.55em,-\baselineskip); + \end{tikzpicture}% + } + \caption{Illustration of some attributes of the \PValue{undottedtocline} + style with the example of a chapter title}% + \label{fig:tocbasic.undottedtocline} + \end{figure} +\end{description} +You can find an explanation of the attributes of all styles that +\Package{tocbasic} defines in \autoref{tab:tocbasic.tocstyle.attributes}. +If\ChangedAt{v3.21}{\Package{tocbasic}} you use these attributes as +options to \DescRef{\LabelBase.cmd.DeclareNewTOC} (see +\DescPageRef{\LabelBase.cmd.DeclareNewTOC}), you must prefix the names of the +attribute by \PValue{tocentry}, e\,g. \PValue{level} becomes +\Option{tocentrylevel}. If\ChangedAt{v3.20}{\Package{tocbasic}} use +these attributes as options for +\DescRef{maincls-experts.cmd.DeclareSectionCommand}% +\IndexCmd{DeclareSectionCommand}\IndexCmd{DeclareNewSectionCommand}% +\IndexCmd{RedeclareSectionCommand}\IndexCmd{ProvideSectionCommand} (see +\DescPageRef{maincls-experts.cmd.DeclareSectionCommand}) and similar commands, +you must prefix the names of the attributes with \PValue{toc}, e\,g. +\PValue{level} becomes \Option{toclevel}. + +Finally, using \Macro{DeclareTOCStyleEntry} will define the internal command +\Macro{l@\PName{entry level}}. + +\begin{desclist} + \desccaption{% + Attributes of the predefined TOC-entry styles of \Package{tocbasic}% + \label{tab:tocbasic.tocstyle.attributes}% + }{% + Attributes of the TOC-entry styles (\emph{continued})% + }% + \entry{\OptionVName{beforeskip}{length}}{% + The vertical distance inserted before an entry of this level in the + \PValue{tocline} style (see \autoref{fig:tocbasic.tocline}). The distance + is made using either \Macro{vskip} or \Macro{addvspace} depending on the + \PName{entry level}, to maintain compatibility as far as possible with the + standard classes and earlier versions of \KOMAScript. + + For the \PValue{part} \PName{entry level}, the attribute will be + initialised with \texttt{2.25em plus 1pt}; for \PValue{chapter}, with + \texttt{1em plus 1pt}. If the \PName{chapter} \PName{entry level} is + undefined, \PValue{section} is initialised with \texttt{1em plus 1pt} + instead. The initial value for all other levels is \texttt{0pt plus + .2pt}.% + }% + \entry{\OptionVName{breakafternumber}{switch}}{% + \PName{switch} is one of the values for simple switches from + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. If the + switch is active in the \PValue{tocline} style, there will be a line break + after the number set with + \DescRef{\LabelBase.cmd.numberline}\IndexCmd{numberline}. The line after + the entry number again starts flush left with the number. The default is + false for the \PValue{tocline} style. + + If\textnote{Attention!} the \Option{numberline} feature has been activated + for a content list (see \DescRef{\LabelBase.cmd.setuptoc}, + \autoref{sec:tocbasic.toc}, \DescPageRef{\LabelBase.cmd.setuptoc}), as is + the case with the \KOMAScript{} classes when the + \OptionValueRef{maincls}{toc}{numberline}% + \IndexOption{toc~=\textKValue{numberline}} option is used, then the + unnumbered entries will nevertheless have a (by default empty) number line + using the formatting of \Option{entrynumberformat}.% + }% + \entry{\OptionVName{dynnumwidth}{switch}}{% + \PName{switch} is one of the values for simple switches from + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. If the + switch is active with the \PValue{tocline} style, the \PValue{numwidth} + attribute specifies a minimum value. If a previous \LaTeX{} run has + determined that the maximum width of the entry numbers of the same level + plus the value of \PValue{numsep} is greater than this minimum, the + calculated value will be used instead.% + }% + \entry{\OptionVName{entryformat}{command}}{% + You can use this attributes to change the format of the entry. The value + should be a \PName{command} with exactly one argument. This argument is + not necessarily fully expandable. You should not use commands like + \Macro{MakeUppercase}, which expects a fully expandable argument. Font + changes are relative to \Macro{normalfont}\Macro{normalsize}. Note that + the output of \Option{linefill} and the page number are independent of + \Option{entryformat}. See also the \Option{pagenumberformat} attribute . + + The initial value of the attribute for the \PValue{part} \PName{entry + level} is \Macro{large}\Macro{bfseries}, and for \PValue{chapter}, it is + \Macro{bfseries}. If the \PValue{chapter} level is not defined, + \PValue{section} uses \Macro{bfseries}. All other levels print the + argument unchanged.% + }% + \entry{\OptionVName{entrynumberformat}{command}}{% + You can use this attribute to format the entry number within + \DescRef{\LabelBase.cmd.numberline}. The value should be a \PName{command} + with exactly one argument. Font changes are relative to the one of + attribute \Option{entryformat}. + + The initial \PName{command} prints the argument unchanged. This means the + entry number will be printed as it is. + + If\textnote{Attention!} the \Option{numberline} feature for a content list + has been activated (see \DescRef{\LabelBase.cmd.setuptoc}, + \autoref{sec:tocbasic.toc}, \DescPageRef{\LabelBase.cmd.setuptoc}), as is + the case with the \KOMAScript{} classes using the + \OptionValueRef{maincls}{toc}{numberline}% + \IndexOption{toc~=\textKValue{numberline}} option, the unnumbered entries + will execute the \PName{command} as well.% + }% + \entry{\OptionVName{indent}{length}}{% + The horizontal distance of the entry from the left margin (see + \autoref{fig:tocbasic.dottedtocline} and \autoref{fig:tocbasic.tocline}). + + For the \PValue{tocline} style, all entry levels whose names start with + ``\texttt{sub}'' are initialised with the + \PValue{indent}+\PValue{numwidth} of the entry level of the same name + without this prefix. For the \PValue{dottedtocline}, + \PValue{undottedtocline}, and \PValue{tocline} styles, the initial values + of levels \PValue{part} down to \PValue{subparagraph} and the levels + \PValue{figure} and \PValue{table} are compatible with the standard + classes. All other levels do not have an initial value. Therefore you have + to set an explicit value for such levels when they are defined first + time.% + }% + \entry{\OptionVName{level}{integer}}{% + The numerical value of the \PName{entry level}. Only those entries whose + numerical value is less than or equal to the + \DescRef{\LabelBase.counter.tocdepth}% + \important{\DescRef{\LabelBase.counter.tocdepth}}\IndexCounter{tocdepth} + counter are printed. + + This attribute is mandatory for all styles and will be defined + automatically when the style is declared. + + For the \PValue{tocline} style, all entry levels whose name starts with + ``\texttt{sub}'' are initialised with the value of the entry level of the + same name without this prefix plus one. For the \PValue{dottedtocline}, + \PValue{largetocline}, \PValue{tocline}, and \PValue{undottedtocline} + styles, the entry levels from \PValue{part} to \PValue{subparagraph}, as + well as \PValue{figure} and \PValue{table}, are initialised to be + compatible with the standard classes. For all other levels, the + initialisation is done with the value of \Macro{\PName{entry + level}numdepth}, if this is defined.% + }% + \entry{\OptionVName{linefill}{code}}{% + With the \PValue{tocline} style, you can change what is used to fill the + space between the end of the entry text and the page number. The + \PName{linefill} attribute contains the \PName{code} that prints this + filler. For the \PValue{part} and \PValue{chapter} \PName{entry level}s, + the attribute is initialised with \Macro{hfill}. If no \PValue{chapter} + \PName{entry level} has been defined, \PValue{section} also uses + \Macro{hfill}. All other entry levels are initialised with + \DescRef{\LabelBase.cmd.TOCLineLeaderFill} (see + \DescPageRef{\LabelBase.cmd.TOCLineLeaderFill}). + + Incidentally, if the \PName{code} specified does not automatically fill + the gap, you should also activate the \PValue{raggedpagenumber} attribute + to avoid ``\texttt{underfull \Macro{hbox}}'' messages.% + }% + \entry{\OptionVName{numsep}{length}}{% + The \PValue{tocline} style tries to ensure a minimum distance of + \PName{length} between the entry number and the entry text. If + \PValue{dynnumwidth} is active, it will correct the number width to achieve + this. Otherwise it simply throws a warning, if the condition is not met. + + The initial \PName{length} is 0.4\Unit{em}.% + }% + \entry{\OptionVName{numwidth}{length}}{% + The width reserved for the entry number (see + \autoref{fig:tocbasic.dottedtocline} to + \autoref{fig:tocbasic.undottedtocline}). With the \PValue{dottedtocline}, + \PValue{tocline}, and \PValue{undottedtocline} styles, this \PName{length} + is added to the \PName{length} of attribute \PValue{indent} for the second + and following lines of the entry text. + + With the \PValue{tocline} style, the initial \PName{length} of all entries + whose name starts with ``\texttt{sub}'' is the value of the level without + this prefix plus 0.9\Unit{em}, if such a level with corresponding + attributes exists. With the \PValue{dottedtocline}, + \PValue{undottedtocline}, and \PValue{tocline} styles, the initial + \PName{length}s of levels from \PValue{part} to \PValue{subparagraph}, as + well as \PName{figure} and \PName{table}, are compatible with those of the + standard classes. All other levels do not have an initial value. Therefore + you must set \PValue{numwidth} explicitly when the entry level is first + used.% + }% + \entry{\OptionVName{onstarthigherlevel}{code}}{% + The \PValue{tocline} style can execute \PName{code} at the start of an + entry, depending on whether the previous entry had numerical level greater + than, the same as, or less than the current entry. The \PName{code} + specified by this attribute will be executed if the current entry has a + greater numerical value, i.\,e. it is lower in the entry hierarchy, than + the previous one. + + Note that detecting the level of the previous entry only works so long as + \Macro{lastpenalty} has not changed since the previous entry. + + The initial \PName{code} is \DescRef{\LabelBase.cmd.LastTOCLevelWasLower} + (see \DescPageRef{\LabelBase.cmd.LastTOCLevelWasLower}).% + }% + \entry{\OptionVName{onstartlowerlevel}{code}}{% + The \PValue{tocline} style can execute \PName{code} at the start of an + entry, depending on whether the previous entry had numerical level greater + than, the same as, or less than the current entry. The \PName{code} + specified by this attribute will be executed if the current entry has a + lower numerical value, i.\,e. it is higher in the entry hierarchy, than + the previous one. + + Note that detecting the level of the previous entry only works so long as + \Macro{lastpenalty} has not changed since the previous entry. + + The initial \PName{code} is \DescRef{\LabelBase.cmd.LastTOCLevelWasHigher} + (see \DescPageRef{\LabelBase.cmd.LastTOCLevelWasHigher}), which usually + favours a page break before the entry.% + }% + \entry{\OptionVName{onstartsamelevel}{code}}{% + The \PValue{tocline} style can execute \PName{code} at the start of an + entry, depending on whether the previous entry had numerical level greater + than, the same as, or less than the current entry. The \PName{code} + specified by this attribute will be executed if the current entry has the + same numerical value, i.\,e. it is on the same level in the entry + hierarchy, as the previous one. + + Note that detecting the level of the previous entry only works so long as + \Macro{lastpenalty} has not changed since the previous entry. + + The initial \PName{code} is \DescRef{\LabelBase.cmd.LastTOCLevelWasSame} + (see \DescPageRef{\LabelBase.cmd.LastTOCLevelWasSame}), which usually + favours a page break before the entry.% + }% + \entry{\OptionVName{pagenumberbox}{command}}{% + By default the page number of an entry is printed flush right in a box + of width \Macro{@pnumwidth}. In the \PValue{tocline} style, you can + change the \PName{command} to print the number using this attribute. The + \PName{command} should expect exactly one argument, the page number. + + This attribute is initialised with the box already mentioned.% + }% + \entry{\OptionVName{pagenumberformat}{command}}{% + You can use this attribute to change the format of the page number of an + entry. The \PName{command} should expect exactly one argument, the page + number. Font changes are relative to the font of \Option{entryformat} + followed by \Macro{normalfont}\Macro{normalsize}. + + The initial \PName{command} of entry level \PValue{part} prints the + argument in \Macro{large}\Macro{bfseries}. The initial \PName{command} of + all other levels prints the argument in + \Macro{normalfont}\Macro{normalcolor}.% + }% + \entry{\OptionVName{raggedentrytext}{switch}}{% + The\ChangedAt{v3.21}{\Package{tocbasic}} \PName{switch} is one of the + values for simple switches from \autoref{tab:truefalseswitch}, + \autopageref{tab:truefalseswitch}. If the switch is active, the + \PValue{tocline} style prints the text of an entry ragged right instead of + fully justified, and only words that are longer than a text line are + automatically hyphenated. + + This \PName{switch} is false by default.% + }% + \entry{\OptionVName{raggedpagenumber}{switch}}{% + The \PName{switch} is one of the values for simple switches from + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. If the + switch is active, the \PValue{tocline} style does not force the page + number to be right justified. + + Depending on the value of \PValue{linefill}, setting this attribute could + affect only whether a warning message appears, or the formatting of the + page number as well. So it is important to set both attributes so that + they correspond. + + By default the \PName{switch} is not activated and therefore corresponds + with an initial value of \Macro{hfill} or + \DescRef{\LabelBase.cmd.TOCLineLeaderFill} for the \PValue{linefill} + attribute.% + }% +\end{desclist} + +% New translation by Markus Kohm (please fix it!): +\Macro{DeclareTOCStyleEntries}\ChangedAt{v3.26}{\Package{tocbasic}} uses +\Macro{DeclareTOCStyleEntry} to define not only one \PName{entry level} but +several entry levels. Each of the entry levels, given by the comma-separated +\PName{entry level list}, is defined with the same \PName{style} and the +settings of the given \PName{option list}.% +% End of new translation. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DeclareTOCEntryStyle}\Parameter{style}% + \OParameter{initial code}% + \Parameter{command code}% + \Macro{DefineTOCEntryOption}\Parameter{option}\OParameter{default value}% + \Parameter{code}% + \Macro{DefineTOCEntryBooleanOption}\Parameter{option}% + \OParameter{default value}% + \Parameter{prefix}% + \Parameter{postfix}% + \Parameter{description}%% + %\OParameter{initial code}% + \Macro{DefineTOCEntryCommandOption}\Parameter{option}% + \OParameter{default value}% + \Parameter{prefix}% + \Parameter{postfix}% + \Parameter{description}%% + %\OParameter{initial code}% + \Macro{DefineTOCEntryIfOption}\Parameter{option}% + \OParameter{default value}% + \Parameter{prefix}% + \Parameter{postfix}% + \Parameter{description}%% + %\OParameter{initial code}% + \Macro{DefineTOCEntryLengthOption}\Parameter{option}% + \OParameter{default value}% + \Parameter{prefix}% + \Parameter{postfix}% + \Parameter{description}%% + %\OParameter{initial code}% + \Macro{DefineTOCEntryNumberOption}\Parameter{option}% + \OParameter{default value}% + \Parameter{prefix}% + \Parameter{postfix}% + \Parameter{description}% + %\OParameter{initial code}% +\end{Declaration} +\Macro{DeclareTOCEntryStyle}\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} is +one of the most complex commands in \KOMAScript. It is therefore explicitly +intended for \LaTeX{} developers and not for ordinary \LaTeX{} users. It lets +you define new a \PName{style} for content-list entries. Usually, entries to +content lists are made using +\Macro{addcontentsline}\IndexCmd{addcontentsline}, or preferably, if you use +\Package{tocbasic}, with +\DescRef{\LabelBase.cmd.addxcontentsline}\IndexCmd{addxcontentsline} (see +\autoref{sec:tocbasic.basics}, \DescPageRef{\LabelBase.cmd.addxcontentsline}). +In both cases \LaTeX{} writes a corresponding +\Macro{contentsline}\IndexCmd{contentsline} to the appropriate auxiliary file. +When reading this auxiliary file, \LaTeX{} then executes a +\Macro{l@\PName{entry level}} command for each \Macro{contentsline}. + +If you later assign a \PName{style} to an entry level using +\DescRef{\LabelBase.cmd.DeclareTOCStyleEntry}, the \PName{initial code} is +executed first, if provided, and then the \PName{command code} for the +definition of \Macro{l@\PName{entry level}}. The \PName{command code} is the +code that will be expanded and executed by \Macro{l@\PName{entry level}}. +Inside \PName{command code} \texttt{\#1} is the name of the TOC entry level +and \texttt{\#\#1} and \texttt{\#\#2} are the arguments of +\Macro{l@\PName{entry level}}. + +The \PName{initial code} serves first to initialise all attributes of the +\PName{style}. Developers should make sure that all attributes are provided +with values here. Only then does \DescRef{\LabelBase.cmd.DeclareTOCStyleEntry} +work without errors if an \PName{option list} is not specified. The second +task of the \PName{initial code} is to define all the options that this +\PName{style} recognises. The \Option{level} option is always defined +automatically. The value of the \Option{level} can be queried within the +\PName{command code} with \Macro{@nameuse}\PParameter{\#1tocdepth}% +\important{\Macro{\PName{entry level}tocdepth}}, for example, to compare it +with the \DescRef{\LabelBase.counter.tocdepth}\IndexCounter{tocdepth} counter. + +To define options for the attributes of the +\PName{style} inside the \PName{initial code}, you can use the commands \Macro{DefineTOCEntryBooleanOption}, +\Macro{DefineTOCEntryCommandOption}, \Macro{DefineTOCEntryIfOption}, +\Macro{DefineTOCEntryLengthOption}, and \Macro{DefineTOCEntryNumberOption}. +These commands each define an \PName{option} that, when called, +defines a macro named \Macro{\PName{prefix}\PName{entry + level}\PName{postfix}} set to the given value or to the +\PName{default value} of the option. The +\Macro{DefineTOCEntryIfOption} command is a somewhat special case. It defines \Macro{\PName{prefix}\PName{entry + level}\PName{postfix}} as a command with two arguments. If the value passed to +the option is one of the activation (true) values from \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch}, the command expands to the first +argument. If the value to the option is a deactivation (false) value, the command +expands to the second argument. + +The \PName{description} should be a brief message that describes the sense +of the option with some keywords. The \Package{tocbasic} package uses this text +in error messages, warnings, and information output on the terminal and to the +\File{log} file. + +The simplest style of \Package{tocbasic}, \PValue{gobble}, is defined +using: +\begin{lstcode} + \DeclareTOCEntryStyle{gobble}{}% +\end{lstcode} +If you now define an entry level \PValue{dummy} in this style using: +\begin{lstcode} + \DeclareTOCStyleEntry[level=1]{gobble}{dummy} +\end{lstcode} +this would correspond, among other things, to: +\begin{lstcode} + \def\dummytocdepth{1} + \def\l@dummy#1#2{} +\end{lstcode} + +For example, within the \PValue{tocline} style, +\begin{lstcode} + \DefineTOCEntryCommandOption{linefill}[\TOCLineLeaderFill]% + {scr@tso@}{@linefill}{filling between text and page number}% +\end{lstcode} +is used to define the \Option{linefill} option. By specifying +\DescRef{\LabelBase.cmd.TOCLineLeaderFill} as the \PName{default value}, +a call such as +\begin{lstcode} + \DeclareTOCStyleEntry[linefill]{tocline}{part} +\end{lstcode} +would, among other things, create the definition +\begin{lstcode} + \def\scr@tso@part@linefill{\TOCLineLeaderFill} +\end{lstcode} + +If you want to define your own styles, you should first study the definition +of the \PValue{dottedtocline} style. After you understand this definition, you +can find many hints as to how to use the commands effectively in the much more +complex definition of the \PValue{tocline} style. + +However, in many cases it will be sufficient to clone an existing style using +\DescRef{\LabelBase.cmd.CloneTOCEntryStyle} and to change the initial code of +the new style using \DescRef{\LabelBase.cmd.TOCEntryStyleInitCode} or +\DescRef{\LabelBase.cmd.TOCEntryStyleStartInitCode}. + +\Macro{DefineTOCEntryOption} is merely used to define the other commands and +you should not use it directly. Normally, there is no need for it. It is +mentioned here only for the sake of completeness.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{CloneTOCEntryStyle}\Parameter{style}\Parameter{new style}% +\end{Declaration} +With\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} this command you can clone +an existing \PName{style}. It defines a \PName{new style} with the same +attributes and settings as the existing \PName{style}. The package itself uses +\Macro{CloneTOCEntryStyle} to declare the \PValue{default} style as a clone of +\PValue{dottedtocline}. The \KOMAScript{} classes use the command to declare +the styles \PValue{part}, \PValue{section}, and \PValue{chapter} or +\PValue{subsection} as clones of \PValue{tocline} and then modify them with +\DescRef{\LabelBase.cmd.TOCEntryStyleInitCode} and +\DescRef{\LabelBase.cmd.TOCEntryStyleStartInitCode}. The \Class{scrbook} and +\Class{scrreprt} classes newly declare the \PValue{default} style as a clone +of \PValue{section}, and \Class{scrartcl} declares it as a clone of +\PValue{subsection}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{TOCEntryStyleInitCode}\Parameter{style}% + \Parameter{initial code}% + \Macro{TOCEntryStyleStartInitCode}\Parameter{style}% + \Parameter{initial code} +\end{Declaration} +Every\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} TOC-entry style has an +initialisation code. This is used whenever a \PName{style} is assigned to an +TOC entry using \DescRef{\LabelBase.cmd.DeclareTOCEntryStyle}. This +\PName{initial code} should not have global side effects, because it is also +used for local initialisation inside other commands like +\DescRef{\LabelBase.cmd.DeclareNewTOC}\IndexCmd{DeclareNewTOC}. The +\PName{initial code} not only defines all attributes of a \PName{style}, but +it also sets the defaults for those attributes. + +You can use \Macro{TOCEntryStyleStartInitCode} and +\Macro{TOCEntryStyleInitCode} to extend previously existing initialisation +code with further \PName{initial code}. \Macro{TOCEntryStyleStartInitCode} +adds \PName{initial code} in front of the existing code. +\Macro{TOCEntryStyleInitCode} adds the \PName{initial code} at the end of the +existing initialisation code. The \KOMAScript{} classes, for example, use +\Macro{TOCEntryStyleStartInitCode} to properly initialise the fill, fonts, and +vertical spacing of the \PValue{part} style cloned from \PValue{tocline}. For +example, the \Class{scrbook} and \Class{scrreprt} classes use +\begin{lstcode} + \CloneTOCEntryStyle{tocline}{section} + \TOCEntryStyleStartInitCode{section}{% + \expandafter\providecommand% + \csname scr@tso@#1@linefill\endcsname + {\TOCLineLeaderFill\relax}% + } +\end{lstcode} +to define \PValue{section} as a modified clone of \PValue{tocline}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{LastTOCLevelWasHigher}% + \Macro{LastTOCLevelWasSame}% + \Macro{LastTOCLevelWasLower} +\end{Declaration} +At\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} the beginning of entries +using the \PValue{tocline} style, \Package{tocbasic} executes one of these +three commands depending on \Macro{lastpenalty}. \Macro{LastTOCLevelWasHigher} +and \Macro{LastTOCLevelWasSame} used in vertical mode add +\Macro{addpenalty}\PParameter{\Macro{@lowpenalty}} and therefore permit a page +break before an entry with the same or higher hierarchical position. +\Macro{LastTOCLevelWasLower} is empty, so a page break between an entry and +its first sub-entry is not permitted. + +Users should not redefine these commands. Instead, you should change the +behaviour of single entry levels using the \PValue{onstartlowerlevel}, +\PValue{onstartsamelevel}, and \PValue{onstarthigherlevel} attributes.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{TOCLineLeaderFill}\OParameter{leader} +\end{Declaration} +This\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} command is intended to be +used as a value for the \Option{linefill} option of the \PName{tocline} +TOC-entry style. It creates a connection between the end of the entry text and +the entry's page number. You can specify the \PName{leader}, which is repeated +at regular intervals, as an optional argument. The default is a dot. + +As the name suggests, the command uses \Macro{leaders} to output the +\PName{leader}. The spacing used is defined analogously to the \LaTeX{} kernel +command \Macro{@dottedtocline} by +\Macro{mkern}\Macro{@dotsep}\Unit{\texttt{mu}}.% +\EndIndexGroup +\EndIndexGroup + + +\section{Internal Commands for Class and Package Authors} +\seclabel{internals} + +The \Package{tocbasic} package provides some internal commands for the use of +class and package authors. These commands all begin with the prefix +\Macro{tocbasic@}. But\textnote{Attention!} even class or package authors +should not redefine them! Their inner functioning may be changed or extended +at any time, so redefining these commands could significantly damage the +\Package{tocbasic}'s operation. + +\begin{Declaration} + \Macro{tocbasic@extend@babel}\Parameter{extension} +\end{Declaration} +At every change of the current language, either at the beginning of the +document or inside the document, the \Package{babel}\IndexPackage{babel} +package (see \cite{package:babel}), or rather a \LaTeX{} kernel enhanced by +\Package{babel}'s language management, writes language-switching commands to +the files with the \File{toc}, \File{lof}, and \File{lot} extensions. The +\Package{tocbasic} package extends this mechanism with +\Macro{tocbasic@extend@babel} so that it also works for other file extensions. +The \PName{extension} argument must be completely expanded! Otherwise the +there is a risk that, for example, the meaning of the argument has already +change at the time it is actually evaluated. + +This command is typically invoked by default for every file \PName{extension} +added to the list of known extensions with +\DescRef{\LabelBase.cmd.addtotoclist}. You can suppress this with the +\PValue{nobabel}\important{\PValue{nobabel}} feature (see +\DescRef{\LabelBase.cmd.setuptoc}, \autoref{sec:tocbasic.toc}, +\DescPageRef{\LabelBase.cmd.setuptoc}). \Package{tocbasic} does this +automatically for the extensions \File{toc}, \File{lof}, and \File{lot} to +avoid switching languages twice in the corresponding files. + +There is usually no reason to call this command yourself. However, there could +conceivably be content lists that are not under the control of +\Package{tocbasic} and so are not in \Package{tocbasic}'s list of known file +extensions, but which nevertheless should use \Package{babel}'s language +switching mechanism. You can call the command explicitly for those files. +But\textnote{Attention!} please note that this should be done only once per +file extension!% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasic@starttoc}\Parameter{extension} +\end{Declaration} +This command is the actual replacement for the +\Macro{@starttoc}\IndexCmd{@starttoc}\important{\Macro{@starttoc}} command +from the \LaTeX{} kernel. It is the command behind +\DescRef{\LabelBase.cmd.listoftoc*} (see \autoref{sec:tocbasic.toc}, +\DescPageRef{\LabelBase.cmd.listoftoc*}). Class or package authors who want to +take advantage of \Package{tocbasic} should at least use this command, or even +better, \DescRef{\LabelBase.cmd.listoftoc}. The command uses +\Macro{\@starttoc} internally, but sets +\Length{parskip}\IndexLength{parskip}\important{\Length{parskip}\\ +\Length{parindent}\\ \Length{parfillskip}}, +\Length{parindent}\IndexLength{parindent} to 0, and \Length{parfillskip} to 0 +to infinity. Moreover, +\Macro{@currext}\important{\Macro{@currext}}\IndexCmd{@currext} is set to the +file extension of the current TOC file, so it can be evaluated during the +subsequent execution of the hooks. You can find an explanation of these hooks +below. + +Because\textnote{Attention!} \LaTeX{} opens a new content-list file for +writing after reading that file, calling this command may result in an error +message of the type +\begin{lstoutput} + ! No room for a new \write . + \ch@ck ...\else \errmessage {No room for a new #3} + \fi +\end{lstoutput} +if no more write handles are available. You can solve this problem by loading +the \Package{scrwfile}\important{\Package{scrwfile}}\IndexPackage{scrwfile} +package described in \autoref{cha:scrwfile}, or by using Lua\LaTeX{}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasic@@before@hook}% + \Macro{tocbasic@@after@hook} +\end{Declaration} +The \Macro{tocbasic@@before@hook} hook is executed immediately before reading +an auxiliary file for a content list, before executing the commands defined +with \DescRef{\LabelBase.cmd.BeforeStartingTOC} command. You can extend this +hook using \Macro{g@addto@macro}\IndexCmd{g@addto@macro}. + +Similarly, \Macro{tocbasic@@after@hook} is executed immediately after reading +such an auxiliary file and before executing the commands defined with +\DescRef{\LabelBase.cmd.AfterStartingTOC}. You can extend this hook using +\Macro{g@addto@macro}\IndexCmd{g@addto@macro}. + +\KOMAScript{} uses these hooks to dynamically adjust content lists to the +width of the heading numbers. Only classes and packages should use these +hooks. Users\textnote{Attention!} should really use +\DescRef{\LabelBase.cmd.BeforeStartingTOC} and +\DescRef{\LabelBase.cmd.AfterStartingTOC} instead. Authors of packages should +also prefer these commands. These hooks should not be used to generate any +output! + +If neither\textnote{Attention!} \DescRef{\LabelBase.cmd.listofeachtoc} nor +\DescRef{\LabelBase.cmd.listoftoc} nor \DescRef{\LabelBase.cmd.listoftoc*} are +used to output the content list, the hooks should be executed explicitly.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasic@\PName{extension}@before@hook}% + \Macro{tocbasic@\PName{extension}@after@hook} +\end{Declaration} +These hooks are executed directly after +\DescRef{\LabelBase.cmd.tocbasic@@before@hook} or before +\DescRef{\LabelBase.cmd.tocbasic@@after@hook} for the TOC file with the +corresponding file \PName{extension}. Class\textnote{Attention!} and package +authors should never change them under any circumstances! If +neither\textnote{Attention!} \DescRef{\LabelBase.cmd.listofeachtoc} nor +\DescRef{\LabelBase.cmd.listoftoc} nor \DescRef{\LabelBase.cmd.listoftoc*} are +used to output a content list, the hooks should nevertheless be called, if +they are defined. These commands can be undefined. For an appropriate test, +see \DescRef{scrbase.cmd.scr@ifundefinedorrelax}% +\IndexCmd{scr@ifundefinedorrelax} in \autoref{sec:scrbase.if}, +\DescPageRef{scrbase.cmd.scr@ifundefinedorrelax}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasic@listhead}\Parameter{title} +\end{Declaration} +This command is used by \DescRef{\LabelBase.cmd.listoftoc} and +\DescRef{\LabelBase.cmd.listofeachtoc} to set the heading of the content list. +This can be either the default heading of the \Package{tocbasic} package or a +custom definition. If you define your own command for the heading, you can +also use \Macro{tocbasic@listhead}. In this case, you should define +\Macro{@currext}\important{\Macro{@currext}}\IndexCmd{@currext} to be the file +extension of the corresponding TOC file before using +\Macro{tocbasic@listhead}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasic@listhead@\PName{extension}}\Parameter{title} +\end{Declaration} +This command is used in \DescRef{\LabelBase.cmd.tocbasic@listhead} to set the +individual headings, optional table of contents entry, and running head, if it +is defined. Otherwise, \DescRef{\LabelBase.cmd.tocbasic@listhead} defines them +before their use.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasic@addxcontentsline}% + \Parameter{extension}\Parameter{level}\Parameter{number}\Parameter{text}% + \Macro{nonumberline} +\end{Declaration} +The\ChangedAt{v3.12}{\Package{tocbasic}} \Macro{tocbasic@addxcontentsline} +command creates entry of the specified level in the TOC file with the given +\PName{extension}. Whether the entry is numbered or not depends on whether or +not the \PName{number} argument is empty. In this case the \PName{text} will +be prefixed by \Macro{nonumberline} without any argument. Otherwise, +\DescRef{\LabelBase.cmd.numberline} with the \PName{number} argument will used +as usual. + +The \Macro{nonumberline} command is redefined inside +\DescRef{\LabelBase.cmd.listoftoc} (see \autoref{sec:tocbasic.toc}, +\DescPageRef{\LabelBase.cmd.listoftoc}) depending on the \PValue{numberline} +feature (see \autoref{sec:tocbasic.toc}, +\DescPageRef{\LabelBase.cmd.setuptoc}). As a result, changing this feature +results in changes of the corresponding TOC immediately at the next \LaTeX{} +run.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasic@DependOnPenaltyAndTOCLevel}\Parameter{entry level}% + \Macro{tocbasic@SetPenaltyByTOCLevel}\Parameter{entry level} +\end{Declaration} +The\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} \PValue{tocline} +content-list style (see \autoref{sec:tocbasic.tocstyle}) sets a +\Macro{penalty} at the end of each entry via +\Macro{tocbasic@SetPenaltyByTOCLevel} so that no page break can occur after an +entry. The exact value chosen depends on the \PName{entry level}. + +At the beginning of an entry, \Macro{tocbasic@DependOnPenaltyAndTOCLevel} is +used to execute the value of the \Option{onstartlowerlevel}, the +\Option{onstartsamelevel}, or the \Option{onstarthigherlevel} style option, +depending on \Macro{lastpenalty} and the current \PName{entry level}. By +default, the first two permit a page break when executed in vertical mode. + +Developers of \PValue{tocline}-compatible styles should copy this behaviour. +To do so, they can fall back on these internal macros.% +\EndIndexGroup + + +\section{A Complete Example} +\seclabel{example} + +This section provides a complete example of how to define your own floating +environment including an associated content list and \KOMAScript{} integration +using \Package{tocbasic}. This example uses internal commands, that is, they +have a ``\texttt{@}'' in their name. This means\textnote{Attention}, that you +must either put the code into a package or class or placed it between +\Macro{makeatletter}\important[i]{\Macro{makeatletter}\\\Macro{makeatother}}% +\IndexCmd{makeatletter} and \Macro{makeatother}\IndexCmd{makeatother}. + +First\textnote{environment}, we need a new floating environment. +That's easy with the following: +\begin{lstcode} + \newenvironment{remarkbox}{% + \@float{remarkbox}% + }{% + \end@float + } +\end{lstcode} +The new environment is named \Environment{remarkbox}. + +Each\textnote{placement} floating environment has a default placement. It +consists of one or more of the well-known placement options: \PValue{b}, + \PValue{h}, \PValue{p} and \PValue{t}. +\begin{lstcode} + \newcommand*{\fps@remarkbox}{tbp} +\end{lstcode} +The new floating environment should be placed by default only either at +the top of a page, at the bottom of a page, or on a separate page. + +Floating\textnote{type} environments also have a numerical floating +type between 1 and 31. Environments with the same active bit at the floating type cannot change +their order. Figures and tables normally use type~1 and 2. So a figure that +comes later in the source code than a table may be output earlier than the +table and vice versa. +\begin{lstcode} + \newcommand*{\ftype@remarkbox}{4} +\end{lstcode} +The new environment has floating type~4, so it may pass figures and floats and +may be passed by those. + +The\textnote{number} captions of floating environment also have numbers. +\begin{lstcode} + \newcounter{remarkbox} + \newcommand*{\remarkboxformat}{% + Remark~\theremarkbox\csname autodot\endcsname} + \newcommand*{\fnum@remarkbox}{\remarkboxformat} +\end{lstcode} +Here, a new counter is defined first, which is independent of the chapters +or the counters of other structural levels. \LaTeX{} itself also defines +\Macro{theremarkbox} with the default output as an Arabic number. +This is then used to define the formatted output of the +counter. The formatted output is again defined as a floating-point +number for use in the \DescRef{maincls.cmd.caption} command. + +Floating\textnote{file name extension} environments have their own content lists +and those need an auxiliary file named \Macro{jobname} and a file +extension: +\begin{lstcode} + \newcommand*{\ext@remarkbox}{lor} +\end{lstcode} +As the file extension, we use ``\File{lor}''. + +With this, the floating environment works. But the content list of +is still missing. So that we do not have to implement it ourselves, we +use the \Package{tocbasic} package. This is loaded with +\begin{lstcode} + \usepackage{tocbasic} +\end{lstcode} +inside of document preambles. Class or package authors would use +\begin{lstcode} + \RequirePackage{tocbasic} +\end{lstcode} +instead. + +Now\textnote{extension} we register the file name extension with the +\Package{tocbasic} package: +\begin{lstcode} + \addtotoclist[float]{lor} +\end{lstcode} +We use \PValue{float} as the owner so that all subsequent \KOMAScript{} +options that relate to lists of floating environments also apply to the new +content list. + +Next\textnote{title} we define a title or heading for this content list: +\begin{lstcode} + \newcommand*{\listoflorname}{List of Remarks} +\end{lstcode} +When working with multiple languages, the normal practice is to define an +English title first and then, for example with the help of the +\Package{scrbase} package, to add titles for all the other languages you want +to support. See \autoref{sec:scrbase.languageSupport}, starting on +\autopageref{sec:scrbase.languageSupport}. + +Now\textnote{entry} all we have to do is define what a single entry in the +content list should look like: +\begin{lstcode} + \newcommand*{\l@remarkbox}{\l@figure} +\end{lstcode} +This specifies that entries in the list of remarks should look exactly like the +entries in the list of figures. This would be the easiest solution. A more +explicit definition would be something like: +\begin{lstcode} + \DeclareTOCStyleEntry[level=1,indent=1em,numwidth=1.5em]% + {tocline}{remarkbox} +\end{lstcode} + +You\textnote{chapter entry} also want chapter entries to affect the content +list. +\begin{lstcode} + \setuptoc{lor}{chapteratlist} +\end{lstcode} +Setting this property allows this when you use a \KOMAScript{} class, and other class +that supports this property. Unfortunately, the standard classes do not. + +This\textnote{list of remarks} should be enough. Users can now +select different kinds of headings using the corresponding options of +the \KOMAScript{} classes or \DescRef{\LabelBase.cmd.setuptoc}, (e.\,g. with +or without an entry in the table of contents, with or without numbering). But +with a simple +\begin{lstcode} + \newcommand*{\listofremarkboxes}{\listoftoc{lor}} +\end{lstcode} +you can simplify the usage even more. + +As you've seen, just five one-line commands, of which only three or four are +really necessary, refer to the content list. Nevertheless, the new list of +remarks already provides the ability to place both numbered and unnumbered +entries into the table of contents.You can use a lower sectioning level for +the headings. Running heads are set for the \KOMAScript{} classes, the +standard classes, and all classes that explicitly support \Package{tocbasic}. +Supporting classes even pay attention to this new list of remarks at each new +\DescRef{maincls.cmd.chapter}. Even changes to the current language made with +\Package{babel} are included in the list of remarks. + +Of course\textnote{additional features}, package authors can add more +features. For example, they could explicitly offer options to hide +\DescRef{\LabelBase.cmd.setuptoc} from users. Or they can refer to the +\Package{tocbasic} manual when explaining the appropriate features. The +advantage of this is that users automatically benefit from any future +extensions to \Package{tocbasic}. However, if you do not want to burden the +user with the fact that the file extension \File{lor} is used for the key +terms, then +\begin{lstcode} + \newcommand*{\setupremarkboxes}{\setuptoc{lor}} +\end{lstcode} +is sufficient to set a list of features passed as an argument to +\Macro{setupremarkboxes} as a list of features for the file extension +\File{lor}. + +\section{Everything with Only One Command} +\label{sec:tocbasic.declarenewtoc} + +The example in the previous section has shows that \Package{tocbasic} makes it +easy to define your own floating environments with their own content lists. +This section shows how it can be even easier. + +\begin{Declaration} + \Macro{DeclareNewTOC}\OParameter{options}\Parameter{extension} +\end{Declaration} +This command declares\ChangedAt{v3.06}{\Package{tocbasic}} a new content list, +its heading, and the description of the entries controlled by +\Package{tocbasic} all in a single step. Optionally, you can also define +floating and non-floating environments at the same time. Inside of both such +environments, \DescRef{maincls.cmd.caption}% +\important{\DescRef{maincls.cmd.caption}}\IndexCmd{caption} creates entries +for this new content list. You can also use the \KOMAScript{} extensions +\DescRef{maincls.cmd.captionabove}\important[i]{% + \DescRef{maincls.cmd.captionabove}\\ + \DescRef{maincls.cmd.captionbelow}}, \DescRef{maincls.cmd.captionbelow}, and +\DescRef{maincls.env.captionbeside} (see \autoref{sec:maincls.floats}). + +The \PName{extension} argument is the file extension of the TOC file that +represents the content list, as explained in \autoref{sec:tocbasic.basics}. +This argument is mandatory and must not be empty! + +The \PName{options} argument is a comma-separated list, of the same type as, +for example, \DescRef{maincls.cmd.KOMAoptions} (see +\autoref{sec:typearea.options}). However\textnote{Attention!}, those options +cannot be set using \DescRef{maincls.cmd.KOMAoptions}\IndexCmd{KOMAoptions}! +You can find an overview of all available options in +\autoref{tab:tocbasic.DeclareNewTOC-options}. + +If\ChangedAt[2015/12]{v3.20}{\Package{tocbasic}} the \Option{tocentrystyle} +option is not used, the \PValue{default} style will be used if required. For +information about this style, see \autoref{sec:tocbasic.tocstyle}. If you do +not want to define a command for entries to the content list, you can use an +empty argument, i.\,e. \OptionValue{tocentrystyle}{} or +\OptionValue{tocentrystyle}{\PParameter{}}. + +Depending\ChangedAt[2015/12]{v3.20}{\Package{tocbasic}}% +\ChangedAt[2016/06]{v3.21}{\Package{tocbasic}} on the style of the entries to +the content list, you can set all valid attributes of the selected style as +part of the \PName{options}. To do so, you must add the prefix +\PValue{tocentry} to the names of the attributes given in +\autoref{tab:tocbasic.tocstyle.attributes}, starting on +\autopageref{tab:tocbasic.tocstyle.attributes}. You can make later changes to +the style of the entries at any time using +\DescRef{\LabelBase.cmd.DeclareTOCStyleEntry}% +\IndexCmd{DeclareTOCStyleEntry}% +\important{\DescRef{\LabelBase.cmd.DeclareTOCStyleEntry}}. See +\autoref{sec:tocbasic.tocstyle}, +\DescPageRef{\LabelBase.cmd.DeclareTOCStyleEntry} for more information about +the styles.% +% +\begin{desclist} + \renewcommand*{\abovecaptionskipcorrection}{-\normalbaselineskip}% + \desccaption[{Options for command \Macro{DeclareNewTOC}}]{% + Options for the + \Macro{DeclareNewTOC}\ChangedAt{v3.06}{\Package{tocbasic}} command% + \label{tab:tocbasic.DeclareNewTOC-options}% + }{% + Options for the \Macro{DeclareNewTOC} command (\emph{continued})% + }% + \entry{\OptionVName{atbegin}{commands}% + \ChangedAt{v3.09}{\Package{tocbasic}}}{% + The \PName{commands} will be executed at the begin of the floating or + non-floating environment.% + }% + \entry{\OptionVName{atend}{commands}% + \ChangedAt{v3.09}{\Package{tocbasic}}}{% + The \PName{commands} will be executed at the end of the floating or + non-floating environment.% + }% + \entry{\OptionVName{counterwithin}{\LaTeX{} counter}}{% + If you define a new floating or non-floating environment, a new counter + \Counter{\PName{type}} will be created as well (see option + \Option{type}). You can make this counter depenent another \LaTeX{} + counter in the same way, for example, that the \Counter{figure} counter in + the \Class{book} classes is dependent on the \Counter{chapter} counter.% + }% + \entry{\Option{float}}{% + If set, defines a new content list and a floating environment, both named + \PName{type}, and an environment for double-column floats named + \PName{type*}.% + }% + \entry{\OptionVName{floatpos}{float positions}}{% + Each floating environment has default \PName{float positions} that can be + changed through the optional argument of the floating environment. The + syntax and semantics are identical to those of the standard floating + environments. If the option is not used, the default \PName{float + positions} are ``\texttt{tbp}'', that is \emph{top}, \emph{bottom}, + \emph{page}.% + }% + \entry{\OptionVName{floattype}{number}}{% + Each floating environment has a \PName{number}. Floating environments + where only different bits are set can be moved past each other. The + floating environments \Environment{figure} and \Environment{table} usually + have the types 1 and 2, so they can move past each other. The numerical + float type can be between 1 and 31. If common bits are set, the float + types cannot be reordred. If no float type is given, the greatest possible + one-bit type, 16, will be used.% + }% + \entry{\Option{forcenames}}{% + If set, the names will be defined even if they were already defined + before.% + }% + \entry{\OptionVName{hang}{length}}{% + \ChangedAt[2015/12]{v3.20}{\Package{tocbasic}}% + \ChangedAt[2015/12]{v3.21}{\Package{tocbasic}}% + This option has been deprecated since \KOMAScript~3.20. Instead, the + amount of the hanging indent of entries to the content list\index{content + list>entry} depends on attributes of the TOC-entry style given by the + \Option{tocentrystyle} option. The \KOMAScript{} styles provide the + \PValue{numwidth} attribute. If the style used has such an attribute, + \Macro{DeclareNewTOC} will initialise it with a default of 1.5\Unit{em}. + You can easily change the \PName{value} using + \OptionVName{tocentrynumwidth}{value}. The \KOMAScript{} classes, for + example, use \OptionValue{tocentrynumwidth}{2.3em}.% + }% + \entry{\OptionVName{indent}{length}}{% + \ChangedAt[2015/12]{v3.20}{\Package{tocbasic}}% + \ChangedAt[2015/12]{v3.21}{\Package{tocbasic}}% + This option has been deprecated since \KOMAScript~3.20. Instead, the + amount that entries to the content list\index{content list>entry} are + indented depends on attributes of the TOC-entry style given by the + \Option{tocentrystyle} option. The \KOMAScript{} styles provide the + \PValue{indent} attribute. If the style used has such an attribute, + \Macro{DeclareNewTOC} will initialise it with a default of 1\Unit{em}. You + can easily change the \PName{value} using + \OptionVName{tocentryindent}{value}. The \KOMAScript{} classes for example + use \OptionValue{tocentrynumwidth}{1.5em}.% + }% + \entry{\OptionVName{level}{number}}{% + \ChangedAt[2015/12]{v3.20}{\Package{tocbasic}}% + \ChangedAt[2015/12]{v3.21}{\Package{tocbasic}}% + This option has been deprecated since \KOMAScript~3.20. Instead, the level + of the entries to the content list\index{content list>entry} depends on + attributes of the TOC-entry style given by the \Option{tocentrystyle} + option. Nevertheless, all styles have the \PValue{level} attrobite, and + \Macro{DeclareNewTOC} initialises it with a default value of 1. You can + easily change the \PName{value} using \OptionVName{tocentrylevel}{value}.% + }% + \entry{\OptionVName{listname}{title}}{% + Each content list has a heading, or title, that you can specify with this + option. If the option is not specified, the title will be ``List of + \PName{entry type}'' (see the \Option{types} option), with the first + character of the \PName{entry type} changed to upper case. It also defines + the \Macro{list\PName{entry type}name} macro with this value, which you + can change at any time. This macro, however, is only defined if it is not + already defined or if the \Option{forcenames} option is also set.% + }% + \entry{\OptionVName{name}{entry name}}{% + Both the optional prefix for entries in the content list and the labels in + floating or non-floating environments (see the \Option{float} and + \Option{nonfloat} options) require an \PName{entry name} for an entry to + the content list. If no \PName{entry name} is given, the value of the + \PValue{type} (see the \Option{type} option) with the first character + changed to upper case will be used. It also defines a \Macro{\PName{entry + type}name} macro with this value, which you can change at any time. This + macro, however, is only defined if it is not already defined or if the + \Option{forcenames} option is also set.% + }% + \entry{\Option{nonfloat}}{% + If set, defines not only a content list but also a non-floating environment, + \Environment{\PName{entry type}-} (see the \Option{type} option), which can + be used similarly to a floating environment, but which does not move from + the place where it is used.% + }% + \entry{\OptionVName{owner}{string}}{% + Every new content list has an owner in \Package{tocbasic} (see + \autoref{sec:tocbasic.basics}). You can specify this here. If no owner is + specified, the owner ``\PValue{float}'' is used. The \KOMAScript{} classes + use this owner for the list of figures and the list of tables.% + }% + \entry{\OptionVName{setup}{list of attributes}}{% + \ChangedAt{v3.25}{\Package{tocbasic}}% + The \PName{list of attributes} is set with + \DescRef{\LabelBase.cmd.setuptoc}. Note that to specify multiple + attributes in a comma-separated list, you must put this list between + braces.% + }% + \entry{\OptionVName{tocentrystyle}{TOC-entry style}}{% + \ChangedAt{v3.20}{\Package{tocbasic}}% + \PName{TOC-entry style} specifies the style that should be used for all + entries to the content list corresponding to the \PName{extension}. The + name of the entry level is given by the \Option{type} option. In addition + to the options in this table, all attributes of the \PName{TOC-entry + style} can be used as options. To do so, you have to prefix the name of + such an attribute with \PValue{toc}. For example, you can change the + numerical level of the entries using the \Option{tocentrylevel} option. + For more information about the styles and their attributes see + \autoref{sec:tocbasic.tocstyle}, starting on + \autopageref{sec:tocbasic.tocstyle}.% + }% + \entry{\OptionVName{tocentry\PName{style-option}}{value}}{% + \ChangedAt[2015/12]{v3.20}{\Package{tocbasic}}% + Additional options depending on the \PName{TOC-entry style} given by + \Option{tocentrystyle}. See \autoref{sec:tocbasic.tocstyle}, + \autopageref{sec:tocbasic.tocstyle} for additional information about + TOC-entry styles. See \autoref{tab:tocbasic.tocstyle.attributes}, + \autopageref{tab:tocbasic.tocstyle.attributes} for information about the + attributes of the predefined TOC-entry styles of package + \Package{tocbasic} that can be used as \PName{style-option}.% + }% + \entry{\OptionVName{type}{entry type}}{% + Sets the type of the newly declared content list. The \PName{entry type} + is also used as a base name for various macros and possibly environments + and counters. It should therefore consist only of letters. If this option + is not used, the file \PName{extension} from the mandatory argument will + be used as the \PName{entry type}.% + }% + \entry{\OptionVName{types}{string}}{% + In several places, the plural form of the \PName{entry type} is required. + If no plural is given, the value of the \PValue{entry type} with an ``s'' + appended will be used.% + }% + \entry{\OptionVName{unset}{list of attributes}}{% + \ChangedAt{v3.25}{\Package{tocbasic}}% + The \PName{list of attributes} is unset with + \DescRef{\LabelBase.cmd.unsettoc}. Note that to specify a comma-separated + list of attributes, you must put this list between braces.% + }% +\end{desclist} + +\begin{Example} + Using \Macro{DeclareNewTOC} significantly shortens the example from + \autoref{sec:tocbasic.example}: +\begin{lstcode} + \DeclareNewTOC[% + type=remarkbox,% + types=remarkboxes,% + float,% define a floating environment + floattype=4,% + name=Remark,% + listname={List of Remarks}% + ]{lor} + \setuptoc{lor}{chapteratlist} +\end{lstcode} + In addition to the \Environment{remarkbox} and \Environment{remarkbox*} environments, + this also defines the \Counter{remarkbox} counter; the commands \Macro{theremarkbox}, + \Macro{remarkboxname}, and \Macro{remarkboxformat} that are used for + captions; the commands \Macro{listremarkboxnames} and + \Macro{listofremarkboxes} that are used in the list of remarks; and some + internal commands that depend on the file name extension \File{lor}. + If the package should use a default for the floating type, the + Option{floattype} option can be omitted. If the \Option{nonfloat} option is specified, + a non-floating environment, \Environment{remarkbox-}, will + also be defined, inside which you can use \DescRef{maincls.cmd.caption}\IndexCmd{caption}. + \hyperref[tab:tocbasic.comparison]{Figure~\ref*{tab:tocbasic.comparison}} + compares the commands, counters, and environments of the + example \Environment{remarkbox} environment to the commands, counters, + and environments of figures.% + \begin{table} + \centering + \caption{Comparing the example \Environment{remarkbox} environment + with the \Environment{figure} environment} + \label{tab:tocbasic.comparison} + \begin{tabularx}{\textwidth}{ll>{\raggedright}p{6em}X} + \toprule + \Environment{remarkbox} & \Environment{figure} + & options of \Macro{DeclareNewTOC} & short description \\[1ex] + \midrule + \Environment{remarkbox} & \Environment{figure} + & \Option{type}, \Option{float} + & floating environments of the respective types\\[1ex] + \Environment{remarkbox*} & \Environment{figure*} + & \Option{type}, \Option{float} + & columns spanning floating environments of the respective types\\[1ex] + \Counter{remarkbox} & \Counter{figure} + & \Option{type}, \Option{float} + & counter used by \DescRef{maincls.cmd.caption}\\[1ex] + \Macro{theremarkbox} & \Macro{thefigure} + & \Option{type}, \Option{float} + & output command to the respective counters\\[1ex] + \Macro{remarkboxformat} & \DescRef{maincls.cmd.figureformat} + & \Option{type}, \Option{float} + & formatting command to the respective counters used by + \DescRef{maincls.cmd.caption}\\[1ex] + \Macro{remarkboxname} & \Macro{figurename} + & \Option{type}, \Option{float}, \Option{name} + & names used in the label of \DescRef{maincls.cmd.caption}\\[1ex] + \Macro{listofremarkboxes} & \DescRef{maincls.cmd.listoffigures} + & \Option{types}, \Option{float} + & command to show the list of the respective environments\\[1ex] + \Macro{listremarboxname} & \Macro{listfigurename} + & \Option{type}, \Option{float}, \Option{listname} + & heading text of the respective list \\[1ex] + \Macro{fps@remarkbox} & \Macro{fps@figure} + & \Option{type}, \Option{float}, \Option{floattype} + & numeric float type for order perpetuation\\[1ex] + \File{lor} & \File{lof} + & + & file name extension of the TOC file of the respective list \\ + \bottomrule + \end{tabularx} + \end{table} + + And here is a possible use of the example environment: +\begin{lstcode} + \begin{remarkbox} + \centering + The same thing should always be typeset in the same way + and with the same appearance. + \caption{First Law of Typography} + \label{rem:typo1} + \end{remarkbox} +\end{lstcode} + A snippet of a sample page with this environment might look like this: + \begin{center}\footnotesize + \begin{tabular} + {|!{\hspace{.1\linewidth}}p{.55\linewidth}!{\hspace{.1\linewidth}}|} + \\ + \centering + The same thing should always be typeset in the same way + and with the same appearance.\\[\abovecaptionskip] + {% + \usekomafont{caption}\footnotesize{\usekomafont{captionlabel}% + Remark 1: }First Law of Typography + }\\ + \end{tabular}% + \end{center}% +\end{Example} + +Users of \Package{hyperref} should always use the \Option{listname} option. +Otherwise they may get an error message because \Package{hyperref} usually has +a problem with the \Macro{MakeUppercase}\IndexCmd{MakeUppercase} command that +is needed to convert the first letter of \Option{types} to upper case.% +\EndIndexGroup +% +\EndIndexGroup +% +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: + + +% LocalWords: Multiline multiline diff --git a/macros/latex/contrib/koma-script/source-doc/english/typearea-experts.tex b/macros/latex/contrib/koma-script/source-doc/english/typearea-experts.tex new file mode 100644 index 0000000000..da2679cc7d --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/typearea-experts.tex @@ -0,0 +1,269 @@ +% ====================================================================== +% typearea-experts.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% typearea-experts.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about typearea for experts of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber typearea fuer Experten in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{typearea-experts.tex} + [$Date: 2018-03-30 11:57:25 +0200 (Fri, 30 Mar 2018) $ + KOMA-Script guide (chapter: typearea)] +\translator{Markus Kohm\and Gernot Hassenpflug\and Karl Hagen} + +% Date of the translated German file: 2018-01-31 + +\chapter{Additional Information about the \Package{typearea} package} +\labelbase{typearea-experts} +\BeginIndexGroup +\BeginIndex{Package}{typearea} + +This chapter provides additional information about the \Package{typearea} +package. \iffree{Some parts of the chapter are found only in the German + \KOMAScript{} book \cite{book:komascript}. This should not be a problem, + because the}{The} average user, who only wants to use the package, will not +normally need this information. Part of this material is intended for users +who want to solve unusual problems or write their own packages using +\Package{typearea}. Another part covers \Package{typearea} features that exist +only for compatibility with earlier versions of \KOMAScript{} or with the +standard classes. The features that exist only for compatibility with earlier +versions of \KOMAScript{} are printed in a sans serif font. You should not use +them any longer. + + +\section{Experimental Features} +\seclabel{experimental} + +This section describes experimental features. Experimental, in this context, +means that correct functioning cannot be guaranteed. There can be two reasons +for designating something experimental. First, the final function is not yet +defined or its implementation is not yet finalised. Second, a feature may +depend on internal functions of other packages and therefore the feature can +not be guaranteed, if the other packages change. + +\begin{Declaration} + \OptionVName{usegeometry}{simple switch} +\end{Declaration} +Usually \Package{typearea} does not care much if you use it with the +\Package{geometry}\IndexPackage{geometry} package (see +\cite{package:geometry}) in any configuration. In particular, this means that +\Package{geometry} does not recognise any changes to the page parameters done +with \Package{typearea}, for example when it changes the paper size\,---\,a +feature not provided by \Package{geometry} itself. + +Once\ChangedAt{v3.17}{\Package{typearea}} you set option \Option{usegeometry}, +\Package{typearea} tries to translate all of its options into options of +\Package{geometry}. If you activate new parameters inside the document, +\Package{typearea} even calls \Macro{newgeometry} (see +\DescRef{\LabelBase.cmd.activateareas} in the following section). Since +\Package{geometry} does not support changes of paper size or page orientation +with \Macro{newgeometry}, \Package{typearea} uses internal commands and +\Package{geometry} lengths to provide such changes as needed. This has been +tested with \Package{geometry}~5.3 through 5.6. + +Note that using \Package{geometry} and changing page size or orientation with +\Package{typearea} does not mean that \Package{geometry} will automatically +use the new paper size in an expected manner. For convenience, +\Package{geometry} provides far more options to adjust the page than are +required to determine the type area, margins, header, footer, etc.\,---\,this +is called \emph{overdetermination}\,---\, and at the same time +\Macro{newgeometry} derives missing information from the known +values\,---\,known as \emph{value preservation}\,---\,so you often must +explicitly specify all new values completely when you call \Macro{newgeometry} +on your own. Nevertheless, when \Package{typearea} takes \Package{geometry} +into consideration, it opens up additional possibilities.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{areasetadvanced}{simple switch} + \Macro{areaset}\OParameter{BCOR}\Parameter{width}\Parameter{height} +\end{Declaration} +Usually, \DescRef{typearea.cmd.areaset} does not handle options to define the +height of the header or footer, or whether margin elements should count as +part of the type area in the same way as \DescRef{typearea.cmd.typearea}. With +the \Option{areasetadvanced}\ChangedAt{v3.11}{\Package{typearea}} option, you +can make \DescRef{typearea.cmd.areaset} behave more like +\DescRef{typearea.cmd.typearea} in this regard. Nevertheless, settings for the +two commands that result in type areas of equal size still can differ because +\DescRef{typearea.cmd.typearea} always adjusts the type area so that it +contains an integer number of lines, potentially making the bottom margin up +to one line smaller, whereas \DescRef{typearea.cmd.areaset} always sets the +ratio between the top and bottom margins at 1:2. The type area can therefore +be slightly shifted vertically depending on which command was used.% +\EndIndexGroup + + +\section{Expert Commands} +\seclabel{experts} + +This section describes commands that are of little or no interest to average +users. These commands give experts additional possibilities. Because this +information is addressed to experts, it appears in condensed form. + +\begin{Declaration} + \Macro{activateareas} +\end{Declaration}% +The \Package{typearea} package uses this command convert the settings for the +type area and margins to internal \LaTeX{} lengths whenever the type area has +been recalculated inside of the document, that is after +\Macro{begin}\PParameter{document}. If the \DescRef{typearea.option.pagesize} +option has been used, it will be executed again with the same value. Thus, for +example, the page size may actually vary within PDF documents. + +Experts can also use this command if they have manually changed lengths like +\Length{textwidth} or \Length{textheight} inside a document for any reason. If +you do so, however, you are responsible for any necessary page breaks before +or after you call \Macro{activateareas}. Moreover, all changes made by +\Macro{activateareas} are local.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{storeareas}\Parameter{\textMacro{command}}% + \Macro{BeforeRestoreareas}\Parameter{code}% + \Macro{BeforeRestoreareas*}\Parameter{code}% + \Macro{AfterRestoreareas}\Parameter{code}% + \Macro{AfterRestoreareas*}\Parameter{code} +\end{Declaration} +\Macro{storeareas} defines a \PName{\Macro{command}} which you can use to +restore all current type-area settings. So you can save the current settings, +change them, and then restore the previous settings afterwards. + +\begin{Example} + You want a landscape page inside a document with portrait format. That's + no problem using \Macro{storeareas}: +\begin{lstcode} + \documentclass[pagesize]{scrartcl} + + \begin{document} + \noindent\rule{\textwidth}{\textheight} + + \storeareas\MySavedValues + \KOMAoptions{paper=landscape,DIV=current} + \noindent\rule{\textwidth}{\textheight} + + \clearpage + \MySavedValues + \noindent\rule{\textwidth}{\textheight} + \end{document} +\end{lstcode} + It's\textnote{Attention} important to call \DescRef{maincls.cmd.clearpage} + before \Macro{MySavedValues} so that the saved values are restored on the + next page. With two-sided documents, changes to the paper format should even + use \DescRef{maincls.cmd.cleardoubleoddpage}\IndexCmd{cleardoubleoddpage} + or\,---\,if you are not using a \KOMAScript{} + class\,---\,\DescRef{maincls.cmd.cleardoublepage}% + \IndexCmd{cleardoublepage}.% + \iffree{\par In addition, \Macro{noindent} is used to avoid paragraph + indents of the black boxes. Otherwise, you would not produce a correct + image of the type area.}{}% +\end{Example} + +Note\textnote{Attention!} that neither \Macro{storeareas} nor the defined +\PName{\Macro{command}} defined with it should be used inside a group. +Internally, +\Macro{newcommand}\IndexCmd{newcommand*}\important{\Macro{newcommand*}} is +used to define the \PName{\Macro{command}}. So reusing a +\PName{\Macro{command}} to store settings again would result in a +corresponding error message. + +Often\ChangedAt{v3.18}{\Package{typearea}}, it is useful to automatically +execute commands like \DescRef{maincls.cmd.cleardoubleoddpage} before +restoring the settings of a \Macro{command} generated by \Macro{storeareas}. +You can do so using \Macro{BeforeRestoreareas} or \Macro{BeforeRestoreareas*}. +Similarly, you can use \Macro{AfterRestoreareas} or \Macro{AfterRestoreareas*} +to automatically execute \PName{code} after restoring the settings. The +variants with and without the star differ in that the starred variant only +applies the \PName{code} to future \PName{command}s generated by +\Macro{storeareas}, whereas the regular variant also adds the \PName{code} to +previously defined \PName{command}s.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AfterCalculatingTypearea}\Parameter{code}% + \Macro{AfterCalculatingTypearea*}\Parameter{code}% + \Macro{AfterSettingArea}\Parameter{cod}% + \Macro{AfterSettingArea*}\Parameter{code} +\end{Declaration}% +These commands serve to manage two hooks\Index{hook}. The first two, +\Macro{AfterCalculatingTypearea} and its starred variant let experts execute +\PName{code} each time \Package{typearea} recalculates the type area and +margins, that is after every implicitly or explicit invocation of +\DescRef{typearea.cmd.typearea}. Similarly, +\Macro{AfterSettingArea}\ChangedAt{v3.11}{\Package{typearea}} and its starred +variant allow for executing \PName{code} every time +\DescRef{typearea.cmd.areaset} has been used. The normal versions have a +global scope, while changes made in the starred versions are only local. The +\PName{code} is executed immediately before \Macro{activateareas}.\iffree{}{ + In \autoref{cha:modernletters}, The letter-class-option file + \File{asymTypB.lco} uses it to change the distribution of the margins.}% +% +\EndIndexGroup + + +\section{Local Settings with the \File{typearea.cfg} File} +\seclabel{cfg} +\BeginIndexGroup +\BeginIndex{File}{typearea.cfg} + +\LoadNonFree{typearea-experts}{0} +% +\EndIndexGroup + +\section{More or Less Obsolete Options and Commands} +\seclabel{obsolete} +\LoadNonFree{typearea-experts}{1} +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% ispell-local-dictionary: "english" +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/english/typearea.tex b/macros/latex/contrib/koma-script/source-doc/english/typearea.tex new file mode 100644 index 0000000000..1985498be3 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/english/typearea.tex @@ -0,0 +1,1807 @@ +% ====================================================================== +% typearea.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% typearea.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about typearea of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber typearea in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{typearea.tex}% + [$Date: 2019-01-15 08:29:44 +0100 (Tue, 15 Jan 2019) $ + KOMA-Script guide (chapter: typearea)] +\translator{Markus Kohm\and Gernot Hassenpflug\and Krickette Murabayashi\and + Karl Hagen} + +% Date of the translated German file: 2018-01-31 + +\chapter{Calculating the Page Layout with \Package{typearea}} +\labelbase{typearea} + +\BeginIndexGroup% +\BeginIndex{Package}{typearea}% +Many {\LaTeX} classes\iffree{, including the standard classes,}{} present the +user with a largely fixed configuration of margins and page layout. In the +standard classes, the choice is limited to selecting a font size. +There are separate packages, such as \Package{geometry}\IndexPackage{geometry} +(see \cite{package:geometry}), which give the user complete control over, but +also full responsibility for, setting the type area and margins. + +\KOMAScript{} takes a somewhat different approach with the \Package{typearea} +package. Users are offered ways to adjust the design and algorithms based on +established typographic standards, making it easier for them to make good +choices. + +\iffalse% Umbruchoptimierung!!! + Note that the \Package{typearea} package makes use of the \Package{scrbase} + package. The latter is explained in the expert section of this + \iffree{guide}{book} in \autoref{cha:scrbase} on \autopageref{cha:scrbase}. + However, most of the features documented there are directed not to users but + to class and package authors. +\fi + +\section{Fundamentals of Page Layout} +\seclabel{basics} + +\begin{Explain} + At first glance, a single page of a book or other printed material + consists of the margins, + \iffalse% Umbruchkorrekturtext + \footnote{The author and the editor have considered the question as to + whether, since a page has only one periphery, the term should be + ``the margin.'' However, since \LaTeX{} logically divides this one + margin into several margins, which are determined separately, we + use the term ``the margins'' here.}% + \fi% + a header, a body of text, and a footer. More precisely, there + is also a space between the header area and the text + body, as well as between the body and the footer. The text body is + called, in the jargon of typographers and typesetters, the \emph{type area}. + The division of these areas, as well as their relations to each other and + to the paper, is called the \emph{page layout}.\Index[indexmain]{page layout} + + Various algorithms and heuristic methods for constructing an appropriate + type area have been discussed in the literature% + \iffree{ \cite{DANTE:TK0402:MJK}}{. A short introduction to the basics may + be found at \autoref{cha:typeareaconstruction}}. + These rules are known as the ``canons of page construction.'' One approach + often mentioned involves diagonals and their intersections. The result is + that the aspect ratio of the type area corresponds to the proportions of the + \emph{page}. In a one-sided document,\Index{one-sided} the left and right + margins should have equal widths, while the ratio of the top and bottom + margins should be 1:2. In a two-sided document\Index{two-sided} (e.\,g. a + book), however, the entire inner margin (the margin at the spine) should be + the same size as each of the two outer margins; in other words, a single + page contributes only half of the inner margin. + + In the previous paragraph, we mentioned and emphasised \emph{the page}. It + is often mistakenly thought that the format of the page is the same as the + format of the paper.\Index[indexmain]{page>format}% + \Index[indexmain]{paper>format} However, if you look at + a bound document, you can see that part of the paper disappears in the + binding\Index[indexmain]{binding} and is no longer part of the visible page. + For the type area, however, it is not the format of the paper which is + important; it is the impression of the visible page to the reader. Thus, it + is clear that the calculation of the type area must account for the ``lost'' + paper in the binding and add this amount to the width of the inner margin. + This is called the \emph{binding correction}.\Index[indexmain]{binding + correction} The binding correction is therefore calculated as part of the + \emph{gutter}\Index[indexmain]{gutter} but not the visible inner margin. + + The binding correction depends on the production process and cannot be + defined in general terms. It is therefore a parameter that must be redefined + for each project. In professional printing, this value plays only a minor + role, since printing is done on larger sheets of paper and then cropped to + the right size. The cropping is done so that the above relations for the + visible, two-sided page are maintained. + + So now we know how the individual parts of a page relate to each other. + However, we do not yet know how wide and high the type area is. Once we know + one of these two dimensions, we can calculate all the other dimensions from + the paper format and the page format or the binding correction. + \begin{align*} + \Var{type~area~height}\Index{type area} : \Var{type~area~width} &= + \Var{page~height}\Index{page} : \Var{page~width}\\ + \Var{top~margin}\Index{margin} : \Var{footer~margin} &= + \text{1} : \text{2} \\ +% + \Var{left~margin} : \Var{right~margin} &= \text{1} : \text{1} \\ +% + \Var{half~inner~margin} : \Var{outer~margin} &= \text{1} : \text{2} \\ +% + \Var{page~width} &= + \Var{paper~width}\Index{paper} - + \Var{binding~correction}\Index{binding correction}\\ +% + \Var{top~margin} + \Var{bottom~margin} &= + \Var{page~height} - \Var{type~area~height} \\ +% + \Var{left~margin} + \Var{right~margin} &= + \Var{page~width} - \Var{type~area~width} \\ +% + \Var{half~inner~margin} + \Var{outer~margin} &= + \Var{page~width} - \Var{type~area~width} \\ +% + \Var{half~inner~margin} + \Var{binding~correction} &= + \Var{gutter}\Index{gutter} + \end{align*} + \Index[indexmain]{margin}% + The values \Var{left~margin} and \Var{right~margin} only exist in a + one-sided document while \Var{half~inner~margin} and \Var{outer~margin} only + exist in a two-sided document. We use \Var{half~inner~margin} in these + equations, since the full inner margin is an element of the whole two-page + spread. Thus, only half of the inner margin, \Var{half~inner~margin}, + belongs to a single page. + + The question of the width of the type area is also discussed in the + literature. The optimum width depends on several factors: + \begin{itemize} + \item the size, width, and type of font used, + \item the line spacing, + \item the word length, + \item the available space. + \end{itemize} + The importance of the font becomes clear once you realize what serifs are + for. Serifs\Index[indexmain]{serifs} are small strokes that finish off the + lines of letters. Letters with vertical lines touching the text baseline + disturb the flow rather than keeping the eye on the line. It is precisely + with these letters that the serifs lie horizontally on the baseline and thus + enhance the horizontal effect of the font. The eye can better follow the + line of text, not only when reading the words but also when jumping back to + the beginning of the next line. Thus, the line length can actually be + slightly longer for a serif font than for a sans serif font. + + Leading\Index[indexmain]{leading}\textnote{leading} refers to the vertical + distance between individual lines of text. In \LaTeX{}, the leading is set + at about 20\% of the font size. With commands like + \Macro{linespread}\IndexCmd{linespread}, or better, packages like + \Package{setspace}\IndexPackage{setspace} (see \cite{package:setspace}), you + can change the leading. A wider leading makes it easy for the eye to follow + the line. A very wide leading, however, disturbs reading because the eye has + to travel long distances between the lines. In addition, the reader becomes + uncomfortable because of the visible striped effect. The uniform grey value + of the page is thereby spoiled. Nevertheless, the lines can be longer with a + wider leading. + + The literature gives different values for good line + lengths\Index[indexmain]{line length}, depending on the author. To some + extent, this is related to the author's native language. Since the eye + usually jumps from word to word, short words make this task easier. Across + all languages and fonts, a line length of 60 to 70 characters, including + spaces and punctuation, forms a usable compromise. This requires well-chosen + leading, but {\LaTeX}'s default is usually good enough. Longer line lengths + should only be considered for highly-developed readers who spend many hours + a day reading. But even then, line lengths beyond 80 characters are + unacceptable. In each case, the leading must be appropriately chosen. An + extra 5\% to 10\% is recommended as a good rule of thumb. For typefaces like + Palatino, which require more than 5\% leading for normal line lengths, even + more can be required. + + Before looking at the actual construction of the page layout, there are a + few minor points you should know. {\LaTeX} does not start the first line in + the text area of a page at the upper edge of the text area but sets the + baseline at a defined distance from the top of the text area. Also, {\LaTeX} + recognizes the commands + \DescRef{maincls.cmd.raggedbottom}\IndexCmd{raggedbottom} and + \DescRef{maincls.cmd.flushbottom}\IndexCmd{flushbottom}. + \DescRef{maincls.cmd.raggedbottom} specifies that the last line of a page + should be positioned wherever it was calculated. This means that the + position of this line can be different on each page, up to the height of one + line\,---\, even more when the end of the page coincides with headings, + figures, tables, or the like. In two-sided documents that is usually + undesirable. The second command, \DescRef{maincls.cmd.flushbottom}, makes + sure that the last line is always at the lower edge of the text area. To + achieve this vertical compensation, {\LaTeX} may have to stretch vertical + glue beyond what is normally allowed. Paragraph skip is such a stretchable, + vertical glue, even when set to zero. To avoid stretching on normal pages + where paragraph spacing is the only stretchable glue, the height of the text + area should be a multiple of the height of the text line, including the + distance of the first line from the top of the text area. + +\iffalse% Umbruchkorrektur + This explains all the basics of the type area calculation that play a role + in {\KOMAScript}. +\else + This concludes the fundamentals. +\fi +\iffalse% Umbruchkorrektur + Below are two methods of construction offered by \KOMAScript{}. +\else +\iffalse% Umbruchkorrektur + Now, we can begin with the actual construction. +\else + In the following two sections, the methods of construction offered by + {\KOMAScript} are presented in detail. +\fi +\fi +\end{Explain} + + +\section{Constructing the Type Area by Division} +\seclabel{divConstruction} + +\begin{Explain} + The easiest way to make sure that the text area has the same ratio as the + page is as follows: + \begin{itemize} + \item First, subtract the \Var{BCOR} required for the binding + correction\Index{binding correction} from the inner edge of the paper, and + divide the rest of the page vertically into \Var{DIV} rows of equal + height. + \item Next, divide the page horizontally into the same number (\Var{DIV}) of + columns of equal width. + \item Then, take the uppermost row as the upper margin and the two lowermost + rows as the lower margin. If you are printing two-sided, you similarly + take the innermost column as the inner margin and the two outermost + columns as the outer margin. + \item Then add the binding correction \Var{BCOR} to the inner margin. + \end{itemize} + What remains within the page is the text area.\Index{text area} The width + and height of the text area and margins result automatically from the + number of rows and columns, \Var{DIV}. Since the margins always need three + stripes, \Var{DIV} must be greater than three. In order that the + text area occupy at least twice as much space as the margins, \Var{DIV} + should really be at least nine. With this value, the design + is also known as the \emph{classical nine-part division} (see + \autoref{fig:typearea.nineparts}). + + \begin{figure} +% \centering + \KOMAoption{captions}{bottombeside}% + \setcapindent{0pt}% + \setlength{\columnsep}{.6em}% + \begin{captionbeside}[{% + Two-sided layout with the box construction of the classical + nine-part division, after subtracting a binding correction% + }]{% + \label{fig:typearea.nineparts}% + \hspace{0pt plus 1ex}% + Two-sided layout with the box construction of the classical + nine-part division, after subtracting a binding correction% + } + [l] + \setlength{\unitlength}{.25mm}% + \definecolor{komalight}{gray}{.75}% + \definecolor{komamed}{gray}{.6}% + \definecolor{komadark}{gray}{.3}% + \begin{picture}(420,297) + % BCOR + \put(198,0){\color{komalight}\rule{24\unitlength}{297\unitlength}} + \multiput(198,2)(0,20){15}{\thinlines\line(0,1){10}} + \multiput(222,2)(0,20){15}{\thinlines\line(0,1){10}} + % the paper + \put(0,0){\thicklines\framebox(420,297){}} +% \put(210,0){\thicklines\framebox(210,297){}} + % the page layout + \put(44,66){\color{komamed}\rule{132\unitlength}{198\unitlength}} + \put(244,66){\color{komamed}\rule{132\unitlength}{198\unitlength}} + % helper lines + \multiput(0,33)(0,33){8}{\thinlines\line(1,0){198}} + \multiput(222,33)(0,33){8}{\thinlines\line(1,0){198}} + \multiput(22,0)(22,0){8}{\thinlines\line(0,1){297}} + \multiput(244,0)(22,0){8}{\thinlines\line(0,1){297}} + % annotations + \put(198,0){\color{white}\makebox(24,297)[c]{% + \rotatebox[origin=c]{-90}{binding correction}}} + \put(44,66){\color{white}\makebox(132,198)[c]{page layout left}} + \put(244,66){\color{white}\makebox(132,198)[c]{page layout right}} + % box numbers + \makeatletter + \multiput(1,27)(0,33){9}{\footnotesize\makebox(0,0)[l]{\the\@multicnt}} + \multiput(177,291)(-22,0){9}{% + \footnotesize\makebox(0,0)[l]{\the\@multicnt}} + \multiput(419,27)(0,33){9}{% + \footnotesize\makebox(0,0)[r]{\the\@multicnt}} + \multiput(243,291)(22,0){8}{% + \footnotesize\makebox(0,0)[r]{\the\numexpr\@multicnt+1\relax}} + \makeatother + \end{picture} + \end{captionbeside} +% \caption{Two-sided layout with the box construction of the classical +% nine-part division, after subtracting a binding correction} +% \label{fig:typearea.nineparts} + \end{figure} + + In {\KOMAScript}, this kind of design is implemented with the + \Package{typearea} package, where the bottom margin may drop any fractions + of a line in order to comply with the constraint for the height of the type + area mentioned in the previous paragraph and thereby reduce the problem + mentioned with \Macro{flushbottom}. For A4 paper, \Var{DIV} is predefined + according to the font size (see \autoref{tab:typearea.div}, + \autopageref{tab:typearea.div}). If there is no binding correction + (\(\Var{BCOR} = 0\Unit{pt}\)), the results roughly match the values of + \autoref{tab:typearea.typearea}, \autopageref{tab:typearea.typearea}. + + In addition to the predefined values, you can specify \Var{BCOR} and + \Var{DIV} as options when loading the package (see + \autoref{sec:typearea.options}, starting on + \autopageref{sec:typearea.typearea}). There is also a command to calculate + the type area explicitly by providing these values as parameters (see also + \autoref{sec:typearea.options}, \DescPageRef{typearea.cmd.typearea}). + + The \Package{typearea} package can automatically determine the optimal value + of \Var{DIV} for the font and leading used. Again, see + \autoref{sec:typearea.options}, \DescPageRef{typearea.option.DIV.calc}. +\end{Explain} + + +\section{Constructing the Type Area by Describing a Circle} +\seclabel{circleConstruction} + +\begin{Explain} + In addition to the construction method for the type area\Index{type area} + described above, there is an even more traditional, or even medieval, method + found in the literature. The aim of this method is not just to have the same + ratios between page size and type area; it is considered optimal when the + height of the text area corresponds to the width of the page. This means + that a circle can be drawn that will touch both the sides of the page and + the top and bottom of the text area. The exact procedure can be found in + \cite{JTsch87}. + + A disadvantage of this late-medieval canon of page construction is that the + width of the text area no longer depends on the font. One no longer chooses + the text area to match the font. Instead, the author or typesetter must + choose the appropriate font for the text area. +% +\iftrue +% Umbruchkorrekturtext + This should be considered mandatory. +\fi + + In the \Package{typearea} package, this construction is modified to + determine the \Var{DIV} value by selecting a special (normally meaningless) + \Var{DIV} value or a special, symbolic indication of the \Var{DIV} value so + that the resulting type area comes as close as possible to the late-medieval + page canon. Hence it relies in turn on the method of constructing the type + area by division. +% +\iffalse +% Umbruchkorrekturtext + If you choose a good font, the result often coincides with the search for + the optimal \Var{DIV} value. See also \autoref{sec:typearea.options}, + \DescPageRef{typearea.option.DIV.calc}. +% +\fi +\end{Explain} + +\LoadCommonFile{options}% \section{Early or late Selection of Options} + +\LoadCommonFile{compatibility}% \section{Compatibility with Earlier Versions of \KOMAScript} + +\section{Adjusting the Type Area and Page Layout} +\seclabel{typearea} + +The \Package{typearea} package offers two different user interfaces to +influence the construction of the type area. The most important method is to +specify options when loading the package. For information on how to load +packages and pass options to packages, please refer to the {\LaTeX} +literature, for example \cite{lshort} and \cite{latex:usrguide}, or the +examples given here. Since the \Package{typearea} package is loaded +automatically when using the main {\KOMAScript} classes, the package options +can be given as class options (see \autoref{sec:maincls.options}). + +In\textnote{Note!} this section the classes used in the examples are not +existing {\KOMAScript} classes but hypothetical ones. This +\iffree{guide}{book} assumes that ideally an appropriate class is available +for each task. + +\begin{Declaration} + \OptionVName{BCOR}{correction} +\end{Declaration}% +Use the \OptionVName{BCOR}{correction}\ChangedAt{v3.00}{\Package{typearea}} +option to specify the absolute value of the binding correction\Index{binding + correction}\textnote{binding correction}, i.\,e. the width of the area lost +from the paper during the binding process. This value is then automatically +taken into account when constructing the page layout and is added back to the +inner (or left) margin during output. In the value of the \PName{correction}, +you can specify any measurement unit understood by \TeX{}. + +\begin{Example} + Suppose you create a financial report. The whole thing should be printed out + one-sided on A4 paper and then stapled in a binder folder. The clip of the + folder covers 7.5\Unit{mm}. The stack of pages is very thin, so at most + another 0.75\Unit{mm} will be lost from bending and the sheets themselves. + Therefore, you can write: +\begin{lstcode} + \documentclass[a4paper]{report} + \usepackage[BCOR=8.25mm]{typearea} +\end{lstcode} + with \OptionValue{BCOR}{8.25mm} as an option to \Package{typearea} or +\begin{lstcode} + \documentclass[a4paper,BCOR=8.25mm]{report} + \usepackage{typearea} +\end{lstcode} + when using \OptionValue{BCOR}{8.25mm} as a global option. + + When using a {\KOMAScript} class, you do not need to load the + \Package{typearea} package explicitly: +\begin{lstcode} + \documentclass[BCOR=8.25mm]{scrreprt} +\end{lstcode} + You can omit the \Option{a4paper} option with \Class{scrreprt}, since this + is the default for all {\KOMAScript} classes. + + If you want to set the option to a new value later, you can, for example, + use the following: +\begin{lstcode} + \documentclass{scrreprt} + \KOMAoptions{BCOR=8.25mm} +\end{lstcode} + Defaults are initialized when the \Class{scrreprt} class is loaded. + Changing a setting with the \DescRef{\LabelBase.cmd.KOMAoptions} or + \DescRef{\LabelBase.cmd.KOMAoption} commands will automatically calculate a + new type area with new margins. +\end{Example} + +Note\textnote{Attention!} you must pass this option as a class option when +loading one of the {\KOMAScript} classes, as in the example above, or via +\DescRef{\LabelBase.cmd.KOMAoptions} or \DescRef{\LabelBase.cmd.KOMAoption} +after loading the class. When you use a {\KOMAScript} class, you should not +load the \Package{typearea} package explicitly with +\DescRef{\LabelBase.cmd.usepackage}, nor should you specify it as an optional +argument when loading the package if you are using another class. If the +option is changed with \DescRef{\LabelBase.cmd.KOMAoptions} or +\DescRef{\LabelBase.cmd.KOMAoption} after loading the package, the type area +and margins are automatically recalculated.% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{DIV}{factor} +\end{Declaration}% +The \OptionVName{DIV}{factor}\ChangedAt{v3.00}{\Package{typearea}} option +specifies the number of strips into which the page is divided horizontally and +vertically during the construction of the type area. The exact construction +method is found in \autoref{sec:typearea.divConstruction}. It's important to +realise that the larger the \PName{factor}, the larger the text block and the +smaller the margins. Any integer value greater than 4 is valid for +\PName{factor}. Note, however, that large values can cause violations in the +constraints on the margins of the type area, depending on how you set other +options. In extreme cases, the header may fall outside of the page. When you +use the \OptionVName{DIV}{factor} option, you are responsible for complying +with the margin constraints and for choosing a typographically pleasing line +length. + +In \autoref{tab:typearea.typearea}, you will find the sizes of the type areas +for several \Var{DIV} factors for the A4 page with no binding correction. In +this case, the other constraints that are dependent on the font size are not +taken into account. + +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside} +% \caption + [{Type area dimensions dependent on \Var{DIV} for A4}] + {\label{tab:typearea.typearea}Type area dimensions dependent on \Var{DIV} + for A4 regardless of \Length{topskip} or \Var{BCOR}} + [l] + \begin{tabular}[t]{ccccc} + \toprule + & + \multicolumn{2}{c}{Type area} & \multicolumn{2}{c}{Margins}\\ + %\raisebox{1.5ex}[0pt]{ + \Var{DIV} + %} + & width & height & top & inner \\ + \midrule + 6 & 105.00 & 148.50 & 49.50 & 35.00 \\ + 7 & 120.00 & 169.71 & 42.43 & 30.00 \\ + 8 & 131.25 & 185.63 & 37.13 & 26.25 \\ + 9 & 140.00 & 198.00 & 33.00 & 23.33 \\ + 10 & 147.00 & 207.90 & 29.70 & 21.00 \\ + 11 & 152.73 & 216.00 & 27.00 & 19.09 \\ + 12 & 157.50 & 222.75 & 24.75 & 17.50 \\ + 13 & 161.54 & 228.46 & 22.85 & 16.15 \\ + 14 & 165.00 & 233.36 & 21.21 & 15.00 \\ + 15 & 168.00 & 237.60 & 19.80 & 14.00 \\ + \bottomrule + \multicolumn{5}{r}{\small (all lengths in mm)} + \end{tabular} + \end{captionbeside} +\end{table} + + +\begin{Example} + Suppose you are writing up the minutes of a meeting using the + \Class{minutes} class. The whole thing should be two-sided. Your company + uses 12\Unit{pt} Bookman font. This font, which is one of the standard + PostScript fonts, is enabled in {\LaTeX} with the command + \verb|\usepackage{bookman}|. Bookman is a very wide font, meaning that the + individual characters are relatively wide compared to their height. + Therefore, the default setting for \Var{DIV} in \Package{typearea} is too + small. After thoroughly studying this entire chapter, you conclude that a + value of 15, instead of 12, is most suitable. The minutes will not be bound + but punched and kept in a folder, and thus no binding correction is + necessary. So you write: +\begin{lstcode} + \documentclass[a4paper,twoside]{minutes} + \usepackage{bookman} + \usepackage[DIV=15]{typearea} +\end{lstcode} + When you're done, you become aware that the minutes will from now on be + collected and bound together as a book at the end of the quarter. The + binding is to be a simple glue binding because this is only being done to + conform to ISO\,9000 and nobody is actually going to read them. The binding, + including space lost in folding the pages, requires an average of + 12\Unit{mm} You change the options of the \Package{typearea} package + accordingly and use the class for minutes that conform to ISO\,9000 + regulations: +\begin{lstcode} + \documentclass[a4paper,twoside]{iso9000p} + \usepackage{bookman} + \usepackage[DIV=15,BCOR=12mm]{typearea} +\end{lstcode} + Of course, it is equally possible to use a {\KOMAScript} class here: +\begin{lstcode} + \documentclass[twoside,DIV=15,BCOR=12mm]{scrartcl} + \usepackage{bookman} +\end{lstcode} + The \Option{a4paper} option can be left out when using the + \Class{scrartcl} class, as it is predefined in all {\KOMAScript} + classes. +\end{Example} + +Note\textnote{Attention!} that when using this option with one of the +{\KOMAScript} classes, as in the example above, it must be passed either as a +class option, or via \DescRef{\LabelBase.cmd.KOMAoptions} or +\DescRef{\LabelBase.cmd.KOMAoption} after loading the class. When using a +{\KOMAScript} class, the \Package{typearea} package should not be loaded +explicitly with \DescRef{\LabelBase.cmd.usepackage}, nor should the option be +given as an optional argument thereto. If the option is changed via +\DescRef{\LabelBase.cmd.KOMAoptions} or \DescRef{\LabelBase.cmd.KOMAoption} +after loading the package, the type area and margins are automatically +recalculated.% +\EndIndexGroup + +\begin{Declaration} + \OptionValue{DIV}{calc}% + \OptionValue{DIV}{classic} +\end{Declaration}% +As\ChangedAt{v3.00}{\Package{typearea}} already mentioned in +\autoref{sec:typearea.divConstruction}, there are fixed defaults for +\Var{DIV} when using A4 paper. These can be found in \autoref{tab:typearea.div}. +However, such fixed values have the disadvantage that they do not take into +account the letter spacing of the font used. With A4 and fairly narrow fonts, +this can quickly lead to an unpleasantly high number of characters per line. +See the considerations in \autoref{sec:typearea.basics}. If you choose a +different paper size, \Package{typearea} will calculate an appropriate +\Var{DIV} value for you. Of course, you can also apply this same calculation +to A4. To do so, simply use \OptionValue{DIV}{calc}% +\important{\OptionValue{DIV}{calc}} in place of +\OptionVNameRef{\LabelBase}{DIV}{factor}. Of course, you can also specify this +option explicitly for all other paper sizes. If you want automatic +calculation, this specification is useful, as it is possible to set different +preferences in a configuration file (see \autoref{sec:typearea-experts.cfg}). +Explicitly specifying the \OptionValue{DIV}{calc} option overrides such +configuration settings. + +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside} + %\caption + [{\PName{DIV} defaults for A4}] + {\label{tab:typearea.div}\PName{DIV} defaults for A4} + [l] + \begin{tabular}[t]{lccc} + \toprule + base font size: & 10\Unit{pt} & 11\Unit{pt} & 12\Unit{pt} \\ + \Var{DIV}: & 8 & 10 & 12 \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} + +You can also select the traditional page layout mentioned in +\autoref{sec:typearea.circleConstruction}, the medieval page canon. Instead of +the \OptionVName{\DescRef{\LabelBase.option.DIV}}{factor} or +\OptionValue{DIV}{calc} option, simply use the \OptionValue{DIV}{classic} +option. A \Var{DIV} value which is as close as possible to the medieval page +canon is then chosen. + +\begin{Example} + In the example using the Bookman font and the + \OptionVNameRef{\LabelBase}{DIV}{factor} option, the problem was to select a + \Var{DIV} value that better matched the font. Modifying that example, you + can simply leave the calculation of this value to \Package{typearea}: +\begin{lstcode} + \documentclass[a4paper,twoside]{protocol} + \usepackage{bookman} + \usepackage[DIV=calc]{typearea} +\end{lstcode} +\end{Example} +\iffree{\par% + Note\textnote{Attention!} that when using this option with one of the + \KOMAScript{} classes% + \iftrue , as in the example above, \fi% + it must be passed either as a class option, or via + \DescRef{\LabelBase.cmd.KOMAoptions} or \DescRef{\LabelBase.cmd.KOMAoption} + after loading the class. When using a {\KOMAScript} class, the + \Package{typearea} package should not be loaded explicitly with + \DescRef{\LabelBase.cmd.usepackage}, nor should the option be given as an + optional argument. If the option is changed via + \DescRef{\LabelBase.cmd.KOMAoptions} or \DescRef{\LabelBase.cmd.KOMAoption} + after loading the package, the type area and margins are automatically + recalculated.% +}{% +\vskip-\dp\strutbox% Wegen Code im Beispiel am Ende +}% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionValue{DIV}{current} + \OptionValue{DIV}{last} +\end{Declaration}% +If\ChangedAt{v3.00}{\Package{typearea}} you've been following the +examples closely, you already know how to calculate a \Var{DIV} value +based on the font you chose when using a {\KOMAScript} class together +with a font package. + +\begin{Explain} + The difficulty with doing so is that the {\KOMAScript} class already loads + the \Package{typearea} package itself. Thus, it is not possible to pass + options as optional arguments to \DescRef{\LabelBase.cmd.usepackage}. It + would also be pointless to specify the \OptionValueRef{\LabelBase}{DIV}{calc} + option as an optional argument to \DescRef{\LabelBase.cmd.documentclass}. + This option would be evaluated immediately on loading the \Package{typearea} + package and as a result the type area and margins would be calculated for the + standard {\LaTeX} font and not for the font loaded later. + + However, it is possible to recalculate the type area and margins after + loading the font with the aid of \DescRef{\LabelBase.cmd.KOMAoptions}% + \PParameter{\OptionValueRef{\LabelBase}{DIV}{calc}} or + \DescRef{\LabelBase.cmd.KOMAoption}% + \PParameter{\DescRef{\LabelBase.option.DIV}}\PParameter{calc}. The option + \PValue{calc} will then request a \Var{DIV} value for an appropriate line + length. + + As it is often more convenient to set the \Option{DIV} option not after + loading the font but at a more noticeable point, such as when loading the + class, the \Package{typearea} package offers two further symbolic values for + this option. +\end{Explain} + +The option \OptionVName{DIV}{current}\ChangedAt{v3.00}{\Package{typearea}} +recalculates the type area and margins using the current \Var{DIV} value. +This is less important for recalculating the type area after loading a +different font. Instead, it is useful if, for example, you change the +leading while keeping \Var{DIV} the same and want to ensure the +margin constraint that \Length{textheight} minus \Length{topskip} is a +multiple of \Length{baselineskip}. + +The option \OptionVName{DIV}{last}\ChangedAt{v3.00}{\Package{typearea}} will +recalculate the type area and margins using exactly the same settings as the +last calculation. + +\begin{Example} + Let's suppose again that we need to calculate an appropriate line length for + a type area using the Bookman font. At the same time, a {\KOMAScript} class + is used. This is very easy with the symbolic value \PValue{last} and the + command \DescRef{\LabelBase.cmd.KOMAoptions}: +\begin{lstcode} + \documentclass[BCOR=12mm,DIV=calc,twoside]{scrartcl} + \usepackage{bookman} + \KOMAoptions{DIV=last} +\end{lstcode} +If you decide later that you need a different \Var{DIV} value, just change the +setting of the optional argument to \DescRef{\LabelBase.cmd.documentclass}. +\end{Example} + +For a summary of all possible symbolic values for the \Option{DIV} option, see +\autoref{tab:symbolicDIV}. Note that the use of the +\Package{fontenc}\IndexPackage{fontenc} package may also cause \LaTeX{} to +load a different font. + +\begin{table} + \caption[{% + Symbolic values for the \DescRef{typearea.option.DIV} option and the + \PName{DIV} argument to \DescRef{\LabelBase.cmd.typearea}% + }]{% + Available symbolic values for the \DescRef{typearea.option.DIV} option or + the \PName{DIV} argument to + \DescRef{typearea.cmd.typearea}\OParameter{BCOR}\Parameter{DIV}% + } + \label{tab:symbolicDIV} + \begin{desctabular} + \pventry{areaset}{Recalculate page + layout.\IndexOption{DIV~=\textKValue{areaset}}}% + \pventry{calc}{Recalculate type area including choice of appropriate + \Var{DIV} value.\IndexOption{DIV~=\textKValue{calc}}}% + \pventry{classic}{Recalculate type area using medieval book design canon + (circle-based calculation).\IndexOption{DIV~=\textKValue{classic}}}% + \pventry{current}{Recalculate type area using current \Var{DIV} + value.\IndexOption{DIV~=\textKValue{current}}}% + \pventry{default}{Recalculate type area using the standard value for the + current page format and current font size. If no standard value exists, + \PValue{calc} is used.\IndexOption{DIV~=\textKValue{default}}}% + \pventry{last}{Recalculate type area using the same \PName{DIV} argument + as was used in the last call.\IndexOption{DIV~=\textKValue{last}}}% + \end{desctabular} +\end{table} + +Frequently\textnote{Attention!}, the type area must be recalculated in +combination with a change in the line spacing (\emph{leading})\Index{leading}. +Since the type area should be calculated in such a way that a whole number of +lines fits in the text block, a change in the leading normally requires a +recalculation of the type area. + +\begin{Example} + Suppose that you require a 10\Unit{pt} font and a spacing of 1.5 lines for a + dissertation. By default, {\LaTeX} sets the leading for 10\Unit{pt} fonts at + 2\Unit{pt}, in other words 1.2 lines. Therefore, you must use an additional + stretch factor of 1.25. Suppose also that you need a binding correction of + \(12\Unit{mm}\). Then the solution to the problem might look like this: +\begin{lstcode} + \documentclass[10pt,twoside,BCOR=12mm,DIV=calc]{scrreprt} + \linespread{1.25} + \KOMAoptions{DIV=last} +\end{lstcode}\IndexCmd{linespread} + Since \Package{typearea} always executes the \Macro{normalsize} command + itself when calculating a new type area, it is not strictly necessary to + set the chosen leading with \Macro{selectfont} after \Macro{linespread}, + since this will already be done in the recalculation. + + When using the \Package{setspace}\IndexPackage{setspace}% + \important{\Package{setspace}} package (see \cite{package:setspace}), the + same example would appear as follows: +\begin{lstcode} + \documentclass[10pt,twoside,BCOR=12mm,DIV=calc]{scrreprt} + \usepackage[onehalfspacing]{setspace} + \KOMAoptions{DIV=last} +\end{lstcode} +\end{Example} + +As\textnote{Hint!} you can see from the example, the \Package{setspace} +package saves you from needing to know the correct stretch value. However, +this only applies to the standard font sizes 10\Unit{pt}, 11\Unit{pt}, and +12\Unit{pt}. For all other font sizes, the package uses an approximate value. + +At\textnote{Attention!} this point, note that the line spacing for the title +page should be reset to the normal value, and the indexes should be set with +the normal line spacing as well. +\begin{Example} + Here\IndexPackage{setspace} is a complete example: +\begin{lstcode} + \documentclass[10pt,twoside,BCOR=12mm,DIV=calc] + {scrreprt} + \usepackage{setspace} + \onehalfspacing + \AfterTOCHead{\singlespacing} + \KOMAoptions{DIV=last} + \begin{document} + \title{Title} + \author{Markus Kohm} + \begin{spacing}{1} + \maketitle + \end{spacing} + \tableofcontents + \chapter{Ok} + \end{document} +\end{lstcode} + Also see the notes in \autoref{sec:typearea.tips}. The + \DescRef{tocbasic.cmd.AfterTOCHead}\IndexCmd{AfterTOCHead} command is + described in \autoref{cha:tocbasic} of \autoref{part:forExperts} on + \DescPageRef{tocbasic.cmd.AfterTOCHead}. +\end{Example} +Note also that changing the line spacing can also affect the page's header and +footer. For example, if you are using the \Package{scrlayer-scrpage} package, +you have to decide for yourself whether you prefer to have the normal or the +changed leading. See the \DescRef{scrlayer.option.singlespacing} option in +\autoref{cha:scrlayer}\important{\hyperref[cha:scrlayer]{\Package{scrlayer}}}% +\IndexPackage{scrlayer}\IndexOption{singlespacing}, +\DescPageRef{scrlayer.option.singlespacing}. + +Note\textnote{Attention!} that when using this option with one of the +{\KOMAScript} classes, as in the example above, it must be passed either as a +class option, or via \DescRef{\LabelBase.cmd.KOMAoptions} or +\DescRef{\LabelBase.cmd.KOMAoption} after loading the class. When using a +{\KOMAScript} class, the \Package{typearea} package should not be loaded +explicitly with \DescRef{\LabelBase.cmd.usepackage}, nor should the option be +given as an optional argument thereto. If the option is changed via +\DescRef{\LabelBase.cmd.KOMAoptions} or \DescRef{\LabelBase.cmd.KOMAoption} +after loading the package, the type area and margins are automatically +recalculated.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{typearea}\OParameter{BCOR}\Parameter{DIV}% + \Macro{recalctypearea} +\end{Declaration}% +\begin{Explain} + If the \DescRef{\LabelBase.option.DIV} option or the + \DescRef{\LabelBase.option.BCOR} option is set after loading the + \Package{typearea} package, the \Macro{typearea} command will be called + internally. When setting the \DescRef{\LabelBase.option.DIV} option, the + symbolic value \PValue{current} is used internally for \PName{BCOR}, which + for reasons of completeness is also found in \autoref{tab:symbolicBCOR}. + When setting the \DescRef{\LabelBase.option.BCOR} option, the symbolic value + \PValue{last} is used internally for \PName{DIV}. If instead you want the + type area and margins to be recalculated using the symbolic value + \PValue{current} for \PName{DIV}, you can use + \Macro{typearea}\POParameter{current}\PParameter{current} directly. +\end{Explain} + +\begin{table} + \caption[{% + Symbolic \PName{BCOR} arguments for \DescRef{typearea.cmd.typearea}% + }]{% + Available symbolic \PName{BCOR} arguments for + \Macro{typearea}\OParameter{BCOR}\Parameter{DIV}% + } + \label{tab:symbolicBCOR} + \begin{desctabular} + \pventry{current}{Recalculate type area with the currently valid + \Var{BCOR} value.\IndexOption{BCOR~=\textKValue{current}}} + \end{desctabular} +\end{table} + +If you change both \PName{BCOR} and \PName{DIV}, you should use +\Macro{typearea}, since then the type area and margins are recalculated only +once. With \DescRef{\LabelBase.cmd.KOMAoptions}% +\PParameter{\OptionVNameRef{\LabelBase}{DIV}{factor},% + \OptionVNameRef{\LabelBase}{BCOR}{correction}} the type area and margins are +recalculated once for the change to \DescRef{\LabelBase.option.DIV} and again +for the change to \DescRef{\LabelBase.option.BCOR}. + +\begin{Explain} + The command \Macro{typearea} is currently defined so as to make it possible + to change the type area in the middle of a document. However, several + assumptions about the structure of the {\LaTeX} kernel are made, and + internal definitions and sizes of the kernel are changed. Since changes are + only made to the {\LaTeX} kernel to fix bugs, there is a high likelihood, + though no guarantee, that this will still work in future versions of + \LaTeXe{}. When used within the document, a page break will result. +\end{Explain} + +Since\important{\Macro{recalctypearea}} \DescRef{\LabelBase.cmd.KOMAoption}% +\PParameter{\hyperref[desc:\LabelBase.option.DIV.last]{\Option{DIV}}}% +\PParameter{\hyperref[desc:\LabelBase.option.DIV.last]{last}}, +\DescRef{\LabelBase.cmd.KOMAoptions}% +\PParameter{\OptionValueRef{\LabelBase}{DIV}{last}}, or +\Macro{typearea}\POParameter{current}\PParameter{last} is frequently needed +to recalculate the type area and margins, there is a convenience command, +\Macro{recalctypearea}\ChangedAt{v3.00}{\Package{typearea}}. +\begin{Example} + If you find the notation +\begin{lstcode} + \KOMAoptions{DIV=last} +\end{lstcode} + or +\begin{lstcode} + \typearea[current]{last} +\end{lstcode} + too cumbersome for recalculating text area and margins because of + the many special characters, you can simply use +\begin{lstcode} + \recalctypearea +\end{lstcode} +\end{Example}% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{twoside}{simple switch}% + \OptionValue{twoside}{semi} +\end{Declaration}% +As explained in \autoref{sec:typearea.basics}, the distribution of the margins +depends on whether the document is to be printed one-sided or two-sided. For +one-sided printing, the left and right margins are the same width, whereas for +two-sided printing the inner margin of one page is only half as wide as the +corresponding outer margin. To invoke two-sided printing, you must give the +\Package{typearea} package the \Option{twoside} option. For the +\PName{simple switch}, you can use any of the standard values for +simple switches in \autoref{tab:truefalseswitch}. If the option is passed +without a value, the value \PValue{true} is assumed, so two-sided printing is +enabled. Deactivating the option leads to one-sided printing. + +\begin{table} + \centering + \caption{Standard values for simple switches in \KOMAScript} + \begin{tabular}{ll} + \toprule + Value & Description \\ + \midrule + \PValue{true} & activates the option \\ + \PValue{on} & activates the option \\ + \PValue{yes} & activates the option \\ + \PValue{false}& deactivates the option \\ + \PValue{off} & deactivates the option \\ + \PValue{no} & deactivates the option \\ + \bottomrule + \end{tabular} + \label{tab:truefalseswitch} +\end{table} + +In addition to the values in \autoref{tab:truefalseswitch}, you can also use +the value \PValue{semi}\ChangedAt{v3.00}{\Package{typearea}}. This value +results in two-sided printing with one-sided margins and one-sided, that is +non-alternating, marginal notes. +Beginning\ChangedAt{v3.12}{\Package{typearea}} with \KOMAScript{} version +3.12, binding corrections (see \DescRef{\LabelBase.option.BCOR}, +\DescPageRef{typearea.option.BCOR}) will be part of the left margin on odd +pages but part of the right margin on even pages. But if you switch on +compatibility with a prior +version\important{\OptionValueRef{\LabelBase}{version}{3.12}} of \KOMAScript{} +(see \autoref{sec:typearea.compatibilityOptions}, +\autopageref{sec:typearea.compatibilityOptions}), the binding correction will +be part of the left margin on both pages while using +\OptionValue{twoside}{semi}. + +The option can also be passed as class option in +\DescRef{\LabelBase.cmd.documentclass}, as a package option with +\DescRef{\LabelBase.cmd.usepackage}, or even after loading +\Package{typearea} with \DescRef{\LabelBase.cmd.KOMAoptions} or +\DescRef{\LabelBase.cmd.KOMAoption}. Using this option after loading +\Package{typearea} automatically\textnote{automatic recalculation} results in +the recalculation of the type area using +\DescRef{\LabelBase.cmd.recalctypearea} (see +\DescPageRef{typearea.cmd.recalctypearea}). If the two-sided mode was active +before the option was set, a page break is made to the next odd page before +the recalculation.% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{twocolumn}{simple switch} +\end{Declaration} +To compute an appropriate type area with the help of +\OptionValueRef{\LabelBase}{DIV}{calc}, it is useful to know in advance if the +document is to be typeset in one or two columns. Since the considerations +about line length in \autoref{sec:typearea.basics} apply to each column, the +type area in two-column documents can be up to twice as wide as in one-column +documents. + +To make this distinction, you must tell \Package{typearea} if the document is +to be set with two columns using the \Option{twocolumn} option. Since this is +a \PName{simple switch}, any of the standard values for simple switches +from \autoref{tab:truefalseswitch} are valid. If the option is passed without +a value, the value \PValue{true}\important{\OptionValue{twocolumn}{true}} is +used, i.\,e. the two-column setting. Deactivating the option returns you to +the default one-column setting. + +The option can also be passed as a class option in +\DescRef{\LabelBase.cmd.documentclass}, as a package option to +\DescRef{\LabelBase.cmd.usepackage}, or even after loading \Package{typearea} +with \DescRef{\LabelBase.cmd.KOMAoptions} or +\DescRef{\LabelBase.cmd.KOMAoption}. Using this option after loading +\Package{typearea} will\textnote{automatic recalculation} automatically +recalculate the type area using \DescRef{\LabelBase.cmd.recalctypearea} (see +\DescPageRef{typearea.cmd.recalctypearea}).% +% +\EndIndexGroup + +\begin{Declaration} + \OptionVName{headinclude}{simple switch}% + \OptionVName{footinclude}{simple switch} +\end{Declaration}% +\begin{Explain}% + So far we have discussed how the type area is calculated\Index{type area} + and the relationship of the margins\Index{margins} to one another and + between margins and body of the text. But one important question has not + been answered: What exactly are \emph{the margins}? + + At first glance the question appears trivial: Margins are those parts on the + right, left, top, and bottom of the page which remain empty. But this is + only half the story. Margins are not always empty. Sometimes there can be + marginal notes, for example (see the \DescRef{maincls.cmd.marginpar} command + in \cite{lshort} or \autoref{sec:maincls.marginNotes}). + + For the top and bottom margins, the question becomes how to handle + headers\Index{page header} and footers\Index{page footer}. Do these two + belong to the text body or to their respective margins? This question is not + easy to answer. Clearly an empty footer or header belongs to the margins, + since it cannot be distinguished from the rest of the margins. A footer that + contains only the + pagination\Index[indexmain]{pagination}\textnote{pagination} % + \iffalse % + \unskip\footnote{Pagination refers to the indication of the page number, + either inside or outside the type area, and usually appears in either the + header or the footer of the page.} % + \fi % + looks more like a margin and should therefore be counted as such. It is + irrelevant for the visual effect whether headers or footers are easily + recognized as such when reading or skimming. The decisive factor is how a + well-filled page appears when viewed \emph{out of focus}. For this purpose, + you could, for example, steal the glasses of a far-sighted grandparent and + hold the page about half a meter from the tip of your nose. If you lack an + available grandparent, you can also adjust your vision to infinity and look + at the page with one eye only. Those who wear glasses have a clear advantage + here. If the footer contains not only the pagination but also other material + like a copyright notice, it looks more like a slightly detached part of the + body of the text. This needs to be taken into account when calculating the + type area. + + For the header, this is even more complicated. The header often contains + running heads\Index[indexmain]{running heads}\textnote{running heads}. % + \iffalse% + \unskip\footnote{Running heads refer to the repetition of a title, in + titling font, which usually appears in the page header, or rarely in the + page footer.} % + \fi If you use the current chapter and section titles in your running head + and these titles are long, the header itself will necessarily be very + long. In this case, the header again acts like a detached part of the text + body and less like an empty margin. This effect is reinforced if the header + contains not only the chapter or section title but also the pagination. With + material on the right and left side, the header no longer appears as an + empty margin. It is more difficult if the pagination is in the footer and + the length of the running titles varies, so that the header may look like + part of the margin on one page and part of the text body on another. Under + no circumstances should you treat the pages differently. That would lead to + vertically jumping headers, which is not suitable even for a flip book. In + this case it is probably best to count the header as part of the text body. + + The decision is easy when the header or footer is separated from the actual + text body by a line. This will give a ``closed'' appearance and the header + or footer should be calculated as part of the text body. Remember: It is + irrelevant that the line improves the optical separation of text and header + or footer; only the appearance when viewed out of focus is important. +\end{Explain} + +The \Package{typearea} package cannot determine on its own whether +to count headers and footers\important{\OptionValue{headinclude}{true} + \OptionValue{headinclude}{false} \OptionValue{footinclude}{true} + \OptionValue{footinclude}{false}} as part of the text body or the +margin. The \Option{headinclude} and \Option{footinclude} options cause +the header or footer to be counted as part of the text. These +options, being \PName{simple switch}es\ChangedAt{v3.00}{\Package{typearea}}, +accept the standard values for simple switches in +\autoref{tab:truefalseswitch}. You can use the options without +specifying a value, in which case the value \PValue{true} is used for +the \PName{simple}, i.\,e. the header or footer is counted as part of +the text. + +If you are unsure what the correct setting should be, reread the explanations +above. The default is usually \OptionValue{headinclude}{false} and +\OptionValue{footinclude}{false}, but this can change in the {\KOMAScript} +classes or in other {\KOMAScript} packages depending on the options used (see +\autoref{sec:maincls.options} and \autoref{cha:scrlayer-scrpage}). + +Note\textnote{Attention!} that these options must be passed as class options +when using one of the {\KOMAScript} classes, or after loading the class with +\DescRef{\LabelBase.cmd.KOMAoptions} or \DescRef{\LabelBase.cmd.KOMAoption}. +Changing these options after loading the \Package{typearea} package does not +automatically recalculate the type area. Instead, the changes only take effect +the next time the type area is recalculated. For recalculation of the type +area, see the \hyperref[desc:\LabelBase.option.DIV.last]{\Option{DIV}} option +with the values \hyperref[desc:\LabelBase.option.DIV.last]{\PValue{last}} or +\hyperref[desc:\LabelBase.option.DIV.current]{\PValue{current}} (see +\DescPageRef{typearea.option.DIV.last}) or the +\DescRef{\LabelBase.cmd.recalctypearea} command (see +\DescPageRef{typearea.cmd.recalctypearea}).% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{mpinclude}{simple switch} +\end{Declaration} +In addition to\ChangedAt{v2.8q}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} documents where the header and footer are more likely to +be part of the text body than the margins, there are also documents where +marginal notes should be considered part of the text body as well. The option +\Option{mpinclude} does exactly this. The option, as a \PName{simple + switch}\ChangedAt{v3.00}{\Package{typearea}}, accepts the standard values +for simple switches in \autoref{tab:truefalseswitch}. You can also pass this +option without specifying a value, in which case \PValue{true} is assumed. + +The effect of \OptionValue{mpinclude}{true}% +\important{\OptionValue{mpinclude}{true}} is that a width-unit is removed from +the main text body and used as the area for marginal notes. With the +\OptionValue{mpinclude}{false} option, which is the default setting, part of +the normal margin is used for marginal notes. The width of that area is one or +one-and-a-half width units, depending on whether you have chosen one-sided or +two-sided printing. The \OptionValue{mpinclude}{true} option is mainly for +experts and so is not recommended. + +\begin{Explain} + In most cases where the option \Option{mpinclude} makes sense, you also + require a wider area for marginal notes. Often, however, only a part of the + marginal note's width should be part of the text area, not the whole width, + for example if the margin is used for quotations. Such quotations are + usually set as unjustified text, with the flush edge against the text area. + Since the unjustified text gives no homogeneous optical impression, these + lines can protrude partially into the margin. You can accomplish that by + using the option \Option{mpinclude} and by increasing the length + \Length{marginparwidth} after the type area has been set up. The length can + be easily enlarged with the command \Macro{addtolength}. How much the length + has to be increased depends on the individual situation and it requires a + certain amount of sensitivity. This is another reason the \Option{mpinclude} + option is primarily intended for experts. Of course you can specify, for + example, that the marginal notes should project a third of the way into the + normal margin by using the following: +\begin{lstcode} + \setlength{\marginparwidth}{1.5\marginparwidth} +\end{lstcode} + +Currently there is no option to enlarge the space for marginal notes within +the text area. There is only one way to accomplish this: first, either omit +the \Option{mpinclude} option or set it to \PValue{false}, and then, after the +type area has been calculated, reduce \Length{textwidth} (the width of the +text body) and increase \Length{marginparwidth} (the width of the marginal +notes) by the same amount. Unfortunately, this procedure cannot be combined +with automatic calculation of the \PName{DIV} value. In contrast, +\Option{mpinclude} is taken into account with +\OptionValueRef{\LabelBase}{DIV}{calc}\IndexOption{DIV~=calc} (see +\DescPageRef{typearea.option.DIV.calc}). +\end{Explain} + +Note\textnote{Attention!} that these options must be passed as class options +when using one of the {\KOMAScript} classes, or after loading the class with +\DescRef{\LabelBase.cmd.KOMAoptions} or \DescRef{\LabelBase.cmd.KOMAoption}. +Changing these options after loading the \Package{typearea} package does not +automatically recalculate the type area. Instead, the changes only take effect +the next time the type area is recalculated. For recalculation of the type +area, see the \hyperref[desc:\LabelBase.option.DIV.last]{\Option{DIV}} option +with the values \hyperref[desc:\LabelBase.option.DIV.last]{\PValue{last}} or +\hyperref[desc:\LabelBase.option.DIV.current]{\PValue{current}} (see +\DescPageRef{typearea.option.DIV.last}) or the +\DescRef{\LabelBase.cmd.recalctypearea} command (see +\DescPageRef{typearea.cmd.recalctypearea}).% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{headlines}{number of lines} + \OptionVName{headheight}{height} +\end{Declaration}% +\BeginIndex{}{header>height}% +We have seen how to calculate the type area using the \Package{typearea} +package and how to specify whether the header and footer are part of the text +or the margins. However, especially for the header, we still have to specify +the height. This is achieved with the options \Option{headlines} and +\Option{headheight}\ChangedAt{v3.00}{\Package{typearea}}. + +The \Option{headlines}\important{\Option{headlines}} option specifies the +number of lines of text in the header. The \Package{typearea} package uses a +default of 1.25. This is a compromise: large enough for underlined headers +(see \autoref{sec:maincls.pagestyle}) and small enough that the relative +weight of the top margin is not affected too much when the header is not +underlined. Thus the default value will usually be adequate. In special cases, +however, you may need to adjust the header height more precisely to your +actual requirements. + +\begin{Example} + Suppose you want to create a two-line header. Normally this would result in + {\LaTeX} issuing the warning ``\texttt{overfull} \Macro{vbox}'' for each + page. To prevent this from happening, you tell the \Package{typearea} + package to calculate an appropriate type area: +\begin{lstcode} + \documentclass[a4paper]{article} + \usepackage[headlines=2.1]{typearea} +\end{lstcode} + If you use a {\KOMAScript} class, you should pass this option directly to + the class: +\begin{lstcode} + \documentclass[a4paper,headlines=2.1]{scrartcl} +\end{lstcode} + Commands that can be used to define the contents of a two-line header + can be found in \autoref{cha:scrlayer-scrpage}. +\end{Example} + +In some cases it is useful to be able to specify the header height not in +lines but directly as a length. This is accomplished with the alternative +option \Option{headheight}\important{\Option{headheight}}. All lengths and +sizes that \LaTeX{} understands are valid for \PName{height}. +Note\textnote{Attention!}, however, that if you use a \LaTeX{} length such as +\Length{baselineskip}, its value is not fixed at the time the option is set. +The value that will be used will be the one current at the time the type area +and margins are calculated. Also\textnote{Attention!}, \LaTeX{} lengths like +\Length{baselineskip} should never be used in the optional argument of +\DescRef{\LabelBase.cmd.documentclass} or \DescRef{\LabelBase.cmd.usepackage}. + +Please be sure to note\textnote{Attention!} that these options must be passed +as class options when using one of the {\KOMAScript} classes, or after loading +the class with \DescRef{\LabelBase.cmd.KOMAoptions} or +\DescRef{\LabelBase.cmd.KOMAoption}. Changing these options after loading the +\Package{typearea} package does not\textnote{no automatic recalculation} +automatically recalculate the type area. Instead, the changes only take effect +the next time the type area is recalculated. For recalculation of the type +area, see the \hyperref[desc:\LabelBase.option.DIV.last]{\Option{DIV}} option +with the values \hyperref[desc:\LabelBase.option.DIV.last]{\PValue{last}} or +\hyperref[desc:\LabelBase.option.DIV.current]{\PValue{current}} (see +\DescPageRef{typearea.option.DIV.last}) or the +\DescRef{\LabelBase.cmd.recalctypearea} command (see +\DescPageRef{typearea.cmd.recalctypearea}).% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{footlines}{number of lines}% + \OptionVName{footheight}{height}% + \Length{footheight}% +\end{Declaration} +\BeginIndex{}{footer>height}% +Like\ChangedAt{v3.12}{\Package{typearea}} the header, the footer also requires +an indication of how high it should be. But unlike the height of the header, +the \LaTeX{} kernel does not provide a length for the height of the footer. So +\Package{typearea} defines a new length, +\Length{footheight}\IndexLength[indexmain]{footheight}, if it does not already +exist. Whether this length will be used by classes or packages to design the +headers and footers depends on the individual classes and packages. The +\KOMAScript{} package +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}}% +\IndexPackage{scrlayer-scrpage} incorporates +\Length{footheight} and actively cooperates with \Package{typearea}. The +\KOMAScript{} classes, on the other hand, do not recognize \Length{footheight} +because without the help of packages they offer only page styles with +single-line page footers. + +You can use \Option{footlines}\important{\Option{footlines}} to set the number +of lines in the footer, similar to \DescRef{\LabelBase.option.headlines} for +the number of lines in the header. By default the \Package{typearea} package +uses 1.25 footer lines. This value is a compromise: large enough to +accommodate an overlined or underlined footer (see +\autoref{sec:maincls.pagestyle}), and small enough that the relative weight of +the bottom margin is not affected too much when the footer lacks a dividing +line. Thus the default value will usually be adequate. In special cases, +however, you may need to adjust the footer height more precisely to your +actual requirements. + +\begin{Example} + Suppose you need to place a two-line copyright notice in the footer. + Although there is no test in \LaTeX{} itself to check the space available + for the footer, exceeding the designated height will likely result in + unbalanced distribution of type area and margins. Moreover, a package such + as \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + \important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}}% + \IndexPackage{scrlayer-scrpage}, which can be used to define such a footer, + performs the appropriate test and will report any overruns. So it makes + sense to specify the required footer height when calculating of the type + area: +\begin{lstcode} + \documentclass[a4paper]{article} + \usepackage[footlines=2.1]{typearea} +\end{lstcode} + Again, if you use a \KOMAScript{} class, you should pass this + option directly to the class: +\begin{lstcode} + \documentclass[footlines=2.1]{scrartcl} +\end{lstcode} + Commands that can be used to define the contents of a two-line footer + are described in \autoref{cha:scrlayer-scrpage}. +\end{Example} + +In some cases it is useful to be able to specify the footer height not in +lines but directly as a length. This is accomplished with the alternative +option \Option{footheight}\important{\Option{footheight}}. All lengths and +sizes that \LaTeX{} understands are valid for \PName{height}. Note, however, +that if you use a \LaTeX{} length such as \Length{baselineskip}, its value is +not fixed at the time the option is set. The value that will be used will be +the one current at the time the type area and margins are calculated. +Also\textnote{Attention!}, \LaTeX{} lengths like \Length{baselineskip} should +never be used in the optional argument of +\DescRef{\LabelBase.cmd.documentclass} or \DescRef{\LabelBase.cmd.usepackage}. + +Please be sure to note\textnote{Attention!} that these options must be passed +as class options when using one of the {\KOMAScript} classes, or after loading +the class with \DescRef{\LabelBase.cmd.KOMAoptions} or +\DescRef{\LabelBase.cmd.KOMAoption}. Changing these options after loading +\Package{typearea} does not\textnote{no automatic recalculation} automatically +recalculate the type area. Instead, the changes only take effect the next time +the type area is recalculated. For recalculation of the type area, see the +\hyperref[desc:\LabelBase.option.DIV.last]{\Option{DIV}} option with the +values \hyperref[desc:\LabelBase.option.DIV.last]{\PValue{last}} or +\hyperref[desc:\LabelBase.option.DIV.current]{\PValue{current}} (see +\DescPageRef{typearea.option.DIV.last}) or the +\DescRef{\LabelBase.cmd.recalctypearea} command (see +\DescPageRef{typearea.cmd.recalctypearea}).% +\EndIndexGroup + + +\begin{Declaration} + \Macro{areaset}\OParameter{BCOR}\Parameter{width}\Parameter{height} +\end{Declaration}% +So far, we have seen how to create a nice type area\Index{type area} for +standard situations and how the \Package{typearea} package makes it easier to +accomplish this while still giving the freedom to adapt the layout. However, +there are cases where the text body has to adhere precisely to specific +dimensions. At the same time, the margins should be distributed as nicely as +possible and, if necessary, a binding correction should be taken into account. +The \Package{typearea} package offers the command \Macro{areaset} for this +purpose. This command takes as parameters the width and height of the text +body, as well as the binding correction as an optional parameter. The width +and position of the margins are then calculated automatically, taking account +of the options \DescRef{\LabelBase.option.headinclude}, +\OptionValueRef{\LabelBase}{headinclude}{false}, +\DescRef{\LabelBase.option.footinclude} and +\OptionValueRef{\LabelBase}{footinclude}{false} where needed. On the other +hand, the options +\DescRef{\LabelBase.option.headlines}\IndexOption{headlines}, +\DescRef{\LabelBase.option.headheight}\IndexOption{headheight}, +\DescRef{\LabelBase.option.footlines}\IndexOption{footlines}, and +\DescRef{\LabelBase.option.footheight}\IndexOption{footheight} are ignored! +For more information, see \DescRef{typearea-experts.cmd.areaset} on +\DescPageRef{typearea-experts.cmd.areaset} of +\autoref{sec:typearea-experts.experimental}. + +The default for \PName{BCOR} is 0\Unit{pt}. If you want to preserve the +current binding correction, for example the value set by option +\DescRef{\LabelBase.option.BCOR}\IndexOption{BCOR}, you can use the symbolic +value \PValue{current} at an optional argument. + +\begin{Example} + Suppose a text on A4 paper needs a width of exactly 60 characters in a + typewriter font and a height of exactly 30 lines per page. You can + accomplish this with the following preamble: +\begin{lstcode} + \documentclass[a4paper,11pt]{article} + \usepackage{typearea} + \newlength{\CharsLX}% Width of 60 characters + \newlength{\LinesXXX}% Height of 30 lines + \settowidth{\CharsLX}{\texttt{1234567890}} + \setlength{\CharsLX}{6\CharsLX} + \setlength{\LinesXXX}{\topskip} + \addtolength{\LinesXXX}{29\baselineskip} + \areaset{\CharsLX}{\LinesXXX} +\end{lstcode} + The factor is 29 rather than 30 because the baseline of the topmost line of + text is \Macro{topskip} below the top margin of the type area, as long as + the height of the topmost line is less than \Macro{topskip}. So we don't + need to add any height for the first line. The descenders of characters on + the lowermost line, on the other hand, protrude below the dimensions of the + type area. + +\iffalse % Umbruchkorrekturtext + If instead you want to set a book of poetry in which the text area is + exactly square with a side length of 15\Unit{cm}, with a binding correction + of 1\Unit{cm} taken into account, you can achieve this as follows:% +\else% + To set a book of poetry with a square text area with a side length of + 15\Unit{cm} and a binding correction of 1\Unit{cm}, the following is + possible:% +\fi +\begin{lstcode} + \documentclass{poetry} + \usepackage{typearea} + \areaset[1cm]{15cm}{15cm} +\end{lstcode} +\end{Example} +\EndIndexGroup + + +\begin{Declaration} + \OptionValue{DIV}{areaset} +\end{Declaration}% +In\ChangedAt{v3.00}{\Package{typearea}} rare cases it is useful to be able to +realign the current type area. This is possible with the option +\OptionValue{DIV}{areaset}, where +\DescRef{\LabelBase.cmd.KOMAoptions}\PParameter{\OptionValue{DIV}{areaset}} +corresponds to the +\begin{lstcode} + \areaset[current]{\textwidth}{\textheight} +\end{lstcode} +command. The same result is obtained if you use +\OptionValueRef{\LabelBase}{DIV}{last} and the typearea was last set with +\DescRef{\LabelBase.cmd.areaset}.% +% +\EndIndexGroup + +\iftrue% Umbruchkorrekturtext: Alternativen + If you have concrete specifications for the margins, \Package{typearea} is + not suitable. In this case, you should use the + \Package{geometry}\IndexPackage{geometry}% + \important{\Package{geometry}} package (see \cite{package:geometry}).% +\fi% +\iffalse% + The \Package{typearea} package is not designed to set up predefined margins. + If you have to do so, the \Package{geometry}\IndexPackage{geometry} package + (see \cite{package:geometry}) is recommended.% +\fi + + +\section{Selecting the Paper Size} +\seclabel{paperTypes}% +\BeginIndexGroup + +The paper size is a key feature of a document. As already mentioned in the +description of the supported page layout constructions (see +\autoref{sec:typearea.basics} to \autoref{sec:typearea.circleConstruction} +starting on \autopageref{sec:typearea.basics}), the layout of the page, and +hence the entire document, depends on the paper size. Whereas the {\LaTeX} +standard classes are limited to a few formats, {\KOMAScript} supports even +unusual paper sizes in conjunction with the \Package{typearea} package. + + +\begin{Declaration} + \OptionVName{paper}{size} + \OptionVName{paper}{orientation} +\end{Declaration}% +The \Option{paper}\ChangedAt{v3.00}{\Package{typearea}} option is the central +element for paper-size selection\important[i]{% + \begin{tabular}[t]{@{}l@{}l@{}} + \KOption{paper} & \PValue{letter}, \\ + & \PValue{legal}, \\ + & \PValue{executive}, \\ + & \PValue{A0}, \PValue{A1}, \PValue{A2} \dots\\ + & \PValue{B0}, \PValue{B1}, \PValue{B2} \dots\\ + & \PValue{C0}, \PValue{C1}, \PValue{C2} \dots\\ + & \PValue{D0}, \PValue{D1}, \PValue{D2} \dots\end{tabular}} % +in \KOMAScript. \PName{Size} supports the American formats \Option{letter}, +\Option{legal}, and \Option{executive}. In addition, it supports the ISO +formats of the series A, B, C, and D, for example \PValue{A4} or\,---\,written +in lower case\,---\,\PValue{a4}. + +Landscape orientations\important{% + \begin{tabular}[t]{@{}l@{}l@{}} + \KOption{paper} & \PValue{landscape}, \\ + & \PValue{seascape} + \end{tabular}% +} are supported by specifying the option one more time +with the value \PValue{landscape}\Index{paper>orientation} or +\PValue{seascape}\ChangedAt{v3.02c}{\Package{typearea}}. The only difference +between \PValue{landscape} and \PValue{seascape} is that that the application +\File{dvips} rotates \PValue{landscape} pages by -90\Unit{\textdegree}, while +it rotates \PValue{seascape} pages by +90\Unit{\textdegree}. Thus +\PValue{seascape} is particularly useful whenever a PostScript viewer shows +landscape pages upside-down. In order for the difference to have an effect, +you must not deactivate the \DescRef{\LabelBase.option.pagesize}% +\IndexOption{pagesize}\important{\DescRef{\LabelBase.option.pagesize}} option +described below. + +Additionally, the \PName{size} can also be specified either in the form +\PName{width}\texttt{:}\PName{height}\ChangedAt{v3.01b}{\Package{typearea}}% +\important{\OptionVName{paper}{width\textup{:}height}} or in the form +\PName{height}\texttt{:}\PName{width}\ChangedAt{v3.22}{\Package{typearea}}% +\important{\OptionVName{paper}{height\textup{:}width}}. Which value is taken +as the \PName{height} and which as the \PName{width} depends on the +orientation of the paper. With \OptionValue{paper}{landscape} or +\OptionValue{paper}{seascape}, the smaller value is the \PName{height} and the +larger one is the \PName{width}. With +\OptionValue{paper}{portrait}\important{\OptionValue{paper}{portrait}}, the +smaller value is the \PName{width} and the larger one is the \PName{height}. + +Note\textnote{Attention!} that until version~3.01a the first value was always +the \PName{height} and the second one the \PName{width}. From version~3.01b +through version~3.21, the first value was always the \PName{width} and the +second one the \PName{height}. This is important if you use compatibility +settings (see option \DescRef{\LabelBase.option.version}% +\IndexOption{version}\important{\DescRef{\LabelBase.option.version}}, +\autoref{sec:typearea.compatibilityOptions}, +\DescPageRef{typearea.option.version}). + +\begin{Example} + Suppose you want to print an ISO-A8 index card in landscape orientation. The + margins should be very small and no header or footer will be used. +\begin{lstcode} + \documentclass{article} + \usepackage[headinclude=false,footinclude=false, + paper=A8,landscape]{typearea} + \areaset{7cm}{5cm} + \pagestyle{empty} + \begin{document} + \section*{Supported Paper Sizes} + letter, legal, executive, a0, a1 \dots\ % + b0, b1 \dots\ c0, c1 \dots\ d0, d1 \dots + \end{document} +\end{lstcode} + If the file cards have the special format (height:width) + 5\Unit{cm}\,:\,3\Unit{cm}, this can be achieved using the following: +\begin{lstcode} + \documentclass{article} + \usepackage[headinclude=false,footinclude=false,% + paper=landscape,paper=5cm:3cm]{typearea} + \areaset{4cm}{2.4cm} + \pagestyle{empty} + \begin{document} + \section*{Supported Paper Sizes} + letter, legal, executive, a0, a1 \dots\ % + b0, b1 \dots\ c0, c1 \dots\ d0, d1 \dots + \end{document} +\end{lstcode} +\end{Example} + +By default, {\KOMAScript} uses A4 paper in portrait orientation. This is in +contrast\textnote{\KOMAScript{} vs. standard classes} to the standard classes, +which by default use the American letter paper format. + +Please note\textnote{Attention!} that these options must be passed as class +options when using one of the {\KOMAScript} classes, or after loading the +class with \DescRef{\LabelBase.cmd.KOMAoptions} or +\DescRef{\LabelBase.cmd.KOMAoption}. Changing the paper size or orientation +with \DescRef{\LabelBase.cmd.KOMAoptions} or +\DescRef{\LabelBase.cmd.KOMAoption} does not\textnote{no automatic +recalculation} automatically recalculate the type area. Instead, the changes +only take effect the next time the type area is recalculated. For +recalculation of the type area, see the +\hyperref[desc:\LabelBase.option.DIV.last]{\Option{DIV}} option with the +values \hyperref[desc:\LabelBase.option.DIV.last]{\PValue{last}} or +\hyperref[desc:\LabelBase.option.DIV.current]{\PValue{current}} (see +\DescPageRef{typearea.option.DIV.last}) or the +\DescRef{\LabelBase.cmd.recalctypearea} command (see +\DescPageRef{typearea.cmd.recalctypearea}).% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{pagesize}{output driver} +\end{Declaration}% +\begin{Explain}% + The above-mentioned mechanisms for choosing the paper format only affect the + output insofar as internal {\LaTeX} lengths are set. The \Package{typearea} + package then uses them in dividing the page into type area and margins. + The specification of the DVI formats\Index{DVI}, however, does not include + any indication of paper size. % + \iffree{% + When outputting directly from the DVI format to a low-level printer + language such as PCL% + \iftrue% Umbruchkorrektur + \footnote{PCL is a family of printer languages that HP uses for its + inkjet and laser printers.}% + \fi \ or ESC/P2% + \iftrue% Umbruchkorrektur + \footnote{ESC/P2 is the printer language that EPSON uses for its + dot-matrix, and older inkjet or laser printers.}% + \fi \ or ESC/P-R% + \iftrue% Umbruchkorrektur + \footnote{ESC/P-R is the printer language that EPSON currently uses for + inkjet and laser printers.}% + \fi, this is usually not an issue% + }{% + In the past, when DVI was printed directly into a low-level printer + language, it did not matter% + }, since with these formats the reference zero-position is at the top left, + as in DVI. But nowadays, the output is normally translated into languages + such as PostScript\Index{PostScript} or PDF\Index{PDF}, in which the + zero-position is at a different point, and in which the paper format should + be specified in the output file, which is missing this information. To solve + this problem, the corresponding driver uses a default paper size, which the + user can change either by an option or by specifying it in the {\TeX} source + file. When using the DVI driver \File{dvips} or \File{dvipdfm}, the + information can be given in the form of a \Macro{special} command. When + using {pdf\TeX}, {lua\TeX}, {\XeTeX} or {V\TeX} their paper-size lengths are + set appropriately. +\end{Explain} +With the \Option{pagesize} option, you can select an output driver for writing +the paper size into the destination document. Supported output drivers are +listed at \autoref{tab:typearea.outputdriver}\iffalse% +, \autopageref{tab:typearea.outputdriver}\fi. The +default\ChangedAt{v3.17}{\Package{typearea}} is \Option{pagesize}. Using this +option without providing a value is equivalent to \OptionValue{pagesize}{auto}. +% +\begin{table} + \caption{Output driver for option \OptionVName{pagesize}{output driver}} + \begin{desctabular} + \pventry{auto}{Uses output driver \PValue{pdftex} if the pdf\TeX-specific + lengths \Macro{pdfpagewidth}\IndexLength{pdfpagewidth} and + \Macro{pdfpageheight}\IndexLength{pdfpageheight} or the lua\TeX-specific + lengths \Macro{pagewidth}\IndexLength{pagewidth} and + \Macro{pageheight}\IndexLength{pageheight} are defined. In addition, the + output driver \PValue{dvips} will also be used. This setting is in + principle also suitable for \XeTeX{}.% + \IndexOption{pagesize~=\textKValue{auto}}}% + \pventry{automedia}{Almost the same as \PValue{auto} but if the + \mbox{V\TeX}-specific lengths + \Macro{mediawidth}\IndexLength{mediawidth} and + \Macro{mediaheight}\IndexLength{mediaheight} are defined, they will be + set as well.\IndexOption{pagesize~=\textKValue{automedia}}}% + \entry{\PValue{false}, \PValue{no}, \PValue{off}}{% + Does not set any output driver and does not send page size information to + the output driver.\IndexOption{pagesize~=\textKValue{false}}}% + \pventry{dvipdfmx}{\ChangedAt{v3.05a}{\Package{typearea}} Writes the paper + size into DVI files using + \Macro{special}\PParameter{pagesize=\PName{width},\PName{height}}. The + name of the output driver is \PValue{dvipdfmx} because the application + \File{dvipdfmx} handles such specials not just in the preamble but + in the document body too.\IndexOption{pagesize~=\textKValue{dvipdfmx}}}% + \pventry{dvips}{Using this option in the preamble sets the paper size + using + \Macro{special}\PParameter{pagesize=\PName{width},\PName{height}}. Since + the \File{dvips} driver cannot handle changes of paper size in the + inner document pages, a hack is required to achieve such changes. Use + changes of paper size after \Macro{begin}\PParameter{document} at your + own risk, if you are using + \PValue{dvips}!\IndexOption{pagesize~=\textKValue{dvips}}}% + \entry{\PValue{pdftex}, \PValue{luatex}}{% + \ChangedAt{v3.20}{\Package{typearea}}Sets paper size using the + pdf\TeX-specific lengths + \Macro{pdfpagewidth}\IndexLength{pdfpagewidth} and + \Macro{pdfpageheight}\IndexLength{pdfpageheight} or the + lua\TeX-specific lengths \Macro{pagewidth}\IndexLength{pagewidth} + and \Macro{pageheight}\IndexLength{pageheight}. You can do this at any + time in your document.% + \IndexOption{pagesize~=\textKValue{pdftex}}% + \IndexOption{pagesize~=\textKValue{luatex}}}% + \end{desctabular} + \label{tab:typearea.outputdriver} +\end{table} + +\begin{Example} + Suppose a document should be available both as a DVI data file + and in PDF format for on-line viewing. The preamble might begin + as follows: +\begin{lstcode}[% + aboveskip=.5\baselineskip plus .1\baselineskip minus .1\baselineskip,% + belowskip=.4\baselineskip plus .1\baselineskip minus .1\baselineskip] + \documentclass{article} + \usepackage[paper=A4,pagesize]{typearea} +\end{lstcode} + If the {pdf\TeX} engine is used \emph{and} PDF output is enabled, the + lengths \Macro{pdfpagewidth} and \Macro{pdfpageheight} are set + appropriately. If, however, a DVI data file is created\,---\, whether by + {\LaTeX} or by {pdf\LaTeX}\,---\,then a \Macro{special} is written at the + start of this data file. +\end{Example}% +\iffree{% The recommendation is actually outdated. Those who use such old + % versions of typearea are the ones at fault. + If you use an older version of \Package{typearea}, you + should\textnote{Attention!} always specify the \Option{pagesize} option, + because older versions of \Package{typearea} did not set them by default. As + a rule, the method without an \PName{output driver} or with \PValue{auto} or + \PValue{automedia} is convenient.% +}{% + \vskip-1\ht\strutbox plus + .75\ht\strutbox% Wegen Beispiel am Ende der Erklaerung +}% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Tips} +\seclabel{tips} + +For theses and dissertations, many rules exist that violate even the most +elementary rules of typography.\textnote{formatting rules vs. good typography} +The reasons for such rules include the typographical incompetence of those who +issue them, but also the fact that they were originally meant for mechanical +typewriters. With a typewriter or a primitive text processor from the early +1980s, it was not possible to produce typographically correct output without +extreme effort. So rules were created that appeared to be easy to follow and +were still accommodating to a proofreader. These include margins that lead to +usable line lengths for one-sided printing with a typewriter. To avoid +extremely short lines, which are made worse by unjustified text, the margins +were kept narrow and the leading was increased to 1.5 lines to allow space for +corrections. Before the advent of modern text processing systems, single +spacing would have been the only alternative\,---\,except with \TeX. In such a +single-spaced document, even correction signs would have been difficult to +add. When computers became more widely available for text processing, some +students showed their playful side and tried to spice up their work by using +an ornamental font to make their work look better than it really was. They did +not consider that such fonts are often more difficult to read and therefore +unsuitable for this purpose. Thus, two font families found their way +into the regulations which are neither compatible nor particularly suitable +for the job in the case of Times. Times is a relatively narrow typeface +designed at the beginning of the 20th century for the narrow columns of +British newspapers. Modern versions usually are somewhat improved. But still +the Times font, which is often required, does not really fit the prescribed +margins. + +{\LaTeX} already uses adequate line spacing, and the margins are wide enough +for corrections. Thus a page will look spacious, even when quite full of text. + +Often these typographically questionable rules are difficult to implement in +{\LaTeX}. A fixed number of characters per line can be achieved only when a +non-proportional font is used. There are very few good non-proportional fonts +available. Hardly any text typeset in this way looks really good. In many +cases font designers try to increase the serifs on the `i' or `l' to +compensate for the different character widths. This does not work and results +in a fragmented and agitated-looking text. If you use {\LaTeX} for your +thesis, some of these rules have to be either ignored or at least interpreted +generously. For example, ``60 characters per line'' can be interpreted not as +a fixed but as an average or maximum value.% + +As implemented, typesetting rules are usually intended to obtain a useful +result even if the author does not know what needs to be considered. +\emph{Useful} frequently means readable and correctable. In my opinion the +type area of a text set with {\LaTeX} and the \Package{typearea} package meets +these criteria well from the outset. So if you are confronted with regulations +which deviate substantially from it, I recommend that you present a sample of +the text to your advisor and ask whether you can submit the work despite +deviations in the format. If necessary the type area can be adapted somewhat +by changing the \DescRef{\LabelBase.option.DIV}% +\important{\DescRef{\LabelBase.option.DIV}} option. I advise against +using \DescRef{\LabelBase.cmd.areaset} for this purpose, however. In the +worst case, use the \Package{geometry} package% +\important{\Package{geometry}}\IndexPackage{geometry} (see +\cite{package:geometry}), which is not part of \KOMAScript, or change the page +layout parameters of \LaTeX{} yourself. You can find the values as determined +by \Package{typearea} in the \File{log} file of your document. The +\DescRef{typearea-experts.option.usegeometry}% +\important{\DescRef{typearea-experts.option.usegeometry}} option, which you +can find in \autoref{part:forExperts}, can also improve the interactions +between \Package{typearea} and \Package{geometry}. This should allow modest +adjustments. However, make sure that the proportions of the text area match +those of the page, taking the binding correction into account. + +If it is absolutely necessary to set the text with a line spacing of 1.5, do +not under any circumstances redefine \Macro{baselinestretch}. Although this +procedure is recommended all too frequently, it has been obsolete since the +introduction of {\LaTeXe} in 1994. In the worst case, use the +\Macro{linespread} command. I recommend the package +\Package{setspace}\important{\Package{setspace}}\IndexPackage{setspace} (see +\cite{package:setspace}), which is not part of \KOMAScript. You should also +let \Package{typearea} recalculate a new type area after changing the line +spacing. However, you should switch back to the normal line spacing for the +title, and preferably for the table of contents and various lists\,---\,as +well as the bibliography and the index. For details, see the explanation of +\OptionValueRef{\LabelBase}{DIV}{current}% +\important{\OptionValueRef{\LabelBase}{DIV}{current}}. + +The \Package{typearea} package, even with option +\OptionValueRef{\LabelBase}{DIV}{calc}% +\important{\OptionValueRef{\LabelBase}{DIV}{calc}}, calculates a very generous +text area. Many conservative typographers will find that the resulting line +length is still excessive. The calculated \Var{DIV} value may be found in the +\File{log} file for each document. So you can easily choose a smaller value +after the first {\LaTeX} run. + +Not\textnote{What is better?} infrequently I am asked why I dwell on type area +calculations for an entire chapter, when it would be much easier just to +provide a package with which you can adjust the margins as in a word +processor. Often it is said that such a package would be a better solution in +any case, since everyone knows how to choose appropriate margins, and that the +margins calculated by {\KOMAScript} are not that good anyway. I would like to +quote Hans Peter Willberg and Friedrich Forssmann, two of the most respected +contemporary typographers \cite{TYPO:ErsteHilfe}. (You can find the original +German in the German guide.) +\begin{quote} + \phantomsection\seclabel{tips.cite}% + \textit{The\textnote{Quote!} practice of doing things oneself has long been + widespread, but the results are often dubious because amateur typographers + do not see what is wrong and cannot know what is important. This is how + you get used to to incorrect and poor typography.} [\dots] \textit{Now the + objection could be made that typography is a matter of taste. When it + comes to decoration, one could perhaps accept that argument, but since + typography is primarily about information, not only can mistakes irritate, + but they may even cause damage.} +\end{quote} +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: us-ascii +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/guide.bib b/macros/latex/contrib/koma-script/source-doc/guide.bib new file mode 100644 index 0000000000..03e8e4eec4 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/guide.bib @@ -0,0 +1,861 @@ +% ====================================================================== +% guide.bib +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% guide.bib +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Bibliography of scrguien +% ---------------------------------------------------------------------- +% Bibliographie fuer den scrguide +% +% ====================================================================== + +@Article{ DANTE:TK0203:MJK, + language= {ngerman}, + author = {Markus Kohm}, + title = {Moderne Briefe mit {\KOMAScript}}, + journal = {Die {\TeX}nische Komödie}, + volume = {2}, + year = 2003, + pages = {32--51}, + note = {{DANTE} e.\,V.} +} + +@Article{ DANTE:TK0297:MJK1, + language= {ngerman}, + author = {Markus Kohm}, + title = {{\KOMAScript} -- Eine Alternative zu den + Standardklassen?}, + journal = {Die {\TeX}nische Komödie}, + year = 1996, + volume = {2}, + pages = {14--33}, + note = {{DANTE} e.\,V.} +} + +@Article{ DANTE:TK0402:MJK, + language= {ngerman}, + author = {Markus Kohm}, + title = {Satzspiegelkonstruktionen im Vergleich}, + journal = {Die {\TeX}nische Komödie}, + volume = {4}, + year = 2002, + pages = {28--48}, + note = {{DANTE} e.\,V.} +} + +@Book{ DUDEN, + language= {ngerman}, + author = {DUDEN}, + title = {Die deutsche Rechtschreibung}, + publisher = {DUDENVERLAG}, + year = 1996, + address = {Mannheim}, + edition = 21 +} + +@Book{ TYPO:ErsteHilfe, + language= {ngerman}, + author = {Hans Peter Willberg and Friedrich Forssman}, + title = {Erste Hilfe in Typografie}, + subtitle = {Ratgeber für Gestaltung mit Schrift}, + publisher = {Verlag Hermann Schmidt}, + year = 2000, + address = {Mainz} +} + +@Book{ JTsch87, + language= {ngerman}, + author = {Jan Tschichold}, + title = {Ausgewählte Aufsätze über Fragen der Gestalt des Buches und der Typographie}, + publisher = {Birkhäuser Verlag}, + year = 1987, + address = {Basel}, + edition = 2 +} + +@Book{ JTschErfreulich, + language = {ngerman}, + author = {Jan Tschichold}, + title = {Erfreuliche Drucksachen durch gute Typographie}, + publisher = {Ravensburger Buchverlag Otto Maier GmbH}, + year = 1960, + note = {Nachdruck bei: MaroVerlag, Augsburg, 2001}, + isbn = {3-87512-413-8} +} + +@Book{ book:komascript, + language= {ngerman}, + author = {Kohm, Markus}, + title = {{\KOMAScript}}, + subtitle= {Eine Sammlung von Klassen und Paketen für {\LaTeXe}}, + year = 2018, + edition = 6, + publisher={Lehmanns Media}, + address = {Berlin}, + series = {Edition DANTE}, + isbn = {978-3-86541-951-4}, + note = {Print-Ausgabe} +} + +@Book{ ebook:komascript, + language= {ngerman}, + author = {Kohm, Markus}, + title = {{\KOMAScript}}, + subtitle= {Eine Sammlung von Klassen und Paketen für {\LaTeXe}}, + year = 2018, + edition = 6, + publisher={Lehmanns Media}, + address = {Berlin}, + series = {Edition DANTE}, + isbn = {978-3-86541-952-1}, + note = {eBook-Ausgabe} +} + +@Book{ latexbook, + language = {ngerman}, + author = {Leslie Lamport}, + title = {Das {\LaTeX}-Handbuch}, + publisher = {Addison-Wesley Publishing Company}, + address = {Bonn, Paris {u.\,a.}}, + year = 1995 +} + +@Book{ knuth:mfbook, + language= {english}, + author = {Donald E. Knuth}, + title = {The {\MF book}}, + publisher = {Addison-Wesley Publishing Company}, + year = 1991, + address = {Reading, Mass.}, + edition = 6, + volume = {C}, + series = {Computers and Typesetting} +} + +@Book{ knuth:texbook, + language= {english}, + author = {Donald E. Knuth}, + title = {The {\TeX book}}, + publisher = {Addison-Wesley Publishing Company}, + address = {Reading, Mass.}, + year = 1990, + edition = {19}, + volume = {A}, + series = {Computers and Typesetting} +} + +@Book{ TYPO:Werkstattbuch, + language = {ngerman}, + author = {Indra Kupferschmid}, + editor = {}, + title = {Buchstaben kommen selten allein: Ein typografisches Werkstattbuch}, + publisher = {Universitätsverlag Weimar}, + year = {2000}, + note = {{ISBN} 3-86068-140-0} +} + +@InCollection{ JTschMass, + language= {ngerman}, + author = {Jan Tschichold}, + title = {Willkürfreie Maßverhältnisse der Buchseite und des Satzspiegels}, + booktitle = {Schriften 1925-1974}, + year = 1992, + publisher = {Brinkmann \& Bose}, + address = {Berlin} +} + +@InCollection{ zeitung, + language = {ngerman}, + author = {Martin Z. Schröder}, + title = {Die Anmut des Unscheinbaren}, + booktitle = {Berliner Zeitung}, + year = 1998, + month = {10. Oktober}, + url = {http://www.berliner-zeitung.de/archiv} +} + +@Manual{ btxdoc, + language= {english}, + author = {Oren Patashnik}, + title = {{Bib\TeX ing}}, + year = 1988, + month = feb, + url = {CTAN://biblio/bibtex/distribs/doc/btxdoc.tex} +} + +@Manual{ btxhak, + language= {english}, + author = {Oren Patashnik}, + title = {Designing {Bib\TeX} Styles}, + year = 1988, + month = feb, + url = {CTAN://biblio/bibtex/base/btxhak.pdf} +} + +@Manual{ latex:cfgguide, + language= {english}, + author = {{\LaTeX3} Project Team}, + title = {Configuration options for {\LaTeXe}}, + year = 2004, + month = feb, + url = {CTAN://macros/latex/doc/cfgguide.pdf} +} + +@Manual{ latex:clsguide, + language= {english}, + author = {{\LaTeX3} Project Team}, + title = {{\LaTeXe} for class and package writers}, + year = 2006, + month = feb, + url = {CTAN://macros/latex/doc/clsguide.pdf} +} + +@Manual{ latex:fntguide, + language= {english}, + author = {{\LaTeX3} Project Team}, + title = {{\LaTeXe} font selection}, + year = 2005, + month = nov, + url = {CTAN://macros/latex/doc/fntguide.pdf} +} + +@Manual{ manual:eTeX, + language = {english}, + author = {The {\NTS} Team}, + title = {The {\eTeX} manual}, + year = {1998}, + month = feb, + url = {CTAN://systems/e-tex/v2/doc/etex_man.pdf} +} + +@Manual{ l2kurz, + language = {ngerman}, + author = {Marco Daniel and Patrick Gundlach and Walter Schmidt and Jörg Knappen and Hubert Partl and Irene Hyna}, + title = {{\LaTeXe}-Kurzbeschreibung}, + year = 2012, + month = jul, + version = {3.0}, + url = {CTAN://info/lshort/german/} +} + +@Manual{ lshort, + language= {english}, + author = {Tobias Oetker and Hubert Partl and Irene Hyna and Elisabeth +Schlegl}, + title = {The Not So Short Introduction to {\LaTeXe}}, + year = 2011, + month = apr, + version = {5.01}, + url = {CTAN://info/lshort/english/} +} + +@Manual{ latex:source2e, + language = {english}, + author = {Johannes Braams and David Carlisle and Alan Jeffrey and Leslie Lamport and Frank Mittelbach and Chris Rowley and Rainer Schöpf}, + title = {The {\LaTeX2e} Source}, + year = 2005, + month = 12 +} + +@Manual{ latex:usrguide, + language= {english}, + author = {{\LaTeX3} Project Team}, + title = {{\LaTeXe} for authors}, + year = 2005, + month = nov, + url = {CTAN://macros/latex/doc/usrguide.pdf} +} + +@Manual{ xindy, + language= {english}, + author = {Roger Kehr}, + title = {XINDY, A Flexible Indexing System}, + year = 1997}, + month = mar, + edition = {1.1}, + url = {http://www.xindy.org/doc/tutorial.html} +} + +@Misc{ package:adrconv, + language= {ngerman}, + author = {Axel Kielhorn}, + title = {adrconv}, + year = 2010, + month = apr, + edition = {1.3}, + url = {CTAN://macros/latex/contrib/adrconv/} +} + +@Misc{ package:amsmath, + language = {english}, + author = {{American Mathematical Society}}, + title = {User's Guide for the {\Package{amsmath}} Package}, + year = 2002, + month = feb, + edition = {2.0}, + url = {CTAN://macros/latex/required/amslatex/math/} +} + +@Misc{ package:babel, + language= {english}, + author = {Johannes Braams and Javier Bezos}, + title = {Babel}, + year = 2013, + month = dec, + edition = {3.9h}, + url = {CTAN://macros/latex/required/babel/} +} + +@Misc{ package:caption, + language = {ngerman}, + author = {Axel Sommerfeldt}, + title = {Anpassen der Abbildungs- und Tabellenbeschriftungen mit Hilfe des {\Package{caption}}-Paketes}, + year = 2013, + month = may, + edition = {3.3}, + url = {CTAN://macros/latex/contrib/caption/} +} + +@Misc{ package:caption.engl, + language = {english}, + author = {Axel Sommerfeldt}, + title = {Customizing captions of floating environments using the {\Package{caption}} package}, + year = 2013, + month = may, + edition = {3.3}, + url = {CTAN://macros/latex/contrib/caption/} +} + +@Misc{ package:CJK, + language= {english}, + author = {Werner Lemberg}, + title = {{\Package{CJK}}}, + year = 2012, + month = may, + edition = {4.8.3}, + url = {CTAN://languages/chinese/CJK/} +} + +@Misc{ latex:classes, + language= {english}, + author = {Leslie Lamport and Frank Mittelbach and Johannes Braams}, + title = {Standard Document Classes for {\LaTeX} version 2e}, + year = 2007, + month = oct, + edition = {1.4h}, + url = {CTAN://macros/latex/base/classes.dtx} +} + +@Misc{ package:engord, + language= {english}, + author = {Heiko Oberdiek}, + title = {The {\Package{engord}} package}, + year = 2010, + month = mar, + edition = {1.8}, + url = {CTAN://macros/latex/contrib/oberdiek/} +} + +@Misc{ package:envlab, + language= {english}, + author = {Boris Veytsman}, + title = {Printing Envelopes and Labels in {\LaTeXe}: {\Package{EnvLab}} Package}, + year = 1997, + month = jul, + edition = {1.2}, + url = {CTAN://macros/latex/contrib/envlab/} +} + +@Misc{ package:eso-pic, + language = {english}, + author = {Rolf Niepraschk}, + title = {The {\Package{eso-pic}} package}, + month = jul, + year = 2015, + edition = {2.0g}, + url = {CTAN://macros/latex/contrib/eso-pic/} +} + +@Misc{ package:etoolbox, + language= {english}, + author = {Philipp Lehman}, + title = {The {\Package{etoolbox}} Package}, + year = 2011, + month = jan, + edition = {2.1}, + url = {CTAN://macros/latex/contrib/etoolbox/} +} + +@Misc{ package:etoolbox-de, + language= {ngerman}, + author = {Philipp Lehman\and Tim Enderling}, + title = {Das Paket {\Package{etoolbox}}}, + year = 2011, + month = jan, + edition = {2.1}, + url = {CTAN://macros/latex/contrib/etoolbox/} +} + +@Misc{ package:extsizes, + language= {english}, + author = {James Kilfiger}, + title = {{\Package{extsizes}}, a non standard {\LaTeX}-package}, + year = 1999, + month = nov, + edition = {1.4a}, + url = {CTAN://macros/latex/contrib/extsizes/} +} + +@Misc{ package:fancyhdr, + language= {english}, + author = {Piet van Oostrum}, + title = {Page layout in {\LaTeX}}, + year = 2004, + month = mar, + edition = {3.1}, + url = {CTAN://macros/latex/contrib/fancyhdr/} +} + +@Misc{ package:float, + language= {english}, + author = {Anselm Lingnau}, + title = {An Improved Environment for Floats}, + year = 2001, + month = nov, + edition = {1.3d}, + url = {CTAN://macros/latex/contrib/float/} +} + +@Misc{ package:floatrow, + language = {english}, + author = {Olga Lapko}, + title = {The {\Package{floatrow}} package}, + year = 2008, + month = aug, + edition = {0.3b}, + url = {CTAN://macros/latex/contrib/floatrow/} +} + +@Misc{ package:footmisc, + language= {english}, + author = {Robin Fairbairns}, + title = {{\Package{footmisc}} --- a portmanteau package for customising footnotes in {\LaTeX}}, + year = 2011, + month = jun, + edition = {5.5b}, + url = {CTAN://macros/latex/contrib/footmisc/} +} + +% I don't want the french changes! +@Misc{ package:french, + language= {english}, + author = {Bernard Gaulle}, + title = {Les distributions de fichiers de francisation pour LaTeX}, + year = 2007, + month = may, + edition = {5,9993}, + url = {CTAN://language/french/} +} + +@Misc{ package:geometry, + language= {english}, + author = {Hideo Umeki}, + title = {The {\Package{geometry}} package}, + year = 2010, + month = sep, + edition = {5.6}, + url = {CTAN://macros/latex/contrib/geometry/} +} + +@Misc{ package:german, + language = {english}, + author = {Bernd Raichle}, + title = {{\Package{german}} package}, + year = 1998, + month = jul, + edition = {2.5e}, + url = {CTAN://language/german/} +} + +@Misc{ package:graphics, + language= {english}, + author = {David P. Carlisle}, + title = {Packages in the `graphics' bundle}, + year = 2017, + month = jun, + url = {CTAN://macros/latex/required/graphics/} +} + +@Misc{ package:hyperref, + language= {english}, + author = {Sebastian Rahtz and Heiko Oberdiek}, + title = {Hypertext marks in {\LaTeX}: the {\Package{hyperref}} package}, + year = 2012, + month = nov, + edition = {6.83m}, + url = {CTAN://macros/latex/contrib/hyperref/} +} + +@Misc{ package:ifluatex, + language= {english}, + author = {Heiko Oberdiek}, + title = {The {\Package{ifluatex}} package}, + year = 2016, + month = apr, + edition = {1.4}, + url = {CTAN://macros/latex/contrib/oberdiek/} +} + +@Misc{ package:ifthen, + language= {english}, + author = {David Carlisle}, + title = {The {\Package{ifthen}} package}, + year = 2001, + month = may, + edition = {1.1c}, + url = {CTAN://macros/latex/base/} +} + +@Misc{ package:imakeidx, + language= {english}, + author = {Enrico Gregorio}, + title = {The package {\Package{imakeidx}}}, + year = 2016, + month = oct, + edition = {1.3e}, + url = {CTAN://macros/latex/contrib/imakeidx} +} + +@Misc{ package:keyval, + language = {english}, + author = {David Carlisle}, + title = {The {\Package{keyval}} package}, + year = 1999, + month = mar, + edition = {1.13}, + url = {CTAN://macros/latex/required/graphics/} +} + +@Misc{ package:koma-script-obsolete, + language = {english}, + author = {Markus Kohm}, + title = {Deprecated Packages from {\KOMAScript}}, + year = 2013, + month = dec, + url = {CTAN://obsolete/macros/latex/contrib/koma-script-obsolete} +} + +@Misc{ package:longtable, + language = {english}, + author = {David Carlisle}, + title = {The {\Package{longtable}} package}, + year = 2004, + month = feb, + edition = {4.11}, + url = {CTAN://macros/latex/required/tools/} +} + +@Misc{ makeindex, + language= {english}, + author = {Leslie Lamport}, + title = {{\Package{MakeIndex}}: An Index Processor For {\LaTeX}}, + year = 1987, + month = feb, + url = {CTAN://indexing/makeindex/doc/makeindex.pdf} +} + +@Misc{ package:marginnote, + language= {english}, + author = {Markus Kohm}, + title = {Non-Floating Margin Notes with {\Package{marginnote}}}, + year = 2012, + month = mar, + edition = {1.1i}, + url = {CTAN://macros/latex/contrib/marginnote/} +} + +@Misc{ package:microtype, + language= {english}, + author = {R Schlicht}, + title = {The {\Package{microtype}} package: An interface to the micro-typographic extensions of pdf{\TeX}}, + year = 2013, + month = may, + edition = {2.5a}, + url = {CTAN://macros/latex/contrib/microtype/} +} + +@Misc{ package:mparhack, + language= {english}, + author = {Tom Sgouros and Stefan Ulrich}, + title = {The {\Package{mparhack}} package}, + year = 2005, + month = apr, + edition = {1.4}, + url = {CTAN://macros/latex/contrib/mparhack/} +} + +@Misc{ package:multicol, + language= {english}, + author = {Frank Mittelbach}, + title = {An environment for multicolumn output}, + year = 2011, + month = jun, + edition = {1.7a}, + url = {CTAN://macros/latex/required/tools/} +} + +@Misc{ package:natbib, + language= {english}, + author = {Patrick W. Daly}, + title = {Natural Sciences Citations and References}, + year = 2010, + month = sep, + edition = {8.31b}, + url = {CTAN://macros/latex/contrib/natbib/} +} + +@Misc{ package:ngerman, + language = {english}, + author = {Bernd Raichle}, + title = {{\Package{ngerman}} package}, + year = 1998, + month = jul, + edition = {2.5e}, + url = {CTAN://language/german/} +} + +@Misc{ package:picture, + language = {english}, + author = {Heiko Oberdiek}, + title = {The {\Package{picture}} package}, + year = 2016, + month = may, + edition = {1.4}, + url = {CTAN://macros/latex/contrib/oberdiek/} +} + +@Misc{ package:ragged2e, + language = {english}, + author = {Martin Schröder}, + title = {The {\Package{Ragged2e}} package}, + year = 2009, + month = jun, + edition = {2.1}, + url = {CTAN://macros/latex/contrib/ms/} +} + +@Misc{ package:selinput, + language= {english}, + author = {Heiko Oberdiek}, + title = {The {\Package{selinput}} package}, + year = 2016, + month = may, + edition = {1.4}, + url = {CTAN://macros/latex/contrib/oberdiek/} +} + +@Misc{ package:setspace, + language= {english}, + author = {Geoffrey Tobin and Robin Fairbairns}, + title = {{\Package{setspace}} {\LaTeX} package}, + year = 2011, + month = dec, + edition = {6.7a}, + url = {CTAN://macros/latex/contrib/setspace/} +} + +@Misc{ package:splitindex, + language= {english}, + author = {Markus Kohm}, + title = {Creating More Than One Index Using {\Package{splitidx}} And {\Package{SplitIndex}}}, + year = 2014, + month = apr, + edition = {1.2a}, + url = {CTAN://macros/latex/contrib/splitindex/} +} + +@Misc{ package:supertabular, + language= {english}, + author = {Braams, Johannes L. and Jurriens, Theo}, + title = {The {\Package{supertabular}} environment}, + year = 2004, + month = feb, + edition = {4.1e}, + url = {CTAN://macros/latex/contrib/supertabular} +} + +@Misc{ package:tabu, + language = {english}, + author = {Florent Chervet}, + title = {tabu and longtabu}, + year = 2011, + month = feb, + edition = {2.8}, + url = {CTAN://macros/latex/contrib/tabu/} +} + +@Misc{ package:topcapt, + language= {english}, + author = {Robin Fairbairns}, + title = {topcapt.sty}, + year = 2004, + month = dec, + edition = {1.2}, + url = {CTAN://macros/latex/contrib/misc/topcapt.sty} +} + +@Misc{ package:tabularx, + language= {english}, + author = {David Carlisle}, + title = {The {\Package{tabularx}} package}, + year = 1999, + month = jan, + edition = {2.07}, + url = {CTAN://macros/latex/required/tools/} +} + +@Misc{ package:tocstyle, + language= {english}, + author = {Markus Kohm}, + title = {The {\KOMAScript} package {\Package{tocstyle}}}, + year = 2013, + month = aug, + edition = {0.2e}, + note = {\KOMAScript} +} + +@Misc{ package:xcolor, + language = {english}, + author = {Dr. Uwe Kern}, + title = {Extending {\LaTeX}'s color facilities: the {\Package{xcolor}} package}, + year = 2007, + month = jan, + edition = {2.11}, + url = {CTAN://macros/latex/contrib/xcolor/} +} + +@Misc{ package:xpatch, + language= {english}, + author = {Enrico Gregorio}, + title = {The {\Package{xpatch}} package, Extending {\Package{etoolbox}} patching commands}, + year = 2012, + month = oct, + edition = {0.3}, + url = {CTAN://macros/latex/contrib/xpatch/} +} + +@Misc{ homepage, + language = {ngerman}, + key = {KDP}, + title = {{\KOMAScript{}} Homepage}, + url = {http://www.komascript.de} +} + +@Misc{ https://komascript.de/comment/5070, + language= {ngerman}, + author= {Markus Kohm}, + title= {{\OptionValue{chapteratlists}{entry}} automatisch nur für Kapitel mit Einträgen}, + year= 2015, + month= jul, + url= {https://komascript.de/comment/5070#comment-5070}, +} + +@Misc{ https://komascript.de/node/2154, + language= {ngerman}, + author = {Felix999}, + title = {Paket {\Package{adrconf}} verlangt nicht vorhandene Datei {\File{scrpage.sty}}}, + year = 2017, + month = dec, + url = {https://komascript.de/node/2154}, +} + +@Misc{ www:NF.lco, + language = {english}, + author = {Jean-Marie Pacquet}, + title = {{KomaLetter2}; {E}xample by {J}ean-{M}arie {P}acquet ({F}rench style)}, + institution = {wiki.lyx.org}, + howpublished = {Wiki}, + url = {http://wiki.lyx.org/Examples/KomaLetter2#toc6} +} + +@Misc{ www:blaettery, + language = {ngerman}, + author = {Jürgen F. Schopp}, + address = {mailto: \url{jurgen.schapp@uta.fi}}, + title = {Blätter (und Tipps) zur Typografie}, + institution = {Institut für Sprach- und Translationswissenschaften}, + organization = {Universität Tampere, Finnland}, + year = 2002, + month = sep, + edition = {2}, + url = {http://www.uta.fi/~trjusc/typoblatt.htm} +} + +@Misc{ www:gutetypo, + language = {ngerman}, + author = {Hermann Rotermund}, + title = {Gute Typographie auf Papier und im Web}, + url = {http://www.weisses-rauschen.de/hero/Typographie.htm} +} + +@Misc{ www:typoclass, + language = {ngerman}, + author = {Axel Reichert}, + title = {Typografie -- Gestaltung einer Beispielklasse}, + howpublished = {Tutorium auf der Tagung DANTE'99}, + year = 1999, + month = feb, + url = {CTAN://info/german/typografie/} +} + +@Misc{ DANTE:FAQ, + language = {ngerman}, + author = {Wiki}, + title = {Deutsche {\TeX}-FAQ}, + url = {http://projekte.dante.de/DanteFAQ/WebHome} +} + +@Misc{ UK:FAQ, + language= {english}, + key = {FAQ}, + editor = {Robin Fairbairns}, + title = {TeX Frequently Asked Questions on the Web}, + year = 2013, + month = jun, + edition = {3.27}, + url = {http://www.tex.ac.uk/faq} +} + +% end of file `scrguide.bib' diff --git a/macros/latex/contrib/koma-script/source-doc/guide.tex b/macros/latex/contrib/koma-script/source-doc/guide.tex new file mode 100644 index 0000000000..1699a73c40 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/guide.tex @@ -0,0 +1,137 @@ +% ====================================================================== +% guide.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% guide.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Main TeX file of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Hauptdatei der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\documentclass{scrguide} + +\KOMAProvidesFile{guide.tex} + [$Date: 2018-12-22 17:30:41 +0100 (Sat, 22 Dec 2018) $ + KOMA-Script (guide main file)] + +\begin{document} + +\csname ListTypeArea\endcsname + +\extratitle{\sffamily{\bfseries\Huge\GuideTitle\strut\\} + \large\GuideSubTitle\strut\\} +\title{\GuideTitle} +\subject{\GuideSubject} +\author{Markus Kohm} +\publishers{\small\GuideAuthorHeadline: + Frank Neukam, Markus Kohm, Axel Kielhorn} +\uppertitleback{% + \GuideWarrantyHeadline\\[.5\baselineskip] + \GuideWarranty} +\lowertitleback{% + \settranslator{\GuideTranslatorHeadline}{.\par\bigskip}% + \GuideCopyright} +\dedication{\GuideDedication} + +\pdfbookmark[-1]{\KOMAScript}{title} +\iffree{\bookmark[level=0,gotor=scrguide.pdf]{Deutsch} +\bookmark[level=0,gotor=scrguien.pdf]{English}}{} +\bookmarksetup{startatroot} + +\maketitle + +\cleardoublepage\csname GeneralTypeArea\endcsname +\include{preface} + +\cleardoublepage\csname ListTypeArea\endcsname +\cleardoublepage\pdfbookmark{\contentsname}{toc}\tableofcontents + +\cleardoublepage\pdfbookmark{\listfigurename}{lof}\listoffigures + +\cleardoublepage\pdfbookmark{\listtablename}{lot}\listoftables + +\cleardoublepage\csname GeneralTypeArea\endcsname + +\include{introduction} + +\include{authorpart} +\include{typearea} +\include{scrbookreportarticle} +\include{scrlttr2} +\include{scrlayer-scrpage} +\include{scrdatetime} +\include{scraddr} +\include{adrconvnote} +\include{scrextend} +\include{scrjura} + +\include{expertpart} +\include{scrbase} +\include{scrlfile} +\include{scrwfile} +\include{tocbasic} +\include{scrhack} +\include{scrlayer} +\include{scrlayer-scrpage-experts} +\include{scrlayer-notecolumn} +\include{typearea-experts} +\include{scrbookreportarticle-experts} +\include{scrlttr2-experts} + +\include{japanlco}% appendix at the english manual only + +\makeatletter +\let\toclevel@section\toclevel@chapter +\let\toclevel@chapter\toclevel@part +\makeatother +\printchangelog +\bibliography{\jobname} + +\GuideIndexSeeAlsos + +\printindex + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% coding: us-ascii +%%% TeX-master: t +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/linkalias.tex b/macros/latex/contrib/koma-script/source-doc/linkalias.tex new file mode 100644 index 0000000000..0f1720cfab --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/linkalias.tex @@ -0,0 +1,121 @@ +% ====================================================================== +% linkalias.tex +% Copyright (c) Markus Kohm, 2008-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% linkalias.tex +% Copyright (c) Markus Kohm, 2008-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Link Aliase, die für die freie Version der Anleitung benötigt werden. +% + +\KOMAProvidesFile{linkalias.tex} + [$Date: 2018-07-18 13:58:44 +0200 (Wed, 18 Jul 2018) $ + link aliases for the free version] + +\makeatletter +\newcommand*{\lalias}[3][]{% + \scr@ifundefinedorrelax{r@#3}{% + \ClassWarning{scrguide}{% + Label alias `#2'\MessageBreak + to `#3' ignored,\MessageBreak + because `#3' undefined% + }% + }{% + \scr@ifundefinedorrelax{r@#2}{% + \IfArgIsEmpty{#1}{% + \expandafter\let\csname r@#2\expandafter\endcsname + \csname r@#3\endcsname + }{% + \expandafter\let\expandafter\reserved@a\csname r@#3\endcsname + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\reserved@a + \expandafter\expandafter\expandafter{\expandafter\@gobble\reserved@a}% + \expandafter\edef\csname r@#2\endcsname{% + {\unexpanded{#1}}\unexpanded\expandafter{\reserved@a}% + }% + }% + }{% + \ClassWarning{scrguide}{% + Label alias `#2'\MessageBreak + to `#3' ignored,\MessageBreak + because of multiply definition% + }% + \gdef \@multiplelabels {% + \@latex@warning@no@line{There were multiply-defined labels}}% + }% + }% +} +\makeatother + +\lalias[\Macro{ifthispageodd}] + {desc:maincls-experts.cmd.ifthispageodd} + {sec:maincls-experts.addInfos} +\lalias[\Macro{rightmark}] + {desc:maincls-experts.cmd.rightmark} + {sec:maincls-experts.addInfos} +\lalias[\Macro{the}] + {desc:maincls-experts.cmd.the} + {sec:maincls-experts.experts} +\lalias[\Option{parskip}] + {desc:maincls-experts.option.parskip} + {sec:maincls-experts.addInfos} +\lalias[\Environment{addmargin*}] + {desc:maincls-experts.env.addmargin*} + {sec:maincls-experts.addInfos} +\lalias[\Macro{marginpar}] + {desc:maincls-experts.cmd.marginpar} + {sec:maincls-experts.addInfos} +\lalias[\Macro{AfterBibliographyPreamble}] + {desc:maincls-experts.cmd.AfterBibliographyPreamble} + {sec:maincls-experts.addInfos} +\lalias[\Option{fontsize}] + {desc:maincls-experts.option.fontsize} + {sec:maincls-experts.addInfos} +\lalias[\Macro{raggedsection}] + {desc:maincls-experts.cmd.raggedsection} + {sec:maincls-experts.coexistence} +\lalias[\Macro{thepage}] + {desc:maincls-experts.cmd.thepage} + {sec:maincls-experts.addInfos} +\lalias[\Macro{pagemark}] + {desc:maincls-experts.cmd.pagemark} + {sec:maincls-experts.addInfos} +\lalias[\Macro{the\PName{Zähler}}] + {desc:maincls-experts.cmd.the/Zaehler/} + {sec:maincls-experts.addInfos} +\lalias[\Macro{the\PName{Counter}}] + {desc:maincls-experts.cmd.the/Counter/} + {sec:maincls-experts.addInfos} +\lalias[\OptionValue{parskip}{relative}] + {desc:maincls-experts.option.parskip.relative} + {sec:maincls-experts.addInfos} diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/Makefile b/macros/latex/contrib/koma-script/source-doc/ngerman/Makefile new file mode 100644 index 0000000000..cef604fbc6 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/Makefile @@ -0,0 +1,50 @@ +# ====================================================================== +# Makefile +# Copyright (c) Markus Kohm, 2002-2012 +# +# This file is part of the LaTeX2e KOMA-Script bundle. +# +# This work may be distributed and/or modified under the conditions of +# the LaTeX Project Public License, version 1.3c of the license. +# The latest version of this license is in +# http://www.latex-project.org/lppl.txt +# and version 1.3c or later is part of all distributions of LaTeX +# version 2005/12/01 or later and of this work. +# +# This work has the LPPL maintenance status "author-maintained". +# +# The Current Maintainer and author of this work is Markus Kohm. +# +# This work consists of all files listed in manifest.txt. +# ---------------------------------------------------------------------- +# Makefile +# Copyright (c) Markus Kohm, 2002-2012 +# +# Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +# Version 1.3c, verteilt und/oder veraendert werden. +# Die neuste Version dieser Lizenz ist +# http://www.latex-project.org/lppl.txt +# und Version 1.3c ist Teil aller Verteilungen von LaTeX +# Version 2005/12/01 oder spaeter und dieses Werks. +# +# Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +# (allein durch den Autor verwaltet). +# +# Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +# +# Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +# ====================================================================== + +# ---------------------------------------------------------------------- +# Directory with basics +BASEDIR ?= $(PWD)/../../ +DOCDIR = $(BASEDIR)doc/ +# language +LANGUAGE = ngerman +LANGUAGESHORTCUT = de +LANGUAGELONG = ngerman + +include $(DOCDIR)/Makefile.guide + +# +# end of file `Makefile' diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/adrconvnote.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/adrconvnote.tex new file mode 100644 index 0000000000..ddec394b53 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/adrconvnote.tex @@ -0,0 +1,100 @@ +% ====================================================================== +% adrconvnote.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% adrconvnote.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about adrconv of the KOMA-Script guide +% Maintained by Jens-Uwe Morawski (with help from Markus Kohm) +% +% ---------------------------------------------------------------------- +% +% Kapitel über adrconv in der KOMA-Script-Anleitung +% Verwaltet von Jens-Uwe Morawski (mit Unterstützung von Markus Kohm) +% +% ====================================================================== + +\KOMAProvidesFile{adrconvnote.tex} + [$Date: 2018-01-29 14:12:59 +0100 (Mon, 29 Jan 2018) $ + KOMA-Script guide (chapter: adrconv)] + +\chapter{Adressdateien aus Adressdatenbanken}% +\labelbase{addrconv}% +\index{Adressdatei}% +\index{Adressdatenbank}% +\IndexPackage{addrconv} + +In früheren Versionen von \KOMAScript{} war das Paket +\Package{addrconv} ein fester Bestandteil des +\KOMAScript{}-Systems. +Die hauptsächliche Verflechtung mit \KOMAScript{} +bestand darin, dass mit Hilfe dieses Pakets aus +Adressdatenbanken im \BibTeX-Format Adressdateien +für die \KOMAScript-Briefklasse oder für das +\Package{scraddr}-Paket erstellt werden konnten. + +\begin{lstlisting}[morekeywords={@address}] + @address{HMUS, + name = {Hans Mustermann}, + title = {Mag. art.}, + city = {Heimstatt}, + zip = 01234, + country = {Germany}, + street = {Mauerstra{\ss}e 1}, + phone = {01234 / 5 67 89}, + note = {Alles nur Erfindung}, + key = {HMUS}, + } +\end{lstlisting} + +Aus Einträgen wie dem oben stehenden können mit Hilfe +von \BibTeX{} und verschiedenen \BibTeX-Stilen die +Adressdateien erstellt werden. +Weiterhin gibt es spezielle \LaTeX-Dateien, die es ermöglichen, +aus den Adressdateien Telefon- und Adressverzeichnisse +zu erstellen. + +Das Paket \Package{addrconv} war aber eigentlich ein eigenständiger Teil, der +auch noch über die Belange von \KOMAScript{} hinaus Möglichkeiten bietet. +Deshalb ist \Package{addrconv} bereits seit einiger Zeit nicht mehr in +\KOMAScript{} enthalten. Das Paket \Package{adrconv}, nur ein »\Package{d}«, +ersetzt \Package{addrconv} vollständig. Es muss, falls nicht bereits in Ihrer +\TeX-Distribution enthalten, von \cite{package:adrconv} separat bezogen und +installiert werden. + +%%% Local Variables: +%%% mode: latex +%%% coding: latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/authorpart.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/authorpart.tex new file mode 100644 index 0000000000..c0207de5f9 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/authorpart.tex @@ -0,0 +1,83 @@ +% ====================================================================== +% authorpart.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% authorpart.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% First part: KOMA-Script for Authors +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Erster Teil: KOMA-Script für Autoren +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\ProvidesFile{authorpart.tex}[2008/05/06 Part KOMA-Script for Authors] + +\setpartpreamble{% + \vspace*{2\baselineskip}% + \setlength{\parindent}{1em}% + + \noindent In diesem Teil sind die Informationen für die Autoren von + Artikeln, Berichten, Büchern und Briefen zu finden. Dabei wird davon + ausgegangen, dass der normale Anwender sich weniger dafür interessiert, wie + in \KOMAScript{} die Dinge implementiert sind und wo die Schwierigkeiten + dabei liegen. Auch ist es für den normalen Anwender wenig interessant, + welche obsoleten Optionen und Anweisungen noch enthalten sind. Er will + wissen, wie er aktuell etwas erreichen kann. Eventuell ist er noch an + typografischen Hintergrundinformationen interessiert. + + Die wenigen Passagen, die weiterführende Informationen und Begründungen + enthalten und deshalb für ungeduldige Leser weniger von Interesse sind, + wurden in diesem Teil in serifenloser Schrift gesetzt und können bei Bedarf + übersprungen werden. Wer hingegen noch mehr Informationen zu Hintergründen + der Implementierung, Nebenwirkungen bei Verwendung anderer Pakete und + zu obsoleten Optionen oder Anweisungen sucht, sei auf + \autoref{part:forExperts} ab \autopageref{part:forExperts} + verwiesen. Darüber hinaus beschäftigt sich jener Teil von \KOMAScript{} auch + mit all den Möglichkeiten, die speziell für Autoren von Paketen und Klassen + geschaffen wurden. +} + +\part{\KOMAScript{} für Autoren\label{part:forAuthors}} + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "guide.tex" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-compatibility.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-compatibility.tex new file mode 100644 index 0000000000..f52b3e00e0 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-compatibility.tex @@ -0,0 +1,201 @@ +% ====================================================================== +% common-compatibility.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-compatibility.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-compatibility.tex} + [$Date: 2018-01-30 09:32:50 +0100 (Tue, 30 Jan 2018) $ + KOMA-Script guide (common paragraphs)] + +\section{Kompatibilität zu früheren Versionen von \KOMAScript} +\seclabel{compatibilityOptions} +\BeginIndexGroup +\BeginIndex{}{Kompatibilität} + +\IfThisCommonFirstRun{}{% + Es gilt sinngemäß, was in + \autoref{sec:\ThisCommonFirstLabelBase.compatibilityOptions} geschrieben + wurde.\IfThisCommonLabelBase{scrlttr2}{ Allerdings existiert diese + Möglichkeit bei \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} bereits seit + Version~2.9t, während \Package{scrletter} sie nicht bietet, sondern + sozusagen immer von \OptionValue{version}{last} ausgeht.}{} Falls Sie also + \autoref{sec:\ThisCommonFirstLabelBase.compatibilityOptions} bereits gelesen + und verstanden haben, können Sie in + \autoref{sec:\ThisCommonLabelBase.compatibilityOptions.next} auf + \autopageref{sec:\ThisCommonLabelBase.compatibilityOptions.next} + fortfahren.% +} + +\IfThisCommonLabelBaseOneOf{typearea,maincls,scrlttr2,scrextend}{% + Wer seine Dokumente im Quellcode archiviert, legt in der Regel allergrößten + Wert darauf, dass bei zukünftigen \LaTeX{}-Läufen immer wieder exakt + dasselbe Ergebnis erzielt wird. In einigen Fällen führen aber Verbesserungen + und Korrekturen \IfThisCommonLabelBaseOneOf{maincls,scrlttr2}{an der + Klasse}{am Paket} zu Änderungen im Verhalten, inbesondere beim + Umbruch. Dies ist jedoch manchmal eher unerwünscht.% +}{% +% \IfThisCommonLabelBase{scrextend}{% +% In einigen Fällen ist es so, dass Verbesserungen und Korrekturen am Paket +% zu Änderungen im Verhalten, inbesondere beim Umbruch, führen. Dies ist +% jedoch nicht immer erwünscht.% +% Wer seine Dokumente im Quellcode archiviert, legt in der Regel +% allergrößten Wert darauf, dass bei zukünftigen \LaTeX{}-Läufen immer +% wieder exakt dasselbe Ergebnis erzielt wird. In einigen Fällen ist es aber +% so, dass Verbesserungen und Korrekturen an der Klasse zu Änderungen im +% Verhalten, inbesondere beim Umbruch, führen.% +% }{% + \ThisCommonLabelBaseFailure +% \IfThisCommonLabelBase{scrlttr2}{% +% In einigen Fällen ist es so, dass Verbesserungen und Korrekturen an der +% Klasse zu Änderungen im Verhalten, inbesondere beim Umbruch, +% führen. Dies ist jedoch nicht immer erwünscht.% +% }{}% +% }% +}% + + +\begin{Declaration} + \OptionVName{version}{Wert} + \OptionValue{version}{first} + \OptionValue{version}{last} +\end{Declaration} +\IfThisCommonLabelBase{scrextend}{Bei }{Seit }% +\ChangedAt{v2.96a}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}% +\ChangedAt{v2.9t}{\Class{scrlttr2}}% +\ChangedAt{v3.01b}{\Package{typearea}}% +\IfThisCommonLabelBase{typearea}{% + Version~3.01b besteht bei \Package{typearea} }{% + \IfThisCommonLabelBase{maincls}{% + Version~2.96a besteht bei \KOMAScript{} }{% + \IfThisCommonLabelBase{scrlttr2}{% + Version~2.9t besteht bei \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} }{% + \IfThisCommonLabelBase{scrextend}{\Package{scrextend} besteht }{% + \InteralCommonFileUsageError }% + }% + }% +}% +die Wahl, ob eine Quelldatei, soweit irgend möglich, auch zukünftig bei einem +\LaTeX{}-Lauf zu exakt demselben Ergebnis führen soll oder ob er jeweils +entsprechend der Anpassungen der neusten +Version\IfThisCommonLabelBaseOneOf{maincls,scrlttr2}{ der Klasse}{} zu setzen +ist. Zu welcher Version Kompatibilität herzustellen ist, wird dabei über die +Option \Option{version} festgelegt. Kompatibilität zur ältesten unterstützten +\KOMAScript-Version kann mit +\OptionValue{version}{first}\important{\OptionValue{version}{first}} oder +\OptionValue{version}{2.9} oder \OptionValue{version}{2.9t} erreicht +werden. Bei Angabe einer unbekannten Version als \PName{Wert} wird eine +Warnung ausgegeben und sicherheitshalber \OptionValue{version}{first} +angenommen. + +Mit \OptionValue{version}{last}\important{\OptionValue{version}{last}}% +\textnote{Voreinstellung} kann die jeweils neuste Version ausgewählt +werden. In diesem Fall wird also auf rückwirkende Kompatibilität +verzichtet. Wird die Option ohne Wertangabe verwendet, so wird ebenfalls +\PValue{last} angenommen. \ChangedAt{v3.01a}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}\and \Class{scrlttr2}\and + \Package{scrextend}}Dies entspricht auch der Voreinstellung, solange keine +obsolete Option verwendet wird. + +\IfThisCommonLabelBase{scrextend}{% scrextend kennt keine obsoleten Optionen +}{% + Bei\textnote{Achtung!} der Verwendung einer obsoleten Option von + \KOMAScript~2 setzt \KOMAScript~3 automatisch + \OptionValue{version}{first}. In der dabei ausgegebenen Warnung wird + erklärt, wie man diese Kompatibilitätsumschaltung verhindern + kann. Alternativ kann man auch nach der obsoleten Option selbst eine + abweichende Einstellung für Option \Option{version} wählen.% +} + +Die Frage der Kompatibilität betrifft in erster Linie Fragen des +Umbruchs. Neue Möglichkeiten, die sich nicht auf den Umbruch auswirken, sind +auch dann verfügbar, wenn man per Option die Kompatibilität zu einer älteren +Version ausgewählt hat. Die Option hat keine Auswirkungen auf +Umbruchänderungen, die bei Verwendung einer neueren Version durch Beseitigung +eindeutiger Fehler entstehen. Wer\textnote{Tipp!} auch im Fehlerfall +unbedingte Umbruchkompatibilität benötigt, sollte stattdessen mit dem Dokument +auch die verwendete \KOMAScript-Version archivieren. + +\IfThisCommonLabelBase{scrlttr2}{\begin{Example} + Die Beispielbriefe dieses Kapitels sollen alle Möglichkeiten nutzen, die in + der neusten Version von \KOMAScript{} zur Verfügung stehen. Dazu muss beim + Laden der Klasse die Kompatibilität entsprechend gesetzt werden:% + \lstinputcode[xleftmargin=1em,lastline=1]{letter-0.tex}% + \iftrue% Umbruchkorrektur + Hier wurde einfach mit dem symbolischen Wert \PValue{last} die neuste + Version gewählt.% + \else% + Um nicht bei jeder neuen Version eine neue Versionsnummer angeben zu + müssen, wurde hier die Möglichkeit des symbolischen Wertes \PValue{last} + gewählt.% + \fi +\end{Example}}{} + +Es\textnote{Achtung!} ist zu beachten, dass die Option \Option{version} nach +dem Laden % +\IfThisCommonLabelBaseOneOf{maincls,scrlttr2}{der Klasse}{% + des Pakets \IfThisCommonLabelBase{typearea}{\Package{typearea}}{% + \IfThisCommonLabelBase{scrextend}{\Package{scrextend}}{% + \InternalCommonFileUsageError }% + }% +} nicht mehr verändert werden kann. Das Setzen mit +\DescRef{\ThisCommonLabelBase.cmd.KOMAoptions} oder +\DescRef{\ThisCommonLabelBase.cmd.KOMAoption} ist +% Umbruchkorrektur!!!! +\IfThisCommonLabelBaseNotOneOf{maincls,scrlttr2,typearea}{für diese Option }{}% +daher nicht vorgesehen.% +% +\EndIndexGroup +% +\EndIndexGroup + +\phantomsection +\label{sec:\ThisCommonLabelBase.compatibilityOptions.end} +\endinput + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-dictum.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-dictum.tex new file mode 100644 index 0000000000..22299b0e5d --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-dictum.tex @@ -0,0 +1,284 @@ +% ====================================================================== +% common-dictum.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-dictum.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-dictum.tex} + [$Date: 2018-01-29 14:12:59 +0100 (Mon, 29 Jan 2018) $ + KOMA-Script guide (common paragraphs)] + + + + +\section{Schlauer Spruch} +\seclabel{dictum}% +\BeginIndexGroup +\BeginIndex{}{Spruch}% +\BeginIndex{}{Zitat}% +\BeginIndex{}{Redewendung}% + +\IfThisCommonFirstRun{}{% + Es gilt sinngemäß, was in \autoref{sec:\ThisCommonFirstLabelBase.dictum} + geschrieben wurde. % + \IfThisCommonLabelBase{scrextend}{% + Allerdings werden von \Package{scrextend} die Anweisungen + \DescRef{maincls.cmd.setchapterpreamble} und + \DescRef{maincls.cmd.setpartpreamble} nicht definiert. % + \iftrue% Umbruchvariante + Ob die verwendete Klasse eine entsprechende Anweisung bietet, ist der + Anleitung zur jeweiligen Klasse zu entnehmen. % + \fi% + }{}% + Falls Sie also \autoref{sec:\ThisCommonFirstLabelBase.dictum} bereits + gelesen und verstanden haben, können Sie nach dem Ende dieses Abschnitts auf + \autopageref{sec:\ThisCommonLabelBase.dictum.next} mit + \autoref{sec:\ThisCommonLabelBase.dictum.next} fortfahren.% +} + +\IfThisCommonLabelBase{scrextend}{% Umbruchkorrekturvarianten + Ein häufiger anzutreffendes Element ist eine Redewendung oder Zitat, das + rechtsbündig unter oder über einer Überschrift gesetzt wird. Dabei werden + der Spruch selbst und der Quellennachweis in der Regel speziell formatiert.% +}{% + Ein häufiger anzutreffendes Element sind Zitate oder eine Redewendungen, die + mit Quellenangabe und eigener Formatierung unter oder über einer Überschrift + gesetzt werden.% +} + +\begin{Declaration} + \Macro{dictum}\OParameter{Urheber}\Parameter{Spruch} + \Macro{dictumwidth} + \Macro{dictumauthorformat}\Parameter{Urheber} + \Macro{dictumrule} + \Macro{raggeddictum} + \Macro{raggeddictumtext} + \Macro{raggeddictumauthor} +\end{Declaration}% +Ein solcher Spruch kann mit Hilfe der Anweisung \Macro{dictum} gesetzt werden. +\IfThisCommonLabelBase{maincls}{% + Bei\textnote{Tipp!} \KOMAScript-Klassen wird für Kapitel oder Teile + empfohlen, \Macro{dictum} als obligatorisches Argument der Anweisung + \DescRef{maincls.cmd.setchapterpreamble} beziehungsweise + \DescRef{maincls.cmd.setpartpreamble} (siehe + \autoref{sec:maincls.structure}, + \DescPageRef{maincls.cmd.setchapterpreamble}) zu verwenden. Dies ist jedoch + nicht zwingend.\par% +}{}% +Der Spruch wird\IfThisCommonLabelBase{scrextend}{ hierzu}{} zusammen mit einem +optional anzugebenden \PName{Urheber} in einer \Macro{parbox}\IndexCmd{parbox} +(siehe \cite{latex:usrguide}) der Breite +\Macro{dictumwidth}\important{\Macro{dictumwidth}} gesetzt. Dabei ist +\Macro{dictumwidth} keine Länge, die mit \Macro{setlength} gesetzt wird. Es +handelt sich um ein Makro, das mit \Macro{renewcommand} umdefiniert werden +kann. Vordefiniert ist \PValue{0.3333\Length{textwidth}}, also ein Drittel der +jeweiligen Textbreite. Die Box selbst wird mit der Anweisung +\Macro{raggeddictum}\important{\Macro{raggeddictum}} +ausgerichtet. Voreingestellt ist dabei +\Macro{raggedleft}\IndexCmd{raggedleft}, also rechtsbündig. +\Macro{raggeddictum} kann mit +\IfThisCommonLabelBase{scrextend}{% Umbruchoptimierung +}{Hilfe von }\Macro{renewcommand} umdefiniert werden. + +Innerhalb der Box wird der \PName{Spruch} mit +\Macro{raggeddictumtext}\important{\Macro{raggeddictumtext}} +angeordnet. Voreingestellt ist hier \Macro{raggedright}\IndexCmd{raggedright}, +also linksbündig. Eine Umdefinierung ist auch hier mit \Macro{renewcommand} +möglich. % +\BeginIndexGroup +\BeginIndex{FontElement}{dictum}\LabelFontElement{dictum}% +\LabelFontElement{dictumtext}% +Die Ausgabe erfolgt in der für Element +\FontElement{dictum}\important{\FontElement{dictum}} eingestellten +Schriftart, die mit den Anweisungen +\DescRef{\ThisCommonLabelBase.cmd.setkomafont} und +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}) geändert werden kann. Die +Voreinstellung entnehmen Sie bitte +\autoref{tab:\ThisCommonFirstLabelBase.dictumfont}% +\IfThisCommonFirstRun{.% + \begin{table} +% \centering% +% \caption + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside} + [{Schriftvoreinstellungen für die Elemente des + Spruchs}] + {\label{tab:\ThisCommonLabelBase.dictumfont}\hspace{0pt plus 1ex}% + Voreinstel\-lungen der Schrift für die Elemente des Spruchs} + [l] + \begin{tabular}[t]{ll} + \toprule + Element & Voreinstellung \\ + \midrule + \DescRef{\ThisCommonLabelBase.fontelement.dictum} & + \Macro{normalfont}\Macro{normalcolor}\Macro{sffamily}\Macro{small}\\ + \DescRef{\ThisCommonLabelBase.fontelement.dictumauthor} & + \Macro{itshape}\\ + \bottomrule + \end{tabular} + \end{captionbeside} + \end{table} +}{% + , \autopageref{tab:\ThisCommonFirstLabelBase.dictumfont}.% +}% +\EndIndexGroup + +Ist ein \PName{Urheber} angegeben, so wird dieser mit einer Linie über die +gesamte Breite der \Macro{parbox} vom \PName{Spruch} abgetrennt. Diese% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.10}{\Package{scrextend}}% + }{\InternalCommonFileUsageError}% +} % +Linie ist in \Macro{dictumrule}\important{\Macro{dictumrule}} definiert. Es +handelt sich dabei um ein vertikales Objekt, das mit +\begin{lstcode} + \newcommand*{\dictumrule}{\vskip-1ex\hrulefill\par} +\end{lstcode} +vordefiniert ist. + +Mit \Macro{raggeddictumauthor}\important{\Macro{raggeddictumauthor}} wird die +Ausrichtung für die Linie und den Urheber vorgenommen. Voreingestellt ist +\Macro{raggedleft}. Auch diese Anweisung kann mit \Macro{renewcommand} +umdefiniert werden. Die Ausgabe erfolgt in der Form, die mit +\Macro{dictumauthorformat}\important{\Macro{dictumauthorformat}} festgelegt +ist. Das Makro erwartet schlicht den \PName{Urheber} als Argument. In der +Voreinstellung ist \Macro{dictumauthorformat} mit +\begin{lstcode} + \newcommand*{\dictumauthorformat}[1]{(#1)} +\end{lstcode} +definiert. Der \PName{Urheber} wird also in runde Klammern gesetzt. % +\BeginIndexGroup +\BeginIndex{FontElement}{dictumauthor}\LabelFontElement{dictumauthor}% +Für das Element +\FontElement{dictumauthor}\important{\FontElement{dictumauthor}} kann dabei +eine Abweichung der Schrift von der des Elementes +\FontElement{dictum}% +\IndexFontElement{dictum}% +\important{\FontElement{dictum}} definiert +werden. Die Voreinstellung entnehmen Sie bitte +\autoref{tab:maincls.dictumfont}. Eine Änderung ist mit Hilfe der Anweisungen +\DescRef{\ThisCommonLabelBase.cmd.setkomafont} und +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}) möglich.% +\EndIndexGroup + +\IfThisCommonLabelBase{maincls}{% + Wird \Macro{dictum} innerhalb der Anweisung + \DescRef{maincls.cmd.setchapterpreamble} oder + \DescRef{maincls.cmd.setpartpreamble} (siehe + \autoref{sec:maincls.structure}, + \DescPageRef{maincls.cmd.setchapterpreamble}) verwendet, so ist Folgendes zu + beachten:\textnote{Achtung!} Die horizontale Anordnung erfolgt immer mit + \Macro{raggeddictum}. Das optionale Argument zur horizontalen Anordnung, das + die beiden Anweisungen vorsehen, bleibt daher ohne + Wirkung. \Length{textwidth} ist nicht die Breite des gesamten Textkörpers, + sondern wie bei \Environment{minipage} die aktuelle Textbreite. Ist also die + Breite \Macro{dictumwidth} als \PValue{.5\Length{textwidth}} definiert und + bei \DescRef{maincls.cmd.setchapterpreamble} wird als optionales Argument + für die Breite ebenfalls \PValue{.5\Length{textwidth}} angegeben, so erfolgt + die Ausgabe in einer Box, deren Breite ein Viertel der Breite des + Textkörpers ist. Es wird empfohlen\textnote{Tipp!}, bei Verwendung von + \Macro{dictum} auf die optionale Angabe einer Breite bei + \DescRef{maincls.cmd.setchapterpreamble} oder + \DescRef{maincls.cmd.setpartpreamble} zu verzichten. + + Sollen\textnote{Tipp!} mehrere schlaue Sprüche untereinander gesetzt werden, + so sollten diese durch einen zusätzlichen Abstand vertikal voneinander + abgesetzt werden. Ein solcher kann leicht mit der Anweisung + \Macro{bigskip}\IndexCmd{bigskip} gesetzt werden.% + \iftrue% +}{\csname iffalse\endcsname} + + \begin{Example} + Sie schreiben ein Kapitel über die moderne Ehe. Dabei wollen Sie in der + Präambel zur Kapitelüberschrift einen schlauen Spruch setzen. Dieser soll + unter der Überschrift erscheinen. Also schreiben Sie: +\begin{lstcode} + \setchapterpreamble[u]{% + \dictum[Schiller]{Drum prüfe, + wer sich ewig bindet \dots}} + \chapter{Die moderne Ehe} +\end{lstcode} + Die Ausgabe erfolgt dann in der Form: + \begin{ShowOutput} + {\usekomafont{disposition}\usekomafont{chapter}\Large + 17\enskip Die moderne Ehe\raggedright\par} + \vspace{\baselineskip} + \dictum[Schiller]{Drum prüfe, wer sich ewig bindet~\dots} + \end{ShowOutput} + + Wenn Sie wollen, dass nicht ein Drittel, sondern nur ein Viertel der + verfügbaren Textbreite für den Spruch verwendet wird, so definieren Sie + \Macro{dictumwidth} wie folgt um: +\begin{lstcode} + \renewcommand*{\dictumwidth}{.25\textwidth} +\end{lstcode} + \end{Example} + +\IfThisCommonLabelBase{maincls}{}{% Umbruchkorrekturtext + An dieser Stelle sei noch auf das Paket~\Package{ragged2e}% + \important{\Package{ragged2e}}\IndexPackage{ragged2e} hingewiesen, mit dem + man Flattersatz mit Trennung erreichen kann (siehe + \cite{package:ragged2e}).% +}% +\fi +% +\EndIndexGroup +% +\EndIndexGroup + + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-draftmode.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-draftmode.tex new file mode 100644 index 0000000000..77287f36cf --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-draftmode.tex @@ -0,0 +1,130 @@ +% ====================================================================== +% common-draftmode.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-draftmode.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-draftmode.tex} + [$Date: 2018-01-30 13:37:05 +0100 (Tue, 30 Jan 2018) $ + KOMA-Script guide (common paragraphs: draft)] + +\section{Entwurfsmodus} +\seclabel{draft}% +\BeginIndexGroup +\BeginIndex{}{Entwurf}% + +\IfThisCommonFirstRun{}{% + \IfThisCommonLabelBase{scrlttr2}{Für + \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}}}{Es} gilt sinngemäß, was in + \autoref{sec:\ThisCommonFirstLabelBase.draft} geschrieben wurde. Falls Sie + also \autoref{sec:\ThisCommonFirstLabelBase.draft} bereits gelesen und + verstanden haben, können Sie nach dem Ende dieses Abschnitts auf + \autopageref{sec:\ThisCommonLabelBase.draft.next} mit + \autoref{sec:\ThisCommonLabelBase.draft.next} + fortfahren.\IfThisCommonLabelBase{scrlttr2}{ Das Paket \Package{scrletter} + bietet selbst keinen Entwurfsmodus, sondern verlässt sich diesbezüglich + auf die verwendete Klasse.}{}% +} + +Viele Klassen und viele Pakete kennen neben dem normalen Satzmodus auch +einen Entwurfsmodus. Die Unterschiede zwischen diesen beiden sind so +vielfältig wie die Klassen und Pakete, die diese Unterscheidung anbieten.% +\IfThisCommonLabelBase{scrextend}{% Umbruchkorrekturtext + \ So führt der Entwurfsmodus einiger Pakete auch zu Änderungen der Ausgabe, + die sich auf den Umbruch des Dokuments auswirken. Das ist bei + \Package{scrextend} jedoch nicht der Fall.% +}{} + +\begin{Declaration} + \OptionVName{draft}{Ein-Aus-Wert} + \OptionVName{overfullrule}{Ein-Aus-Wert} +\end{Declaration}% +Mit Option \Option{draft}\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrartcl}\and + \Class{scrreprt}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}\OnlyAt{\Class{scrlttr2}}% + }{}% +} wird zwischen Dokumenten im Entwurfsstadium und fertigen +Dokumenten\Index{Endfassung} unterschieden. Als \PName{Ein-Aus-Wert} kann +einer der Standardwerte für einfache Schalter aus +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} verwendet +werden. Bei Aktivierung der Option\important{\OptionValue{draft}{true}} werden +im Falle überlanger Zeilen am Zeilenende kleine, schwarze Kästchen +ausgegeben. Diese Kästchen erleichtern dem ungeübten Auge, Absätze ausfindig +zu machen, die manueller Nachbearbeitung bedürfen. Demgegenüber erscheinen in +der Standardeinstellung \OptionValue{draft}{false} keine solchen +Kästchen. Solche Zeilen verschwinden übrigens häufig durch Verwendung des +Pakets +\Package{microtype}\IndexPackage{microtype}\important{\Package{microtype}} +\cite{package:microtype}. + +Da\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.25}{\Class{scrbook}\and \Class{scrartcl}\and + \Class{scrreprt}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.25}{\Class{scrlttr2}}% + }{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.25}{\Package{scrextend}}% + }{}% + }% +} Option \Option{draft} bei verschiedenen Paketen zu allerlei unerwünschten +Effekten führen kann, bietet \KOMAScript{} die Möglichkeit, die Markierung für +überlange Zeilen auch über Option +\Option{overfullrule}\important{\OptionValue{overfullrule}{true}} zu +steuern. Auch hier gilt, dass bei aktivierter Option die Markierung angezeigt +wird. +% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-fontsize.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-fontsize.tex new file mode 100644 index 0000000000..325e6c4f0e --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-fontsize.tex @@ -0,0 +1,202 @@ +% ====================================================================== +% common-fontsize.tex +% Copyright (c) Markus Kohm, 2001-2017 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-fontsize.tex +% Copyright (c) Markus Kohm, 2001-2017 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-fontsize.tex} + [$Date: 2017-12-13 10:05:13 +0100 (Wed, 13 Dec 2017) $ + KOMA-Script guide (common paragraphs: fontsize)] + +\section{Wahl der Schriftgröße für das Dokument} +\seclabel{fontOptions} +\BeginIndexGroup +\BeginIndex{}{Schrift>Groesse=Größe} + +\IfThisCommonFirstRun{% + Die Grundschrift und deren Größe sind zentrale Elemente der Gestaltung eines + Dokuments. Wie in \autoref{cha:typearea} ausgeführt wurde, hängt die + Auf"|teilung zwischen Satzspiegel und Rändern wesentlich davon ab. Die + Grundschrift ist dabei die Schrift, die für die Masse des Textes eines + Dokuments verwendet wird. Alle davon abweichenden Einstellungen, sei es in + der Form, der Dicke, der Neigung oder der Größe, stehen in einer Beziehung + zur Grundschrift.% +}{% + \IfThisCommonLabelBase{scrlttr2}{Für \Class{scrlttr2}\OnlyAt{scrlttr2}}{Es} + gilt sinngemäß, was in \autoref{sec:\ThisCommonFirstLabelBase.fontOptions} + geschrieben wurde. \IfThisCommonLabelBase{scrlttr2}{Paket + \Package{scrletter} bietet selbst hingegen keine Schriftgrößenauswahl, + sondern verlässt sich diesbezüglich vollständig auf die verwendete + Klasse.}{} Falls Sie also + \autoref{sec:\ThisCommonFirstLabelBase.fontOptions} bereits gelesen und + verstanden haben, können Sie \IfThisCommonLabelBase{scrlttr2}{beim Beispiel + am Ende dieses Abschnitts auf + \autopageref{sec:\ThisCommonLabelBase.fontOptions.end} fortfahren. Wenn + Sie dagegen \Package{scrletter} verwenden, können Sie auch }{}% + direkt zu \autoref{sec:\ThisCommonLabelBase.fontOptions.next} auf + \autopageref{sec:\ThisCommonLabelBase.fontOptions.next} springen.% +} + +\begin{Declaration} + \OptionVName{fontsize}{Größe} +\end{Declaration} +Während\IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{% + \textnote{\KOMAScript{} vs. Standardklassen}} von den Standardklassen und +den meisten anderen Klassen nur eine sehr beschränkte Anzahl an Schriftgrößen +unterstützt wird, bietet +\IfThisCommonLabelBase{scrlttr2}{\Class{scrlttr2}}{\KOMAScript} die +Möglichkeit, jede beliebige \PName{Größe} für die Grundschrift +anzugeben. Dabei kann als Einheit für die \PName{Größe} auch jede bekannte +\TeX-Einheit verwendet werden. Wird die \PName{Größe} ohne Einheit angegeben, +so wird \PValue{pt} als Einheit angenommen. \iffree{}{Das genaue Verfahren, + nach dem die Schriftgröße dann eingestellt wird, ist für Experten und + interessierte Anwender in \autoref{sec:maincls-experts.addInfos}, + \DescPageRef{maincls-experts.option.fontsize} dokumentiert.} + +Wird die Option innerhalb des Dokuments gesetzt, so werden ab diesem Punkt die +Grundschriftgröße und die davon abhängigen Schriftgrößen der Befehle +\Macro{tiny}, \Macro{scriptsize}, \Macro{footnotesize}, \Macro{small}, +\Macro{normalsize}, \Macro{large}, \Macro{Large}, \Macro{LARGE}, \Macro{huge} +und \Macro{Huge} geändert. Das kann beispielsweise dann nützlich sein, wenn % +\IfThisCommonLabelBase{scrlttr2}{ein weiterer Brief }{der Anhang }% +insgesamt in einer kleineren Schriftgröße gesetzt werden soll. + +Es wird darauf\textnote{Achtung!} hingewiesen, dass bei Verwendung nach +\IfThisCommonLabelBase{scrextend}{einem eventuellen Laden von + \hyperref[cha:typearea]{\Package{typearea}}\IndexPackage{typearea}% + \important{\hyperref[cha:typearea]{\Package{typearea}}}}{dem Laden der + Klasse} die Auf"|teilung zwischen Satzspiegel und Rändern nicht automatisch +neu berechnet wird (siehe +\DescRef{typearea.cmd.recalctypearea}\IndexCmd{recalctypearea}, +\autoref{sec:typearea.typearea}, +\DescPageRef{typearea.cmd.recalctypearea}). Wird diese Neuberechnung jedoch +vorgenommen, so erfolgt sie auf Basis der jeweils gültigen +Grundschriftgröße. Die Auswirkungen des Wechsels der Grundschriftgröße auf +zusätzlich geladene Pakete oder die verwendete Klasse sind von diesen Paketen +und der Klasse abhängig. % +\IfThisCommonLabelBase{maincls}{% + Es können also Fehler auf"|treten, die nicht als Fehler von \KOMAScript{} + angesehen werden, und auch die \KOMAScript-Klassen selbst passen nicht alle + Längen an eine nach dem Laden der Klasse vorgenommene Änderung der + Grundschriftgröße an.% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + Dabei sind Fehler möglich, die nicht als Fehler von \KOMAScript{} + betrachtet werden, und auch die Klasse \Class{scrlttr2} selbst passt nicht + alle Längen an eine nach dem Laden der Klasse vorgenommene Änderung der + Grundschriftgröße an.% + }{% + Es können also Fehler auf"|treten, die nicht als Fehler von \KOMAScript{} + angesehen werden.% + }% +}% + +Diese\textnote{Achtung!} Option sollte keinesfalls als Ersatz für +\Macro{fontsize} (siehe \cite{latex:fntguide}) missverstanden werden. Sie +sollte auch nicht anstelle einer der von der Grundschrift abhängigen +Schriftgrößenanweisungen, \Macro{tiny} bis \Macro{Huge}, verwendet werden! +\IfThisCommonLabelBase{scrlttr2}{% + Bei \Class{scrlttr2} ist \OptionValue{fontsize}{12pt} voreingestellt. + + \begin{Example} + \phantomsection\label{sec:\ThisCommonLabelBase.fontOptions.end}% + Angenommen, bei dem Verein aus dem Beispielbrief handelt es sich um die + \emph{»Freunde ungesunder Schriftgrößen«}, weshalb er in 14\Unit{pt} statt + in 12\Unit{pt} gesetzt werden soll. Dies kann durch eine kleine Änderung + der ersten Zeile erreicht werden:% + \lstinputcode[xleftmargin=1em]{letter-6}% + Alternativ könnte die Option auch als optionales Argument von + \DescRef{\LabelBase.env.letter} gesetzt werden: + \lstinputcode[xleftmargin=1em]{letter-5}% + Da bei dieser späten Änderung der Schriftgröße der Satzspiegel nicht + geändert wird, unterscheiden sich die beiden Ergebnisse in + \autoref{fig:scrlttr2.letter-5-6}. + \begin{figure} + \centering +% \setcapindent{0pt} +% \begin{captionbeside}[{Beispiel: Brief mit Anschrift, Anrede, Text, +% Grußfloskel, Postskriptum, Anlagen, Verteiler und ungesund großer +% Schrift}]{Ergebnis eines kleinen Briefes mit Anschrift, Anrede, Text, +% Grußfloskel, Postskriptum, Anlagen, Verteiler und ungesund großer +% Schrift (Datum und Faltmarken entstammen den Voreinstellungen für +% DIN-Briefe); links wurde die Schriftgröße als optionales Argument von +% \DescRef{\LabelBase.env.letter} gesetzt, rechts als optionales Argument von +% \Macro{documentclass}}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-5}}\quad + \frame{\includegraphics[width=.4\textwidth]{letter-6}} +% \end{captionbeside} + \caption[{Beispiel: Brief mit Anschrift, Anrede, Text, + Grußfloskel, Postskriptum, Anlagen, Verteiler und ungesund + großer Schrift}] + {Ergebnis eines kleinen Briefes mit Anschrift, Anrede, Text, + Grußfloskel, Postskriptum, Anlagen, Verteiler und ungesund großer + Schrift (Datum und Faltmarken entstammen den Voreinstellungen für + DIN-Briefe); links wurde die Schriftgröße als optionales Argument von + \DescRef{\LabelBase.env.letter} gesetzt, rechts als optionales + Argument von \DescRef{\LabelBase.cmd.documentclass}} + \label{fig:scrlttr2.letter-5-6} + \end{figure} + \end{Example}% +}{% + \IfThisCommonLabelBase{maincls}{% + \par + \phantomsection\label{sec:\ThisCommonLabelBase.fontOptions.end}% + Voreingestellt ist bei \Class{scrbook}, \Class{scrreprt} und + \Class{scrartcl} \OptionValue{fontsize}{11pt}.\textnote{\KOMAScript{} + vs. Standardklassen} Demgegenüber ist übrigens bei den Standardklassen + \Option{10pt} voreingestellt. Dies ist bei einem Wechsel von den + Standardklassen zu den \KOMAScript-Klassen\iffree{}{ oder bei Verwendung + von Option \DescRef{maincls-experts.option.emulatestandardclasses}% + \IndexOption{emulatestandardclasses}} gegebenenfalls zu beachten.% + }{}% +}% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-footnotes.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-footnotes.tex new file mode 100644 index 0000000000..0b0335d39c --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-footnotes.tex @@ -0,0 +1,713 @@ +% ====================================================================== +% common-footnotes.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-footnotes.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-footnotes.tex}% + [$Date: 2018-01-29 14:12:59 +0100 (Mon, 29 Jan 2018) $ + KOMA-Script guide (common paragraphs)] + +\section{Fußnoten} +\seclabel{footnotes}% +\BeginIndexGroup +\BeginIndex{}{Fussnoten=Fußnoten}% + +\IfThisCommonFirstRun{}{% + Es gilt sinngemäß, was in \autoref{sec:\ThisCommonFirstLabelBase.footnotes} + geschrieben wurde. Falls Sie also + \autoref{sec:\ThisCommonFirstLabelBase.footnotes} bereits gelesen und + verstanden haben, können Sie auf + \autopageref{sec:\ThisCommonLabelBase.footnotes.next} mit + \autopageref{sec:\ThisCommonLabelBase.footnotes.next} fortfahren.% + \IfThisCommonLabelBase{scrlttr2}{ % + Wird keine \KOMAScript-Klasse verwendet, stützt sich + \Package{scrletter}\OnlyAt{\Package{scrletter}} auf das Paket + \hyperref[cha:scrextend]{\Package{scrextend}}\IndexPackage{scrextend}% + \important{\hyperref[cha:scrextend]{\Package{scrextend}}}. Siehe daher bei + Verwendung von \Package{scrletter} ebenfalls + \autoref{sec:scrextend.footnotes} ab + \autopageref{sec:scrextend.footnotes}.% + \iffalse% Umbruchkorrekturtext + \ Beachten Sie insbesondere, dass in + diesem Fall einige \KOMAScript-typische Erweiterungen in der + Voreinstellung\textnote{Voreinstellung} nicht aktiv sind. Stattdessen + gelten in der Voreinstellung die Fußnotenmöglichkeiten der verwendeten + Klasse oder des \LaTeX-Kerns.% + \fi% + }{}% +} + +\IfThisCommonLabelBase{maincls}{% + Im\textnote{\KOMAScript{} vs. Standardklassen} Unterschied zu den + Standardklassen bietet \KOMAScript{} die Möglichkeit, die Form von Fußnoten + in vielfältiger Weise zu konfigurieren.% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + Die Anweisungen zum Setzen von Fußnoten sind in jeder \LaTeX-Einführung, + beispielsweise \cite{l2kurz}, zu + finden. \KOMAScript{}\textnote{\KOMAScript{} vs. Standardklassen} bietet + darüber hinaus aber auch noch die Möglichkeit, die Form der Fußnoten zu + verändern. % + \iffalse % Umbruchoptimierung + + Ob Fußnoten bei Briefen überhaupt zulässig sind, hängt sehr stark von + der Art des Briefs und dessen Layout ab. So sind beispielsweise optische + Kollisionen mit dem Fuß des Briefbogens oder Verwechslungen mit der + Auf"|listung von Verteilern oder ähnlichen typischen Elementen von + Briefen zu vermeiden. Dies liegt in der Verantwortung des Anwenders.% + + Da Fußnoten in Briefen eher selten verwendet werden, wurde auf Beispiele + in diesem Abschnitt verzichtet. Sollten Sie Beispiele benötigen, können + Sie solche in \autoref{sec:\ThisCommonFirstLabelBase.footnotes} ab + \autopageref{sec:\ThisCommonFirstLabelBase.footnotes} finden.% + \fi% + }{% + \IfThisCommonLabelBase{scrextend}{% + Die Fußnoten-Möglichkeiten der \KOMAScript-Klassen werden von + \Package{scrextend} ebenfalls bereitgestellt. In der Voreinstellung wird + die Formatierung der Fußnoten jedoch der verwendeten Klasse + überlassen. Dies ändert sich, sobald die Anweisung + \DescRef{\ThisCommonLabelBase.cmd.deffootnote} verwendet wird, die auf + \DescPageRef{\ThisCommonLabelBase.cmd.deffootnote} näher erläutert + wird. + + Die Einstellmöglichkeiten für die Trennlinie über den Fußnoten werden + hingegen von \Package{scrextend} nicht bereitgestellt.% + }{\InternalCommonFileUsageError}% + }% +}% + + +\begin{Declaration} + \OptionVName{footnotes}{Einstellung} + \Macro{multfootsep} +\end{Declaration} +\IfThisCommonLabelBase{scrextend}{Bei vielen Klassen werden Fußnoten }{% + Fußnoten % + \IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + }{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}% + }{}% + } % + werden % +}% +im Text in der Voreinstellung\textnote{Voreinstellung} mit kleinen, +hochgestellten Ziffern markiert. Werden in der +Voreinstellung\important{\OptionValue{footnotes}{nomultiple}} +\OptionValue{footnotes}{nomultiple} zu einer Textstelle mehrere Fußnoten +hintereinander gesetzt, so entsteht der Eindruck, dass es sich nicht um zwei +einzelne Fußnoten, sondern um eine einzige Fußnote mit hoher Nummer handele. + +Mit\important{\OptionValue{footnotes}{multiple}} +\OptionValue{footnotes}{multiple}\IndexOption{footnotes=~multiple} werden +Fußnoten, die unmittelbar aufeinander folgen, stattdessen mit einem +Trennzeichen aneinander gereiht. Das in +\Macro{multfootsep}\important{\Macro{multfootsep}} definierte Trennzeichen ist +als +\begin{lstcode} + \newcommand*{\multfootsep}{,} +\end{lstcode} +definiert. Es ist also mit einem Komma vorbelegt. Dieses kann umdefiniert +werden. + +Der gesamte Mechanismus ist kompatibel zu +\Package{footmisc}\IndexPackage{footmisc}\important{\Package{footmisc}}, +Version~5.3d bis 5.5b (siehe \cite{package:footmisc}) implementiert. Er wirkt +sich sowohl auf Fußnotenmarkierungen aus, die mit +\DescRef{\ThisCommonLabelBase.cmd.footnote}\IndexCmd{footnote} gesetzt wurden, +als auch auf solche, die direkt mit +\DescRef{\ThisCommonLabelBase.cmd.footnotemark}\IndexCmd{footnotemark} +ausgegeben werden. + +Es ist jederzeit möglich, mit \DescRef{\ThisCommonLabelBase.cmd.KOMAoptions} +oder \DescRef{\ThisCommonLabelBase.cmd.KOMAoption} auf die Voreinstellung +\OptionValue{footnotes}{nomultiple} zurückzuschalten. Bei Problemen mit +anderen Paketen, die Einfluss auf die Fußnoten nehmen, sollte die Option +jedoch nicht verwendet und die Einstellung auch nicht innerhalb des Dokuments +umgeschaltet werden. + +Eine Zusammenfassung möglicher Werte für die \PName{Einstellung} von +\Option{footnotes} bietet +\autoref{tab:\ThisCommonFirstLabelBase.footnotes}% +\IfThisCommonFirstRun{% + . + \begin{table} + \caption[{Mögliche Werte für Option \Option{footnotes}}]{Mögliche Werte für + Option \Option{footnotes} zur Einstellung der Fußnoten} + \label{tab:\ThisCommonLabelBase.footnotes} + \begin{desctabular} + \pventry{multiple}{% + Unmittelbar aufeinander folgende Fußnotenmarkierungen werden durch + \DescRef{\ThisCommonLabelBase.cmd.multfootsep}\IndexCmd{multfootsep} + voneinander getrennt ausgegeben.% + \IndexOption{footnotes~=\textKValue{multiple}}}% + \pventry{nomultiple}{% + Unmittelbar aufeinander folgende Fußnotenmarkierungen werden auch + unmittelbar aufeinander folgend ausgegeben.% + \IndexOption{footnotes~=\textKValue{nomultiple}}}% + \end{desctabular} + \end{table}% +}{, + \autopageref{tab:\ThisCommonFirstLabelBase.footnotes}.% +}% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{footnote}\OParameter{Nummer}\Parameter{Text} + \Macro{footnotemark}\OParameter{Nummer} + \Macro{footnotetext}\OParameter{Nummer}\Parameter{Text} + \Macro{multiplefootnoteseparator} +\end{Declaration}% +Fußnoten werden bei {\KOMAScript} genau wie bei den Standardklassen mit der +Anweisung \Macro{footnote} oder den paarweise zu verwendenden Anweisungen +\Macro{footnotemark} und \Macro{footnotetext} erzeugt. Genau wie bei den +Standardklassen ist es möglich, dass innerhalb einer Fußnote ein +Seiten"-umbruch erfolgt. Dies geschieht in der Regel dann, wenn die zugehörige +Fußnotenmarkierung so weit unten auf der Seite gesetzt wird, dass keine andere +Wahl bleibt, als die Fußnote auf die nächste Seite zu umbrechen. Im +Unterschied\textnote{\KOMAScript{} vs. Standardklassen}% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}% + }{}% +} % +zu den Standardklassen bietet \KOMAScript{} aber zusätzlich die Möglichkeit, +Fußnoten, die unmittelbar aufeinander folgen, automatisch zu erkennen und +durch ein Trennzeichen auseinander zu +rücken. Siehe\important{\DescRef{\ThisCommonLabelBase.option.footnotes}} hierzu +die zuvor dokumentierte Option +\DescRef{\ThisCommonLabelBase.option.footnotes}. + +Will man dieses Trennzeichen stattdessen von Hand setzen, so erhält man es +durch Aufruf von \Macro{multiplefootnoteseparator}. Diese Anweisung sollten +Anwender jedoch nicht umdefinieren, da sie neben dem Trennzeichen auch die +Formatierung des Trennzeichen, beispielsweise die Wahl der Schriftgröße und +das Hochstellen, enthält. Das Trennzeichen selbst ist in der zuvor erklärten +Anweisung \DescRef{\ThisCommonLabelBase.cmd.multfootsep}% +\important{\DescRef{\ThisCommonLabelBase.cmd.multfootsep}}% +\IndexCmd{multfootsep} gespeichert. + +\IfThisCommonFirstRun{\iftrue}{% + Beispiele und ergänzende Hinweise sind + \autoref{sec:\ThisCommonFirstLabelBase.footnotes} ab + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.footnote} zu entnehmen.% + \csname iffalse\endcsname +}% + \begin{Example} + \phantomsection\xmpllabel{cmd.footnote}% + Angenommen, Sie wollen zu einem Wort zwei Fußnoten setzen. Im ersten + Ansatz schreiben Sie dafür +\begin{lstcode} + Wort\footnote{Fußnote 1}\footnote{Fußnote 2}. +\end{lstcode} + Nehmen wir weiter an, dass die Fußnoten mit 1 und 2 nummeriert werden. Da + die beiden Fußnotennummern direkt aufeinander folgen, entsteht jedoch der + Eindruck, dass das Wort nur eine Fußnote mit der Nummer 12 besitzt. Sie + könnten dies nun dadurch ändern, dass Sie mit +\begin{lstcode} + \KOMAoptions{footnotes=multiple} +\end{lstcode} + die automatische Erkennung von Fußnotenhäufungen aktivieren. Stattdessen + können Sie aber auch +\begin{lstcode} + Wort\footnote{Fußnote 1}% + \multiplefootnoteseparator + \footnote{Fußnote 2} +\end{lstcode} + verwenden. Das sollte auch dann noch funktionieren, wenn die automatische + Erkennung aus irgendwelchen Gründen versagt oder nicht verwendet werden + kann. + + Nehmen wir nun an, Sie wollen außerdem, dass die Fußnotennummern + nicht nur durch ein Komma, sondern durch ein Komma, gefolgt von einem + Leerzeichen getrennt werden sollen. In diesem Fall schreiben Sie +\begin{lstcode} + \renewcommand*{\multfootsep}{,\nobreakspace} +\end{lstcode} + in Ihre Dokumentpräambel. \Macro{nobreakspace}\IndexCmd{nobreakspace} wurde + hier anstelle eines normalen Leerzeichens gewählt, damit innerhalb der + Reihung der Fußnotenzeichen kein Absatz- oder Seitenumbruch erfolgen kann. + \end{Example}% +\fi% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{footref}\Parameter{Referenz} +\end{Declaration} +Manchmal% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}% + }{}% +} % +hat man in einem Dokument eine Fußnote, zu der es im Text mehrere Verweise +geben soll. Die ungünstige Lösung dafür wäre die Verwendung von +\DescRef{\ThisCommonLabelBase.cmd.footnotemark} unter Angabe der gewünschten +Nummer. Ungünstig an dieser Lösung ist, dass man die Nummer kennen muss und +sich diese jederzeit ändern kann. \KOMAScript{} bietet deshalb die +Möglichkeit, den +\Macro{label}-Mechanismus\IndexCmd{label}\important{\Macro{label}} auch für +Verweise auf Fußnoten zu verwenden. Man setzt dabei in der entsprechenden +Fußnote eine \Macro{label}-Anweisung und kann dann mit \Macro{footref} alle +weiteren Fußnotenmarken für diese Fußnote im Text setzen. +\IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname}% + % Umbruchkorrektur über diverse Varianten!!! + \begin{Example} + \phantomsection + \xmpllabel{cmd.footref}% + Sie schreiben einen Text, in dem sie bei jedem Auf"|treten eines + Markennamens eine Fußnote setzen müssen, die darauf hinweist, dass es sich + um einen geschützten Markennamen handelt. Sie schreiben beispielsweise:% + \IfThisCommonLabelBase{maincls}{\iftrue}{\csname iffalse\endcsname}% +\begin{lstcode} + Die Firma SplischSplasch\footnote{Bei diesem + Namen handelt es sich um eine registrierte + Marke. Alle Rechte daran sind dem + Markeninhaber vorbehalten.\label{refnote}} + stellt neben SplischPlumps\footref{refnote} + auch noch die verbesserte Version + SplischPlatsch\footref{refnote} her. +\end{lstcode} + Es wird dann dreimal eine Marke auf dieselbe Fußnote gesetzt, einmal mit + \DescRef{\ThisCommonLabelBase.cmd.footnote} direkt und zweimal mit + \Macro{footref}. + \else\iftrue +\begin{lstcode} + Die Firma SplischSplasch\footnote{Bei diesem + Namen handelt es sich um eine registrierte + Marke. Alle Rechte daran sind dem + Markeninhaber vorbehalten.\label{refnote}} + stellt neben SplischPlumps\footref{refnote} + auch noch die verbesserte Version + SplischPlatsch\footref{refnote} her. +\end{lstcode} + Es wird dann dreimal eine Marke auf dieselbe Fußnote gesetzt, einmal + mit \DescRef{\ThisCommonLabelBase.cmd.footnote} direkt und zweimal mit + \Macro{footref}. + \else +\begin{lstcode} + Die Firma SplischSplasch\footnote{Bei diesem + Namen handelt es sich um eine registrierte + Marke. Alle Rechte daran sind dem + Markeninhaber, der Firma SplischSplasch, + vorbehalten.\label{refnote}} + stellt neben SplischPlumps\footref{refnote} + auch noch die verbesserte Version + SplischPlatsch\footref{refnote} und das sehr + beliebte + SplischSplaschPlumps\footref{refnote} her. +\end{lstcode} + Es wird dann vier Mal eine Marke auf dieselbe Fußnote gesetzt, einmal + mit \DescRef{\ThisCommonLabelBase.cmd.footnote} direkt und drei Mal + mit \Macro{footref}. + \fi% + \fi + \end{Example} +\fi +Da die Fußnotenmarken mit Hilfe des \Macro{label}-Mechanismus gesetzt werden, +werden nach Änderungen, die sich auf die Fußnotennummerierung auswirken, +gegebenenfalls zwei \LaTeX-Durchläufe benötigt, bis die mit \Macro{footref} +gesetzten Marken korrekt sind.% +\IfThisCommonLabelBaseOneOf{scrlttr2,scrextend}{\par% + Ein Beispiel zur Verwendung von \Macro{footref} finden Sie in + \autoref{sec:\ThisCommonFirstLabelBase.footnotes} auf + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.footref}.% +}{} +\IfThisCommonLabelBase{scrlttr2}{}{% + \par + Es\textnote{Achtung!} sei darauf hingewiesen, dass die Anweisung genau wie + \Macro{ref}\IndexCmd{ref} oder \Macro{pageref}\IndexCmd{pageref} zerbrechlich + ist und deshalb in beweglichen Argumenten wie Überschriften + \Macro{protect}\IndexCmd{protect} davor gestellt werden sollte.% +}% +\EndIndexGroup + +\begin{Declaration} + \Macro{deffootnote}\OParameter{Markenbreite}\Parameter{Einzug}% + \Parameter{Absatzeinzug}% + \Parameter{Markendefinition} + \Macro{deffootnotemark}\Parameter{Markendefinition} + \Macro{thefootnotemark} +\end{Declaration}% +\IfThisCommonLabelBase{maincls}{Die \KOMAScript-Klassen setzen}{\KOMAScript{} + setzt}\textnote{\KOMAScript{} vs. Standardklassen} +Fußnoten etwas anders als die Standardklassen. +Die Fußnotenmarkierung im Text, also die Referenzierung der Fußnote, erfolgt +wie bei den Standardklassen durch kleine hochgestellte Zahlen. Genauso werden +die Markierungen auch in der Fußnote selbst wiedergegeben. Sie werden dabei +rechtsbündig in einem Feld der Breite \PName{Markenbreite} gesetzt. Die erste +Zeile der Fußnote schließt direkt an das Feld der Markierung an. + +Alle weiteren Zeilen werden um den Betrag von \PName{Einzug} eingezogen +ausgegeben. Wird der optionale Parameter \PName{Markenbreite} nicht angegeben, +dann entspricht er dem Wert von \PName{Einzug}. Sollte die Fußnote aus +mehreren Absätzen bestehen, dann wird die erste Zeile eines Absatzes +zusätzlich mit dem Einzug der Größe \PName{Absatzeinzug} versehen. + +\autoref{fig:\ThisCommonFirstLabelBase.deffootnote} % +\IfThisCommonFirstRun{}{auf + \autopageref{fig:\ThisCommonFirstLabelBase.deffootnote} }{}% +veranschaulicht die verschiedenen Parameter% +\IfThisCommonLabelBase{maincls}{ nochmals}{}% +. Die Voreinstellung in den \KOMAScript-Klassen entspricht folgender +Definition: \IfThisCommonLabelBase{scrextend}{\iftrue}{\csname + iffalse\endcsname}% +\begin{lstcode} + \deffootnote[1em]{1.5em}{1em}{% + \textsuperscript{\thefootnotemark}} +\end{lstcode} +\else +\begin{lstcode} + \deffootnote[1em]{1.5em}{1em}{% + \textsuperscript{\thefootnotemark}% + } +\end{lstcode} +\fi% +Dabei wird mit Hilfe von \DescRef{\ThisCommonLabelBase.cmd.textsuperscript} +sowohl die Hochstellung als auch die Wahl einer kleineren Schrift +erreicht. Die Anweisung \Macro{thefootnotemark} liefert die aktuelle +Fußnotenmarke ohne jegliche Formatierung.% +\IfThisCommonLabelBase{scrextend}{ % + Das Paket \Package{scrextend} überlässt hingegen in der Voreinstellung das + Setzen der Fußnoten der verwendeten Klasse. Das Laden des Pakets allein + sollte daher noch zu keinerlei Änderungen bei der Formatierung der Fußnoten + oder der Fußnotenmarken führen. Zur Übernahme der Voreinstellungen der + \KOMAScript-Klassen muss man vielmehr obige Einstellung selbst + vornehmen. Dazu können obige Code-Zeilen beispielsweise unmittelbar nach dem + Laden von \Package{scrextend} eingefügt werden.% +}{}% + +\IfThisCommonLabelBase{maincls}{% + \begin{figure} +% \centering + \KOMAoption{captions}{bottombeside} + \setcapindent{0pt}% + \begin{captionbeside}[{Parameter für die Darstellung der + Fußnoten}]% + {\label{fig:\ThisCommonLabelBase.deffootnote}\hspace{0pt plus 1ex}% + \mbox{Parameter} für die Darstellung der Fußnoten}% + [l] + \setlength{\unitlength}{1.02mm} + \begin{picture}(95,22) + \thinlines + % frame of following paragraph + \put(5,0){\line(1,0){90}} + \put(5,0){\line(0,1){5}} + \put(10,5){\line(0,1){5}}\put(5,5){\line(1,0){5}} + \put(95,0){\line(0,1){10}} + \put(10,10){\line(1,0){85}} + % frame of first paragraph + \put(5,11){\line(1,0){90}} + \put(5,11){\line(0,1){5}} + \put(15,16){\line(0,1){5}}\put(5,16){\line(1,0){10}} + \put(95,11){\line(0,1){10}} + \put(15,21){\line(1,0){80}} + % box of the footnote mark + \put(0,16.5){\framebox(14.5,4.5){\mbox{}}} + % description of paragraphs + \put(45,16){\makebox(0,0)[l]{% + \small\textsf{erster Absatz einer Fußnote}}} + \put(45,5){\makebox(0,0)[l]{% + \small\textsf{folgender Absatz einer Fußnote}}} + % help lines + \thicklines + \multiput(0,0)(0,3){7}{\line(0,1){2}} + \multiput(5,0)(0,3){3}{\line(0,1){2}} + % parameters + \put(2,7){\vector(1,0){3}} + \put(5,7){\line(1,0){5}} + \put(15,7){\vector(-1,0){5}} + \put(15,7){\makebox(0,0)[l]{\small\PName{Absatzeinzug}}} + % + \put(-3,13){\vector(1,0){3}} + \put(0,13){\line(1,0){5}} + \put(10,13){\vector(-1,0){5}} + \put(10,13){\makebox(0,0)[l]{\small\PName{Einzug}}} + % + \put(-3,19){\vector(1,0){3}} + \put(0,19){\line(1,0){14.5}} + \put(19.5,19){\vector(-1,0){5}} + \put(19.5,19){\makebox(0,0)[l]{\small\PName{Markenbreite}}} + \end{picture} + \end{captionbeside} + \end{figure}% +}{} + +\BeginIndexGroup +\BeginIndex{FontElement}{footnote}\LabelFontElement{footnote}% +\BeginIndex{FontElement}{footnotelabel}\LabelFontElement{footnotelabel}% +Auf% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v2.8q}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{} die Fußnote einschließlich der Markierung findet außerdem die für das +Element \FontElement{footnote}\important{\FontElement{footnote}} eingestellte +Schriftart Anwendung. Die % Umbruchkorrekturvarianten +%\IfThisCommonLabelBase{maincls}{davon abweichende }{}% +Schriftart der Markierung kann % +\IfThisCommonLabelBase{maincls}{}{jedoch }% +mit Hilfe der Anweisungen \DescRef{\ThisCommonLabelBase.cmd.setkomafont} und +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}) für das Element +\FontElement{footnotelabel}\important{\FontElement{footnotelabel}} davon +abweichend eingestellt werden. Siehe hierzu auch +\autoref{tab:\ThisCommonFirstLabelBase.fontelements}, +\autopageref{tab:\ThisCommonFirstLabelBase.fontelements}. Voreingestellt ist +jeweils keine Umschaltung der Schrift.% +\IfThisCommonLabelBase{scrextend}{ % + Die Elemente finden bei scrextend jedoch nur dann Anwendung, wenn die + Fußnoten mit diesem Paket gesetzt werden, also \Macro{deffootnote} verwendet + wurde.% +}{} Bitte\textnote{Achtung!} missbrauchen Sie das Element nicht für andere +Zwecke, beispielsweise zur Verwendung von Flattersatz in den Fußnoten (siehe +dazu auch \DescRef{\LabelBase.cmd.raggedfootnote}, +\DescPageRef{\LabelBase.cmd.raggedfootnote}). + +\BeginIndex{FontElement}{footnotereference}% +\LabelFontElement{footnotereference}% +Die Fußnotenmarkierung im Text wird getrennt von der Markierung vor der +Fußnote definiert. Dies geschieht mit der Anweisung +\Macro{deffootnotemark}. Voreingestellt ist hier: +\begin{lstcode} + \deffootnotemark{\textsuperscript{\thefootnotemark}} +\end{lstcode} +Dabei findet% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v2.8q}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{} die Schriftart für das Element +\FontElement{footnotereference}\IndexFontElement{footnotereference}% +\important{\FontElement{footnotereference}} Anwendung (siehe % +\autoref{tab:\ThisCommonLabelBase.fontelements}, +\autopageref{tab:\ThisCommonLabelBase.fontelements}). Die Markierungen im Text +und in der Fußnote selbst sind also identisch. Die Schriftart kann mit den +Anweisungen \DescRef{\ThisCommonLabelBase.cmd.setkomafont} und +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}) jedoch geändert werden% +\IfThisCommonLabelBase{scrextend}{, sobald die Anweisung + \DescRef{\ThisCommonLabelBase.cmd.deffootnotemark} verwendet wird}{}. + +\IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname}% + \begin{Example} + \phantomsection + \xmpllabel{cmd.deffootnote}% + Relativ\textnote{Tipp!} häufig wird gewünscht, dass die Markierung in der + Fußnote selbst weder hochgestellt noch kleiner gesetzt wird. Dabei soll + sie aber nicht direkt am Text kleben, sondern geringfügig davor + stehen. Dies kann zum einen wie folgt erreicht werden: +\begin{lstcode} + \deffootnote{1em}{1em}{\thefootnotemark\ } +\end{lstcode} + Die Fußnotenmarkierung und das folgende Leerzeichen wird also rechtsbündig + in eine Box der Breite 1\Unit{em} gesetzt. Die folgenden Zeilen der + Fußnote werden gegenüber dem linken Rand ebenfalls um 1\Unit{em} + eingezogen. + + Eine\textnote{Tipp!} weitere, oft gefragte Formatierung sind linksbündige + Fußnotenmarkierungen in der Fußnote. Diese können mit folgender Definition + erhalten werden: +\begin{lstcode} + \deffootnote{1.5em}{1em}{% + \makebox[1.5em][l]{\thefootnotemark}% + } +\end{lstcode} + + Sollen jedoch die Fußnoten insgesamt lediglich in einer anderen + Schriftart, beispielsweise serifenlos gesetzt werden, so ist dies ganz + einfach mit Hilfe der Anweisungen + \DescRef{\ThisCommonLabelBase.cmd.setkomafont} und + \DescRef{\ThisCommonLabelBase.cmd.addtokomafont} (siehe + \autoref{sec:\ThisCommonLabelBase.textmarkup}, + \DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}) zu lösen: +\begin{lstcode} + \setkomafont{footnote}{\sffamily} +\end{lstcode}% + \end{Example}% + \IfThisCommonLabelBase{scrextend}{}{% + Wie die Beispiele zeigen, ermöglicht {\KOMAScript} mit dieser einfachen + Benutzerschnittstelle eine große Vielfalt unterschiedlicher + Fußnotenformatierungen.% + }% +\fi% +\IfThisCommonFirstRun{}{% + Beispiele finden Sie in + \autoref{sec:\ThisCommonFirstLabelBase.footnotes}, + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.deffootnote}.% +}{}% +% +\EndIndexGroup +\EndIndexGroup + +\IfThisCommonLabelBase{scrextend}{\iffalse}{\csname iftrue\endcsname} +\begin{Declaration} + \Macro{setfootnoterule}\OParameter{Höhe}\Parameter{Länge}% +\end{Declaration}% +Üblicherweise% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.06}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.06}{\Class{scrlttr2}}% + }{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.06}{\Package{scrextend}}% + }{}% + }% +} % +wird zwischen dem Textbereich und dem Fußnotenapparat eine Trennlinie gesetzt, +die jedoch normalerweise nicht über die gesamte Breite des Satzspiegels +geht. Mit Hilfe dieser Anweisung kann die genaue Länge und die Höhe oder Dicke +der Linie bestimmt werden. Dabei werden \PName{Höhe} und \PName{Länge} erst +beim Setzen der Linie selbst abhängig von \Macro{normalsize} ausgewertet. Der +optionale Parameter \PName{Höhe} kann komplett entfallen und wird dann nicht +geändert. Ist das Argument \PName{Höhe} oder \PName{Länge} leer, so wird die +jeweilige Größe ebenfalls nicht geändert. Es gibt sowohl beim Setzen als auch +bei Verwendung der Größen für unplausible Werte eine Warnung. + +\BeginIndexGroup +\BeginIndex{FontElement}{footnoterule}\LabelFontElement{footnoterule}% +Die Farbe% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.07}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.07}{\Class{scrlttr2}}% + }{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.07}{\Package{scrextend}}% + }{}% + }% +} % +der Linie kann über das Element +\FontElement{footnoterule}\important{\FontElement{footnoterule}} mit Hilfe der +Anweisungen \DescRef{\ThisCommonLabelBase.cmd.setkomafont} und +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}) eingestellt +werden. Voreingestellt ist hierbei keinerlei Änderung von Schrift oder +Farbe. Um die Farbe ändern zu können, muss außerdem ein Farbpaket wie +\Package{xcolor}\IndexPackage{xcolor}\important{\Package{xcolor}} geladen +sein.% +\EndIndexGroup +\EndIndexGroup +\fi + +\begin{Declaration} + \Macro{raggedfootnote} +\end{Declaration} +In% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.23}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.23}{\Class{scrlttr2}}% + }{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.23}{\Package{scrextend}}% + }{}% + }% +} % +der Voreinstellung werden die Fußnoten bei \KOMAScript{} genau wie bei den +Standardklassen im Blocksatz gesetzt. Es\textnote{\KOMAScript{} + vs. Standardklassen} ist aber auch möglich die Formatierung abweichend vom +restlichen Dokument zu ändern. Dazu ist \Macro{raggedfootnote} +umzudefinieren. Gültige Definitionen wären +\Macro{raggedright}\IndexCmd{raggedright}, +\Macro{raggedleft}\IndexCmd{raggedleft}, +\Macro{centering}\IndexCmd{centering}, \Macro{relax}\IndexCmd{relax} oder +entsprechend der Voreinstellung eine leere Definition. Auch die +Ausrichtungsbefehle des Pakets \Package{ragged2e}\IndexPackage{ragged2e} sind +zulässig (siehe \cite{package:ragged2e}). +\IfThisCommonLabelBase{scrextend}{% + Ein passendes Beispiel ist in + \autoref{sec:\ThisCommonFirstLabelBase.footnotes}, + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.raggedfootnote} zu finden.% + \iffalse +}{\csname iftrue\endcsname}% +\begin{Example} + \phantomsection\xmpllabel{cmd.raggedfootnote}% + Angenommen Sie verwenden Fußnoten ausschließlich, um Hinweise auf sehr lange + Links anzugeben, deren Umbruch im Blocksatz zu schlechten Ergebnissen + führen. Dann könnten Sie in der Dokumentpräambel mit +\begin{lstcode} + \let\raggedfootnote\raggedright +\end{lstcode} + für die Fußnoten einfach auf linksbündigen Flattersatz umschalten. +\end{Example}% +\fi +\EndIndexGroup +% +\EndIndexGroup + + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "../guide" +%%% End: + +% LocalWords: Fußnotennummern Fußnotenmarkierung Satzspiegels +% LocalWords: Standardklassen Fußnotenformatierungen Dokumentpräambel +% LocalWords: Fußnotenmöglichkeiten diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-headfootheight.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-headfootheight.tex new file mode 100644 index 0000000000..75c18a8250 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-headfootheight.tex @@ -0,0 +1,176 @@ +% ====================================================================== +% common-headfootheight.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-headfootheight.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Text that is common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapitels in der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{common-headfootheight.tex} + [$Date: 2018-01-16 11:41:41 +0100 (Tue, 16 Jan 2018) $ + KOMA-Script guide (common paragraph: Head and Foot Height)] + + + + +\section{Höhe von Kopf und Fuß} +\seclabel{height} + +\BeginIndexGroup +\BeginIndex{}{Kopf>Hoehe=Höhe}% +\BeginIndex{}{Fuss=Fuß>Hoehe=Höhe}% +\IfThisCommonLabelBase{scrlayer-scrpage}{% + \begin{Explain}% + Vermutlich, weil der Fuß bei den Standardklassen kaum besetzt ist und + zudem als \Macro{mbox} immer einzeilig ist, gibt es bei \LaTeX{} keine + definierte Höhe des Fußes. Zwar ist der Abstand von der letzten Grundlinie + des Textblocks zur Grundlinie des Fußes mit + \Length{footskip}\IndexLength[indexmain]{footskip} durchaus + definiert. Wenn allerdings der Fuß höher als eine Zeile wird, dann ist + nicht hinreichend festgelegt, wie sich diese Höhe niederschlägt bzw. ob + \Length{footskip} den Abstand zur obersten oder untersten Grundlinie des + Fußes darstellt. + + Obwohl auch der Kopf bei den Seitenstilen der Standardklassen in einer + horizontalen Box ausgegeben wird und damit immer einzeilig ist, hat + \LaTeX{} für die Kopfhöhe tatsächlich selbst eine Länge zur Einstellung + ihrer Höhe vorgesehen. Dies erklärt sich vermutlich daraus, dass diese + Höhe zur Bestimmung des Anfangs des Textbereichs benötigt wird.% + \end{Explain}% +}{% + \iffree{Der }{}Kopf und \iffree{der }{}Fuß einer Seite sind zentrale + Elemente nicht nur des Seitenstils. \iffree{Auch eine Ebene kann bei der + Definition über entsprechende Optionen genau darauf beschränkt werden + (siehe \autoref{tab:scrlayer.layerkeys} ab + \autopageref{tab:scrlayer.layerkeys}). }{}Deshalb muss die Höhe beider + Elemente bekannt sein.% +} + +\IfThisCommonFirstRun{}{% + Es gilt sinngemäß, was in + \autoref{sec:\ThisCommonFirstLabelBase.height} geschrieben + wurde. Falls Sie also \autoref{sec:\ThisCommonFirstLabelBase.height} + bereits gelesen und verstanden haben, können Sie auf + \autopageref{sec:\ThisCommonLabelBase.height.next} mit + \autoref{sec:\ThisCommonLabelBase.height.next} fortfahren.% +} + + +\begin{Declaration} + \Length{footheight} + \Length{headheight} + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \OptionVName{autoenlargeheadfoot}{Ein-Aus-Wert}% + }{}% +\end{Declaration} +Das Paket \Package{scrlayer} führt als neue Länge \Length{footheight} analog +zur Höhe \Length{headheight}\IfThisCommonLabelBase{scrlayer-scrpage}{}{ des + \LaTeX-Kerns} ein. Gleichzeitig interpretiert +\Package{scrlayer\IfThisCommonLabelBase{scrlayer-scrpage}{-scrpage}{}} +\Length{footskip} so, dass es den Abstand der letzten Grundlinie des +Textbereichs von der ersten Standard-Grundlinie des Fußes darstellt. Das Paket +\hyperref[cha:typearea]{\Package{typearea}}\IndexPackage{typearea}% +\important{\hyperref[cha:typearea]{\Package{typearea}}} betrachtet dies in +gleicher Weise, so dass die dortigen Optionen zum Setzen der Höhe des Fußes +(siehe die Optionen \DescRef{typearea.option.footheight} und +\DescRef{typearea.option.footlines} in \autoref{sec:typearea.typearea}, +\DescPageRef{typearea.option.footheight}) und zur Berücksichtigung des Fußes +bei der Berechnung des Satzspiegels (siehe Option +\DescRef{typearea.option.footinclude} in demselben Abschnitt, +\DescPageRef{typearea.option.footinclude}) sehr gut zum Setzen der Werte für +\Package{scrlayer} verwendet werden können und auch das gewünschte Ergebnis +liefern. + +Wird das Paket \hyperref[cha:typearea]{\Package{typearea}}% +\important{\hyperref[cha:typearea]{\Package{typearea}}} nicht verwendet, so +sollte man gegebenenfalls die Höhe von Kopf und Fuß über entsprechende Werte +für die Längen einstellen. Zumindest für den Kopf bietet aber beispielsweise +auch das Paket \Package{geometry} Einstellmöglichkeiten.% +\IfThisCommonLabelBase{scrlayer-scrpage}{\par% + Wurde der Kopf oder der Fuß für den tatsächlich verwendeten Inhalt zu klein + gewählt, so versucht \Package{scrlayer-scrpage} in der + Voreinstellung\textnote{Voreinstellung} die Längen selbst entsprechend + anzupassen. Gleichzeitig wird eine entsprechende Warnung ausgegeben, die + auch Ratschläge für passende Einstellungen enthält. Die automatischen + Änderungen haben dann ab dem Zeitpunkt, an dem ihre Notwendigkeit erkannt + wurde, Gültigkeit und werden nicht automatisch aufgehoben, wenn + beispielsweise der Inhalt von Kopf oder Fuß wieder kleiner wird. Über + Option\ChangedAt{v3.25}{\Package{scrlayer-scrpage}} + \Option{autoenlargeheadfoot} kann dieses Verhalten jedoch geändert + werden. Die Option versteht die Werte für einfache Schalter aus + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. In der + Voreinstellung ist die Option aktiviert. Wird sie deaktiviert, so werden + Kopf und Fuß nicht mehr automatisch vergrößert, sondern nur noch eine + Warnung mit Hinweisen für passende Einstellungen ausgegeben.% +}{% + \IfThisCommonLabelBase{scrlayer}{\par% + Wurde der Kopf oder Fuß für den tatsächlich verwendeten Inhalt zu klein + gewählt, so toleriert \Package{scrlayer} dies in der Regel ohne + Fehlermeldung oder Warnung. Der Kopf dehnt sich dann entsprechend seiner + Höhe in der Regel weiter nach oben, der Fuß entsprechend weiter nach unten + aus. Informationen darüber erhält man jedoch nicht automatisch. Pakete wie + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + \important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}}% + \IndexPackage{scrlayer-scrpage}, die auf \Package{scrlayer} aufbauen, + enthalten dagegen gegebenenfalls eigene Tests, die auch zu eigenen + Aktionen führen können (siehe \DescRef{scrlayer-scrpage.length.headheight} + und \DescRef{scrlayer-scrpage.length.footheight} auf + \DescPageRef{scrlayer-scrpage.length.headheight}).% + }{}% +}% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "scrguide.tex" +%%% TeX-PDF-mode: t +%%% End: + +% LocalWords: Seitenstilen Ebenenmodell scrpage headings myheadings plain +% LocalWords: empty scrlayer Seitenstil Rückgriffe Gliederungsnummern +% LocalWords: Standardklassen Seitenstile konsistenteren Befehlssatzes +% LocalWords: Einstellmöglichkeiten Seiteninhalts Gliederungsüberschrift diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-interleafpage.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-interleafpage.tex new file mode 100644 index 0000000000..4e4803e936 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-interleafpage.tex @@ -0,0 +1,361 @@ +% ====================================================================== +% common-interleafpage.tex +% Copyright (c) Markus Kohm, 2001-2017 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-interleafpage.tex +% Copyright (c) Markus Kohm, 2001-2017 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-interleafpage.tex} + [$Date: 2017-12-07 11:43:47 +0100 (Thu, 07 Dec 2017) $ + KOMA-Script guide (common paragraphs)] + +\section{Vakatseiten} +\seclabel{emptypage}% +\BeginIndexGroup +\BeginIndex{}{Vakatseite}% +\BeginIndex{}{Seiten>Stil}% + +\IfThisCommonFirstRun{}{% + Es gilt sinngemäß, was in + \autoref{sec:\ThisCommonFirstLabelBase.emptypage} geschrieben + wurde. Falls Sie also \autoref{sec:\ThisCommonFirstLabelBase.emptypage} + bereits gelesen und verstanden haben, können Sie auf + \autopageref{sec:\ThisCommonLabelBase.emptypage.next} mit + \autoref{sec:\ThisCommonLabelBase.emptypage.next} fortfahren.% +} + +Vakatseiten sind Seiten, die beim Satz eines Dokuments absichtlich leer +bleiben. Bei \LaTeX{} werden sie jedoch in der Voreinstellung mit dem aktuell +gültigen Seitenstil gesetzt. \KOMAScript{} bietet hier diverse Erweiterungen. + +Vakatseiten findet man hauptsächlich in Büchern. Da es bei Büchern üblich ist, +dass Kapitel auf einer rechten Seite beginnen, muss in dem Fall, dass das +vorherige Kapitel ebenfalls auf einer rechten Seite endet, eine leere linke +Seite eingefügt werden. Aus dieser Erklärung ergibt sich auch, dass +Vakatseiten normalerweise nur im doppelseitigen Satz existieren. +% +\iffalse % Umbruchkorrektur + Die leeren Rückseiten im einseitigen Druck werden eher nicht als Vakatseiten + bezeichnet, obwohl sie auf Druckbögen im Ergebnis als solche erscheinen.% +\fi% + +\IfThisCommonLabelBase{scrlttr2}{% + Vakatseiten sind bei Briefen eher unüblich. Das liegt nicht zuletzt daran, + dass wahrhaft doppelseitige Briefe recht selten sind, da Briefe + normalerweise nicht gebunden werden. Trotzdem unterstützt \KOMAScript{} auch + für den Fall von doppelseitigen Briefen Einstellungen für + Vakatseiten. Da die hier vorgestellten Anweisungen aber in Briefen kaum + Verwendung finden, finden Sie hier keine Beispiele. Bei Bedarf orientieren + Sie sich bitte an den Beispielen in \autoref{sec:maincls.emptypage} ab + \autopageref{sec:maincls.emptypage}.% +}{}% + +\begin{Declaration} + \OptionVName{cleardoublepage}{Seitenstil}% + \OptionValue{cleardoublepage}{current} +\end{Declaration}% +Mit Hilfe dieser Option% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}% + }{}% +} % +kann man den \PName{Seitenstil} der Vakatseite bestimmen, die bei Bedarf von +den Anweisungen \DescRef{\LabelBase.cmd.cleardoublepage}, +\DescRef{\LabelBase.cmd.cleardoubleoddpage} oder +\DescRef{\LabelBase.cmd.cleardoubleevenpage} eingefügt wird, um bis zur +gewünschten Seite zu umbrechen. Als \PName{Seitenstil} sind dabei alle bereits +definierten Seitenstile (siehe \autoref{sec:\ThisCommonLabelBase.pagestyle} ab +\autopageref{sec:\ThisCommonLabelBase.pagestyle} und +\autoref{cha:scrlayer-scrpage} ab \autopageref{cha:scrlayer-scrpage}) +verwendbar. Daneben ist auch \OptionValue{cleardoublepage}{current} +möglich. Dieser Fall entspricht der Voreinstellung von \KOMAScript{} bis +Version~2.98c und führt dazu, dass die Vakatseite mit dem Seitenstil erzeugt +wird, der beim Einfügen gerade aktuell ist. Ab Version~3.00% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}% + }{}% +} % +werden in der Voreinstellung\textnote{Voreinstellung} entsprechend der +typografischen Gepflogenheiten Vakatseiten mit dem Seitenstil +\IfThisCommonLabelBase{scrextend}{\DescRef{maincls.pagestyle.empty}}{% + \DescRef{\ThisCommonLabelBase.pagestyle.empty}}\IndexPagestyle{empty} +erzeugt, wenn man nicht Kompatibilität zu früheren \KOMAScript-Versionen +eingestellt hat (siehe Option \DescRef{\ThisCommonLabelBase.option.version}% +\important{\OptionValueRef{\LabelBase}{version}{2.98c}}, +\autoref{sec:\ThisCommonLabelBase.compatibilityOptions}, +\DescPageRef{\ThisCommonLabelBase.option.version}). +\IfThisCommonLabelBase{maincls}{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{option.cleardoublepage}% + Angenommen, Sie wollen, dass die Vakatseiten bis auf die Paginierung leer + sind\iffree{, also mit Seitenstil \IfThisCommonLabelBase{scrextend}{% + \DescRef{maincls.pagestyle.plain}}{\DescRef{\LabelBase.pagestyle.plain}} + erzeugt werden}{}. Dies erreichen Sie \iffree{beispielsweise }{}mit: +\begin{lstcode} + \KOMAoptions{cleardoublepage=plain} +\end{lstcode} + Näheres zum Seitenstil \IfThisCommonLabelBase{scrextend}{% + \DescRef{maincls.pagestyle.plain}}{\DescRef{\LabelBase.pagestyle.plain}} + ist in + \IfThisCommonLabelBase{scrextend}{% + \autoref{sec:maincls.pagestyle}}{% + \autoref{sec:\LabelBase.pagestyle}}, + \IfThisCommonLabelBase{scrextend}{% + \DescPageRef{maincls.pagestyle.plain}}{% + \DescPageRef{\LabelBase.pagestyle.plain}} zu finden. + \end{Example} +\else + \IfThisCommonLabelBase{scrextend}{% + Ein Beispiel für die Bestimmung des Seitenstils von Vakatseiten finden Sie + in \autoref{sec:\ThisCommonFirstLabelBase.emptypage}, + \PageRefxmpl{\ThisCommonFirstLabelBase.option.cleardoublepage}.% + \iffalse% Umbruchvariante ohne Beispiel + }{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{option.cleardoublepage}% + Angenommen, Sie wollen, dass die Vakatseiten bis auf die Paginierung + leer sind, also mit Seitenstil \IfThisCommonLabelBase{scrextend}{% + \DescRef{maincls.pagestyle.plain}}{\DescRef{\LabelBase.pagestyle.plain}} + erzeugt werden. Dies erreichen Sie beispielsweise mit +\begin{lstcode} + \KOMAoptions{cleardoublepage=plain} +\end{lstcode} + Näheres zum Seitenstil \DescRef{maincls.pagestyle.plain} ist in + \autoref{sec:maincls.pagestyle}, + \DescPageRef{maincls.pagestyle.plain} + zu finden. + \end{Example}% + \fi% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{clearpage}% + \Macro{cleardoublepage}% + \Macro{cleardoublepageusingstyle}\Parameter{Seitenstil}% + \Macro{cleardoubleemptypage}% + \Macro{cleardoubleplainpage}% + \Macro{cleardoublestandardpage}% + \Macro{cleardoubleoddpage}% + \Macro{cleardoubleoddpageusingstyle}\Parameter{Seitenstil}% + \Macro{cleardoubleoddemptypage}% + \Macro{cleardoubleoddplainpage}% + \Macro{cleardoubleoddstandardpage}% + \Macro{cleardoubleevenpage}% + \Macro{cleardoubleevenpageusingstyle}\Parameter{Seitenstil}% + \Macro{cleardoubleevenemptypage}% + \Macro{cleardoubleevenplainpage}% + \Macro{cleardoubleevenstandardpage} +\end{Declaration}% +Im\textnote{Standardklassen} \LaTeX-Kern existiert die Anweisung +\Macro{clearpage}, die dafür sorgt, dass alle noch nicht ausgegebenen +Gleitumgebungen ausgegeben werden und anschließend eine neue Seite begonnen +wird. Außerdem existiert die Anweisung \Macro{cleardoublepage}, die wie +\Macro{clearpage} arbeitet, durch die aber im doppelseitigen Layout (siehe +Option \DescRef{typearea.option.twoside} in \autoref{sec:typearea.typearea}, +\DescPageRef{typearea.option.twoside}) eine neue rechte Seite begonnen +wird. Dazu wird gegebenenfalls eine linke Vakatseite im aktuellen Seitenstil +ausgegeben. + +Bei {\KOMAScript}\textnote{\KOMAScript} arbeitet +\Macro{cleardoubleoddstandardpage}% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.00}{\Class{scrlttr2}}% + }{}% +} % +genau in der soeben für die Standardklassen beschriebenen Art und Weise. Die +Anweisung \Macro{cleardoubleoddplainpage}% +\important{\IfThisCommonLabelBase{scrextend}{% + \DescRef{maincls.pagestyle.plain}}{\DescRef{\LabelBase.pagestyle.plain}}} +ändert demgegenüber den Seitenstil der leeren linken Seite zusätzlich auf +\IfThisCommonLabelBase{scrextend}{% + \DescRef{maincls.pagestyle.plain}}{\DescRef{\LabelBase.pagestyle.plain}}% +\IndexPagestyle{plain}, um den +\IfThisCommonLabelBase{scrlttr2}{Seitenkopf}{Kolumnentitel} zu +unterdrücken. Analog dazu wird bei der Anweisung +\Macro{cleardoubleoddemptypage}% +\important{% + \IfThisCommonLabelBase{scrextend}{\DescRef{maincls.pagestyle.empty}}{% + \DescRef{\LabelBase.pagestyle.empty}}} der Seitenstil +\IfThisCommonLabelBase{scrextend}{\DescRef{maincls.pagestyle.empty}}{% + \DescRef{\LabelBase.pagestyle.empty}}\IndexPagestyle{empty} verwendet, um +sowohl \IfThisCommonLabelBase{scrlttr2}{Seitenkopf als auch + Seitenfuß}{Kolumnentitel als auch Seitenzahl} auf der leeren linken Seite zu +unterdrücken. Die Seite ist damit vollständig leer. Will man für die +Vakatseite einen eigenen \PName{Seitenstil} vorgeben, so ist dieser als +Argument von \Macro{cleardoubleoddpageusingstyle} anzugeben. Dabei kann jeder +bereits definierte Seitenstil (siehe auch \autoref{cha:scrlayer-scrpage}) +verwendet werden. + +\IfThisCommonLabelBase{scrlttr2}{}{% + Manchmal\textnote{ungerade Vakatseiten} möchte man nicht, dass Kapitel mit + neuen rechten Seiten, sondern links auf einer Doppelseite beginnen. Dies + widerspricht zwar dem klassischen Buchdruck, kann jedoch seine Berechtigung + haben, wenn die Doppelseite am Kapitelanfang einen ganz speziellen Inhalt + hat. Bei \KOMAScript{} ist deshalb die Anweisung + \Macro{cleardoubleevenstandardpage} als Äquivalent zur Anweisung + \Macro{cleardoubleoddstandardpage} definiert, jedoch mit dem Unterschied, + dass die nächste Seite eine linke Seite ist. Entsprechendes gilt für die + Anweisungen \Macro{cleardoubleevenplainpage}, + \Macro{cleardoubleevenemptypage}% + \IfThisCommonLabelBase{maincls}{% Umbruchoptimierungsalternative + \ und für die ein Argument erwartende Anweisung}{,} + \Macro{cleardoubleevenpageusingstyle}.% +} + +Die Arbeitsweise der Anweisungen \Macro{cleardoublestandardpage}, +\Macro{cleardoubleemptypage}, \Macro{cleardoubleplainpage} und der ein +Argument erwartenden Anweisung \Macro{cleardoublepageusingstyle} % +\IfThisCommonLabelBase{maincls}{% + ist ebenso wie die Standard-Anweisung \Macro{cleardoublepage} von der in + \autoref{sec:maincls.structure}, \DescPageRef{maincls.option.open} erklärten + Option \DescRef{maincls.option.open}% + \IndexOption{open}\important{\DescRef{maincls.option.open}} abhängig und + entspricht je nach Einstellung einer der in den vorherigen Absätzen + erläuterten Anweisungen. + +}{% + entspricht \IfThisCommonLabelBase{scrlttr2}{bei der Klasse + \Class{scrlttr2}}{% + \IfThisCommonLabelBase{scrextend}{beim Paket \Package{scrextend}}{% + \InternalCommonFileUsageError}% + } ebenso wie die Standard-Anweisung \Macro{cleardoublepage} den + entsprechenden, zuvor erklärten Anweisungen% + \IfThisCommonLabelBase{scrlttr2}{. % + Die übrigen Anweisungen sind bei \Class{scrlttr2} nur aus Gründen der + Vollständigkeit definiert. Näheres zu diesen ist bei Bedarf + \autoref{sec:maincls.emptypage}, \DescPageRef{maincls.cmd.cleardoublepage} + zu entnehmen% + }{% + \ für den Umbruch zur nächsten ungeraden Seite% + }.% +}% +\IfThisCommonLabelBaseOneOf{scrlttr2,scrextend}{\iffalse}{\csname + iftrue\endcsname} + \begin{Example} + \phantomsection\xmpllabel{cmd.cleardoublepage}% + Angenommen, Sie wollen innerhalb eines Dokuments als nächstes eine + Doppelseite setzen, bei der auf der linken Seite eine Abbildung in Größe + des Satzspiegels platziert wird und rechts ein neues Kapitel + beginnt. Falls das vorherige Kapitel mit einer linken Seite endet, muss + also eine Vakatseite eingefügt werden. Diese soll komplett leer + sein. Ebenso soll die linke Bildseite weder Kopf noch Fußzeile + besitzen. +\iffalse% Umbruchkorrekturtext + Zunächst wird mit +\begin{lstcode} + \KOMAoptions{cleardoublepage=empty} +\end{lstcode} + dafür gesorgt, dass Vakatseiten mit dem Seitenstil + \IfThisCommonLabelBase{scrextend}{\DescRef{maincls.pagestyle.empty}}{% + \DescRef{\LabelBase.pagestyle.empty}}, also ohne Kopf- und Fußzeile + gesetzt + werden. Diese Einstellung können Sie bereits in der Dokumentpräambel + vornehmen. Die Optionen können alternativ auch als optionale Argumente von + \DescRef{\ThisCommonLabelBase.cmd.documentclass} angegeben werden. +\fi + + An der gewünschten Stelle +% \IfThisCommonLabelBase{scrextend}{}{im Dokument }% Umbruchoptimierung!!! + schreiben Sie daher:% mit dem Umbruchkorrekturtext oben statt daher nun: +\begin{lstcode} + \cleardoubleevenemptypage + \thispagestyle{empty} + \includegraphics[width=\textwidth,% + height=\textheight,% + keepaspectratio]% + {bild} + \chapter{Kapitelüberschrift} +\end{lstcode} + Die erste Zeile wechselt auf die nächste linke Seite und fügt zu diesem + Zweck bei Bedarf eine komplett leere rechte Seite ein. Die zweite Zeile + sorgt dafür, dass diese linke Seite ebenfalls mit dem Seitenstil + \IfThisCommonLabelBase{scrextend}{\DescRef{maincls.pagestyle.empty}}{% + \DescRef{\LabelBase.pagestyle.empty}} gesetzt wird. Die dritte bis + sechste Zeile lädt die Bilddatei mit dem Namen \File{bild} und bringt sie + auf die gewünschte Größe, ohne sie dabei zu verzerren. Hierfür wird das + Paket \Package{graphicx}\IndexPackage{graphicx} benötigt (siehe + \cite{package:graphics}). Die letzte Zeile beginnt auf der nächsten -- + dann rechten -- Seite ein neues Kapitel. + \end{Example}% +\fi + +Im doppelseitigen Satz führt \Macro{cleardoubleoddpage} immer zur nächsten +linken Seite, \Macro{cleardoubleevenpage} zur nächsten +rechten Seite. Eine gegebenenfalls einzufügenden Vakatseite wird mit dem +über Option \DescRef{\LabelBase.option.cleardoublepage} festgelegten +Seitenstil ausgegeben.% +\IfThisCommonLabelBase{scrextend}{\par% + Ein Beispiel für die Verwendung von \Macro{cleardoubleevenemptypage} finden + Sie in \autoref{sec:maincls.emptypage}, + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.cleardoublepage}.% +}{}% +\EndIndexGroup +% +\EndIndexGroup + + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "../guide" +%%% End: + +% LocalWords: Gleitumgebungen Seitenkopf Kolumnentitel Seitenfuß Bilddatei +% LocalWords: Satzspiegels Bildseite Dokumentpräambel Vakatseiten +% LocalWords: Vakatseite diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-lists.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-lists.tex new file mode 100644 index 0000000000..c907a664b7 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-lists.tex @@ -0,0 +1,856 @@ +% ====================================================================== +% common-lists.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-lists.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-lists.tex}% + [$Date: 2018-02-06 09:20:05 +0100 (Tue, 06 Feb 2018) $ + KOMA-Script guide (common paragraphs)] + +\section{Listen} +\seclabel{lists}% +\BeginIndexGroup +\BeginIndex{}{Listen}% + +\IfThisCommonFirstRun{}{% + Es gilt sinngemäß, was in \autoref{sec:\ThisCommonFirstLabelBase.lists} + geschrieben wurde. Falls Sie also + \autoref{sec:\ThisCommonFirstLabelBase.lists} bereits gelesen und verstanden + haben, können Sie auf \autopageref{sec:\ThisCommonLabelBase.lists.next} mit + \autoref{sec:\ThisCommonLabelBase.lists.next} fortfahren.% + \IfThisCommonLabelBaseOneOf{scrextend,scrlttr2}{ % + \IfThisCommonLabelBase{scrlttr2}{% + Das Paket \Package{scrletter}\OnlyAt{\Package{scrletter}} definiert + selbst keine Listenumgebungen, sondern überlässt diese der verwendeten + Klasse. Ist dies keine \KOMAScript-Klasse, so lädt es + \hyperref[cha:scrextend]{\Package{scrextend}}\IndexPackage{scrextend}% + \important{\hyperref[cha:scrextend]{\Package{scrextend}}}.% + }{} % + Allerdings werden vom Paket \Package{scrextend} nur die Umgebungen + \DescRef{\ThisCommonLabelBase.env.labeling}, + \DescRef{\ThisCommonLabelBase.env.addmargin} und + \DescRef{\ThisCommonLabelBase.env.addmargin*} definiert. Alle anderen + Listenumgebungen bleiben der Verantwortung % und Kontrolle + der verwendeten Klasse überlassen.% + }{}% +} + +\IfThisCommonLabelBase{scrextend}{}{% + {\LaTeX} und die Standardklassen\textnote{\KOMAScript{} vs. Standardklassen} + bieten verschiedene Umgebungen für Listen. All diese Umgebungen bietet + {\KOMAScript} selbstverständlich auch, teilweise jedoch mit leichten + Abwandlungen oder Erweiterungen. Grundsätzlich gilt, dass Listen -- auch + unterschiedlicher Art -- bis zu einer Tiefe von vier Listen geschachtelt + werden können. Eine tiefere Schachtelung wäre auch aus typografischen + Gründen kaum sinnvoll, da genau genommen schon mehr als drei Ebenen nicht + mehr überblickt werden können. Ich empfehle\textnote{Tipp!} in solchen + Fällen, die eine große Liste in mehrere kleinere Listen aufzuteilen.% +} + +\IfThisCommonFirstRun{}{% + Da Listen zu den Standardelementen von \LaTeX{} gehören, wurde in diesem + Abschnitt auf Beispiele verzichtet. Sie finden solche in + \autoref{sec:\ThisCommonFirstLabelBase.lists} ab + \autopageref{sec:\ThisCommonFirstLabelBase.lists} oder in jeder + \LaTeX-Einführung.% +} + + +\IfThisCommonLabelBase{scrextend}{\iffalse}{\csname iftrue\endcsname} + \begin{Declaration} + \begin{Environment}{itemize} + \begin{Body} + \Macro{item} \dots + \BodyDots + \end{Body} + \end{Environment} + \Macro{labelitemi} + \Macro{labelitemii} + \Macro{labelitemiii} + \Macro{labelitemiv} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{}Die einfachste + Form einer Liste ist die Stichpunkt-\textnote{Stichpunktliste} oder + \Environment{itemize}-Liste. % + \iffalse % Umbruchoptimierungstext + Die Benutzer einer unbeliebten Textverarbeitung nennen diese Form der Liste + auch gerne \emph{Bulletpoints}. Vermutlich können sie sich nicht vorstellen, + dass je nach Ebene auch ein anderes Zeichen als ein fetter Punkt zur + Einleitung eines Stichpunkts verwendet werden kann. % + \fi% + Bei den \KOMAScript-Klassen werden je nach Ebene folgende Aufzählungszeichen + zur Einleitung eines Listenelements verwendet: »{\labelitemi}«, + »{\labelitemii}«, »{\labelitemiii}« und »{\labelitemiv}«. Die Definition der + Zeichen für die einzelnen Ebenen sind in den Makros \Macro{labelitemi}, + \Macro{labelitemii}, \Macro{labelitemiii} und \Macro{labelitemiv} + abgelegt. Sie können diese leicht mit \Macro{renewcommand} umdefinieren. Die + einzelnen Stichpunkte werden mit \Macro{item} eingeleitet.% + \IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.itemize}% + Sie haben eine einfache Aufzählung, die in mehreren Ebenen geschachtelt + ist. Sie schreiben beispielsweise: +\begin{lstcode} + \minisec{Die Fahrzeuge im Spiel} + \begin{itemize} + \item Flugzeuge + \begin{itemize} + \item Doppeldecker + \item Transportmaschinen + \begin{itemize} + \item einmotorig + \begin{itemize} + \item{düsengetrieben} + \item{propellergetrieben} + \end{itemize} + \item zweimotorig + \begin{itemize} + \item{düsengetrieben} + \item{propellergetrieben} + \end{itemize} + \end{itemize} + \item Drehflügler + \end{itemize} + \item Motorräder + \item Automobile + \begin{itemize} + \item Rennwagen + \item Personenwagen + \item Lastwagen + \end{itemize} + \item Fahrräder + \end{itemize} + \end{itemize} +\end{lstcode} + Anschließend erhalten Sie: + \begin{ShowOutput}[\baselineskip] + \minisec{Die Fahrzeuge im Spiel} + \begin{itemize} + \item Flugzeuge + \begin{itemize} + \item Doppeldecker + % \item Jets + \item Transportmaschinen + \begin{itemize} + \item einmotorig + \begin{itemize} + \item{düsengetrieben} + \item{propellergetrieben} + \end{itemize} + \item zweimotorig + \begin{itemize} + \item{düsengetrieben} + \item{propellergetrieben} + \end{itemize} + \end{itemize} + \item Drehflügler + \end{itemize} + \item Motorräder + % \begin{itemize} + % \item historisch korrekt + % \item futurisch nicht real + % \end{itemize} + \item Automobile + \begin{itemize} + \item Rennwagen + \item Personenwagen + \item Lastwagen + \end{itemize} + \item Fahrräder + \end{itemize} + \end{ShowOutput} + \end{Example}% + \fi + % + \EndIndexGroup + + + \begin{Declaration} + \begin{Environment}{enumerate}\labelsuffix[enumerate] + \begin{Body} + \Macro{item} \dots + \BodyDots + \end{Body} + \end{Environment} + \Macro{theenumi} + \Macro{theenumii} + \Macro{theenumiii} + \Macro{theenumiv} + \Macro{labelenumi} + \Macro{labelenumii} + \Macro{labelenumiii} + \Macro{labelenumiv} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{}Die nummerierte + Liste\textnote{nummerierte Liste} ist ebenfalls sehr häufig zu finden und + bereits vom {\LaTeX}-Kern vorgesehen. Die Nummerierung\Index{Nummerierung} + erfolgt je nach Ebene in unterschiedlicher Art: mit arabischen Zahlen, mit + Kleinbuchstaben, mit kleinen römischen Zahlen und mit Großbuchstaben. Die + Art der Nummerierung wird dabei über die Makros \Macro{theenumi} bis + \Macro{theenumiv} festgelegt. Das Format der Ausgabe wird von den Makros + \Macro{labelenumi} bis \Macro{labelenumiv} bestimmt. Dabei folgt auf den + Wert der zweiten Ebene, der in Kleinbuchstaben ausgegeben wird, eine runde + Klammer, während die Werte aller anderen Ebenen von einem Punkt gefolgt + werden. Die einzelnen Stichpunkte werden wieder mit \Macro{item} + eingeleitet.% + \IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.enumerate}% + Verkürzen wir das vorherige Beispiel und verwenden statt der + \DescRef{\ThisCommonLabelBase.env.itemize}- eine + \Environment{enumerate}-Umgebung: + % Übernehmen wir das Beispiel der + % \DescRef{\LabelBase.env.itemize}-Umgebung, + % wobei wir jede \DescRef{\LabelBase.env.itemize}-Umgebung durch eine + % \Environment{enumerate}-Umgebung ersetzen. Das Ergebnis wäre dann: + \begin{ShowOutput}[\baselineskip] + \minisec{Die Fahrzeuge im Spiel} + \begin{enumerate} + \item Flugzeuge + \begin{enumerate} + \item Doppeldecker + % \item Jets + \item Transportmaschinen + \begin{enumerate} + \item einmotorig + \begin{enumerate} + \item{düsengetrieben}\label{xmp:maincls.jets} + \item{propellergetrieben} + \end{enumerate} + \item mehrmotorig + \end{enumerate} + % \item Drehflügler + \end{enumerate} + \item Motorräder + \begin{enumerate} + \item historisch korrekt + \item futurisch nicht real + \end{enumerate} + % \item Automobile + % \begin{enumerate} + % \item Rennwagen + % \item Personenwagen + % \item Lastwagen + % \end{enumerate} + % \item Fahrräder + \end{enumerate} + \end{ShowOutput} + Innerhalb der Aufzählung können ganz normal mit \Macro{label} Marken + gesetzt werden, auf die dann mit \Macro{ref} zugegriffen werden + kann. So wurde oben hinter den düsengetriebenen, einmotorigen + Flugzeugen mit »\Macro{label}\PParameter{bsp:duesen}« ein Label + gesetzt. Der \Macro{ref}-Wert ist dann »\ref{xmp:maincls.jets}«. + \end{Example}% + \fi + % + \EndIndexGroup + + + \begin{Declaration} + \begin{Environment}{description}\labelsuffix[description] + \begin{Body} + \Macro{item}\OParameter{Stichwort} \dots + \BodyDots + \end{Body} + \end{Environment} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{}Eine weitere + Listenform ist die Stichwortliste\textnote{Stichwortliste}. Sie dient in + erster Linie der Beschreibung einzelner Begriffe. Diese werden als optionale + Parameter bei \Macro{item} angegeben. % + \BeginIndex{FontElement}{descriptionlabel}% + \LabelFontElement{descriptionlabel}% + Die Schriftart\Index{Schrift>Art}\ChangedAt{v2.8p}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}}, die für die Hervorhebung des + Stichworts verwendet wird, kann außerdem bei den \KOMAScript-Klassen mit + Hilfe der Anweisungen \DescRef{\ThisCommonLabelBase.cmd.setkomafont} und + \DescRef{\ThisCommonLabelBase.cmd.addtokomafont} (siehe + \autoref{sec:\ThisCommonLabelBase.textmarkup}, + \DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}) für das Element + \FontElement{descriptionlabel}\important{\FontElement{descriptionlabel}} + (siehe \autoref{tab:\ThisCommonLabelBase.fontelements}, + \autopageref{tab:\ThisCommonLabelBase.fontelements}) geändert werden. In der + Voreinstellung wird \Macro{sffamily}""\Macro{bfseries} verwendet.% + \IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.description}% + Sie wollen, dass die Stichworte statt serifenlos und fett lediglich + fett, aber in der Standardschriftart ausgegeben werden. Mit +\begin{lstcode} + \setkomafont{descriptionlabel}{\normalfont + \bfseries} +\end{lstcode} + definieren Sie daher die Schrift entsprechend um. + + Ein Beispiel für die Ausgabe einer Stichwortliste ist eine Aufzählung + der Seitenstile. Der Quelltext dazu lautet beispielsweise: +\begin{lstcode} + \begin{description} + \item[empty] ist der Seitenstil, bei dem Kopf- + und Fußzeile vollständig leer bleiben. + \item[plain] ist der Seitenstil, bei dem + keinerlei Kolumnentitel verwendet wird. + \item[headings] ist der Seitenstil für + automatische Kolumnentitel. + \item[myheadings] ist der Seitenstil für + manuelle Kolumnentitel. + \end{description} +\end{lstcode} + Diese ergibt: + \begin{ShowOutput} + \begin{description} + \item[empty] ist der Seitenstil, bei dem Kopf- und + Fußzeile vollständig leer bleiben. + \item[plain] ist der Seitenstil, bei dem keinerlei + Kolumnentitel verwendet wird. + \item[headings] ist der Seitenstil für automatische + Kolumnentitel. + \item[myheadings] ist der Seitenstil für manuelle + Kolumnentitel. + \end{description} + \end{ShowOutput} + \end{Example}% + \fi + % + \EndIndexGroup% +\fi + +\begin{Declaration} + \begin{Environment}{labeling}\OParameter{Trennzeichen} + \Parameter{längstes Schlüsselwort} + \labelsuffix[labeling] + \begin{Body} + \Macro{item}\OParameter{Stichwort} \dots + \BodyDots + \end{Body} + \end{Environment} +\end{Declaration}% +Eine andere Form der % +\IfThisCommonLabelBase{scrextend}{% + in vielen Klassen als + \DescRef{\ThisCommonFirstLabelBase.env.description}-Umgebung vorhandenen % +}{}% +Stichwortliste\textnote{alternative Stichwortliste} ist nur bei den +{\KOMAScript}-Klassen % +\IfThisCommonLabelBase{scrextend}{ und \Package{scrextend} }{% + \IfThisCommonLabelBase{scrlttr2}{ und + \hyperref[cha:scrextend]{\Package{scrextend}} }{}% +}% +vorhanden: die \Environment{labeling}-Umgebung. Im Unterschied +\IfThisCommonLabelBase{scrextend}{zu}{zur zuvor vorgestellten Umgebung} % +\IfThisCommonLabelBase{scrextend}{% + \DescRef{\ThisCommonFirstLabelBase.env.description}% +}{% + \DescRef{\ThisCommonLabelBase.env.description}% +} kann bei \Environment{labeling} ein Muster angegeben werden, dessen Länge +die Einrücktiefe bei allen Stichpunkten ergibt. Darüber hinaus kann zwischen +Stichpunkt und Beschreibungstext ein optionales \PName{Trennzeichen} +festgelegt werden. % +\BeginIndexGroup +\BeginIndex{FontElement}{labelinglabel}\LabelFontElement{labelinglabel}% +\BeginIndex{FontElement}{labelingseparator}% +\LabelFontElement{labelingseparator}% +Die Schriftart\Index{Schrift>Art}% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.02}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.02}{\Class{scrlttr2}}% + }{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.02}{\Package{scrextend}}% + }{\InternalCommonFileUsageError}% + }% +}% +, die für die Hervorhebung des Schlüsselworts verwendet wird, kann mit Hilfe +der Anweisungen \DescRef{\ThisCommonLabelBase.cmd.setkomafont} und +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}) für das Element +\FontElement{labelinglabel}\IndexFontElement{labelinglabel} (siehe +\autoref{tab:\ThisCommonLabelBase.fontelements}, +\autopageref{tab:\ThisCommonLabelBase.fontelements}) geändert werden. Für die +davon abweichende Schriftart der Trennzeichen ist das Element +\FontElement{labelingseparator}\IndexFontElement{labelingseparator} (siehe +ebenfalls \autoref{tab:\ThisCommonLabelBase.fontelements}, +\autopageref{tab:\ThisCommonLabelBase.fontelements}) zuständig. +\IfThisCommonFirstRun{\iftrue}{\par\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.labeling}% + \IfThisCommonLabelBase{scrextend}{% + Eine einfache Liste könnte beispielsweise wie folgt definiert werden:% + }{% + Wir schreiben das Beispiel der + \DescRef{\ThisCommonLabelBase.env.description}-Umgebung etwas um:% + }% +\begin{lstcode} + \setkomafont{labelinglabel}{\ttfamily} + \setkomafont{labelingseparator}{\normalfont} + \begin{labeling}[~--]{myheadings} + \item[empty] + Seitenstil für leere Seiten ohne Kopf und Fuß + \item[plain] + Seitenstil für Kapitelanfänge ganz ohne + Kolumnentitel + \item[headings] + Seitenstil für automatische Kolumnentitel + \item[myheadings] + Seitenstil für manuelle Kolumnentitel + \end{labeling} +\end{lstcode} + Als Ergebnis erhalten wir dann: + \begin{ShowOutput} + \setkomafont{labelinglabel}{\ttfamily} + \setkomafont{labelingseparator}{\normalfont} + \begin{labeling}[~--]{myheadings} + \item[empty] + Seitenstil für leere Seiten ohne Kopf und Fuß + \item[plain] + Seitenstil für Kapitelanfänge ganz ohne + Kolumnentitel + \item[headings] + Seitenstil für automatische Kolumnentitel + \item[myheadings] + Seitenstil für manuelle Kolumnentitel + \end{labeling} + \end{ShowOutput} + Wie in diesem Beispiel zu sehen ist, kann eine eventuell geforderte + Schriftumschaltung in bei \KOMAScript{} gewohnter Weise erreicht + werden. Da sich die Schriftumschaltung für das Schlüsselwort aber auch auf + die Trennzeichen auswirkt, kann es eventuell erforderlich sein, die + Schriftumschaltung dafür explizit aufzuheben. + \end{Example} +\fi +\EndIndexGroup +Gedacht war die Umgebung ursprünglich für Strukturen wie »Voraussetzung, +Aussage, Beweis« oder »Gegeben, Gesucht, Lösung«, wie man sie in +Vorlesungsskripten häufiger findet. Inzwischen findet die Umgebung aber ganz +unterschiedliche Anwendungen. So wurde die Umgebung für Beispiele in dieser +Anleitung mit Hilfe der \Environment{labeling}-Umgebung definiert.% +\EndIndexGroup + + +\IfThisCommonLabelBase{scrextend}{\iffalse}{\csname iftrue\endcsname} + \begin{Declaration} + \begin{Environment}{verse}\end{Environment} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{}Die + \Environment{verse}-Umgebung\textnote{Versform} wird normalerweise nicht als + Listenumgebung wahrgenommen, da hier nicht mit \Macro{item} gearbeitet + wird. Stattdessen wird wie innerhalb der \Environment{flushleft}-Umgebung + mit festen Zeilenumbrüchen gearbeitet. Intern handelt es sich jedoch sowohl + bei den Standardklassen als auch bei {\KOMAScript} durchaus um eine + Listenumgebung. + + Die \Environment{verse}-Umgebung findet hauptsächlich für + Gedichte\Index{Gedichte} Anwendung. Dabei werden die Zeilen links und rechts + eingezogen. Einzelne Verse werden mit einem festen Zeilenumbruch, also mit + \verb|\\|\IndexCmd{\textbackslash} beendet. Strophen werden ganz normal als + Absatz gesetzt, also durch eine Leerzeile getrennt. Häufig findet + stattdessen auch \Macro{medskip}\IndexCmd{medskip} oder + \Macro{bigskip}\IndexCmd{bigskip} Verwendung. Will man verhindern, dass am + Ende eines Verses ein Seitenumbruch\textnote{Seitenumbruch} erfolgt, so + verwendet man ganz normal \verb|\\*|\IndexCmd{\textbackslash*} anstelle von + \verb|\\|.% + \IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.verse}% + Als Beispiel ein kurzes Gedicht von Wilhelm Busch: +\begin{lstcode} + \begin{verse} + Wenn einer, der mit Mühe kaum\\* + Gekrochen ist auf einen Baum,\\* + Schon meint, dass er ein Vogel wär,\\* + So irrt sich der. + \end{verse} +\end{lstcode} + Mit dem Resultat: + \begin{ShowOutput} + \iffree{}{\vskip-.8\baselineskip}% Umbruchkorrektur + \begin{verse} + Wenn einer, der mit Mühe kaum\\* + Gekrochen ist auf einen Baum,\\* + Schon meint, dass er ein Vogel wär,\\* + So irrt sich der. + \end{verse} + \end{ShowOutput} + Bei einem sehr langen Vers wie: +\begin{lstcode} + \begin{verse} + Der Philosoph wie der Hausbesitzer hat + immer Reparaturen.\\* + \bigskip + Wer dir sagt, er hätte noch nie gelogen, + dem traue nicht, mein Sohn. + \end{verse} +\end{lstcode} + bei dem ein Zeilenumbruch innerhalb des Verses erfolgt: + \begin{ShowOutput} + \iffree{}{\vskip-.8\baselineskip}% Umbruchkorrektur + \begin{verse} + Der Philosoph wie der Hausbesitzer hat immer Reparaturen.\\ + \bigskip + Wer dir sagt, er hätte noch nie gelogen, dem traue nicht, mein + Sohn. + \end{verse} + \end{ShowOutput} + kann mit \verb|\\*| allerdings nicht verhindert werden, dass am + Zeilenumbruch auch ein Seitenumbruch erfolgt. Um dies zu erreichen, + müsste innerhalb der ersten Zeile zusätzlich ein + \Macro{nopagebreak}\IndexCmd{nopagebreak} eingefügt werden: +\begin{lstcode} + \begin{verse} + Der Philosoph wie der Hausbesitzer\nopagebreak{} + hat immer Reparaturen.\\ + \bigskip + Wer dir sagt, er hätte noch nie\nopagebreak{} + gelogen, dem traue nicht, mein Sohn. + \end{verse} +\end{lstcode} + \iftrue% Umbruchkorrekturtext + Hier noch zwei Sprüche, die man immer bedenken sollte, wenn man mit + scheinbar seltsamen Fragen zu {\LaTeX} oder den dazugehörigen Antworten + konfrontiert ist: +\begin{lstcode} + \begin{verse} + Wir mögen's keinem gerne gönnen,\\* + Dass er was kann, was wir nicht können.\\ + \bigskip + Wie klein ist das, was einer ist,\\* + Wenn man's mit seinem Dünkel misst. + \end{verse} +\end{lstcode} + \begin{ShowOutput} + \iffree{}{\vskip-.8\baselineskip}% Umbruchkorrektur + \begin{verse} + Wir mögen's keinem gerne gönnen,\\* + Dass er was kann, was wir nicht können.\\ + \bigskip + Wie klein ist das, was einer ist,\\* + Wenn man's mit seinem Dünkel misst. + \end{verse} + \end{ShowOutput} + \fi + In diesen Beispielen wurde übrigens jeweils \Macro{bigskip} verwendet, + um zwei Sprüche voneinander zu trennen. + \end{Example}% + \fi + % + \EndIndexGroup + + + \iftrue% Umbruchkorrekturvarianten + \begin{Declaration} + \begin{Environment}{quote}\end{Environment} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{}Dies ist + intern ebenfalls eine Listenumgebung\textnote{Blockzitat mit + Absatzabstand} und sowohl bei den Standardklassen als auch bei + {\KOMAScript} zu finden. Der Inhalt der Umgebung wird im Blocksatz mit + beidseitigem Einzug gesetzt. Die Umgebung wird häufig verwendet, um + längere Zitate\Index{Zitat} abzusetzen. Dabei werden Absätze innerhalb der + Umgebung durch einen vertikalen Abstand gekennzeichnet.% + \EndIndexGroup + + \begin{Declaration} + \begin{Environment}{quotation}\end{Environment} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{}Diese + Umgebung\textnote{Blockzitat mit Absatzeinzug} ist mit + \DescRef{\ThisCommonLabelBase.env.quote} vergleichbar. Während bei + \DescRef{\ThisCommonLabelBase.env.quote} Absätze durch vertikalen Abstand + gekennzeichnet werden, wird bei \Environment{quotation} mit horizontalem + Einzug der ersten Zeile eines Absatzes gearbeitet. Dies gilt auch für den + ersten Absatz einer \Environment{quotation}-Umgebung. Wollen Sie dort den + Einzug verhindern, müssen Sie die + \Macro{noindent}-Anweisung\IndexCmd{noindent} voranstellen.% + \else + \begin{Declaration} + \begin{Environment}{quote}\end{Environment} + \begin{Environment}{quotation}\end{Environment} + \end{Declaration}% + \IfThisCommonLabelBase{scrlttr2}{\OnlyAt{\Class{scrlttr2}}}{}Diese beiden + Umgebungen\textnote{Blockzitate} sind intern ebenfalls Listenumgebungen + und sowohl bei den Standardklassen als auch bei {\KOMAScript} zu finden. + Beide Umgebungen setzen Blocksatz, der rechts und links eingezogen + ist. Verwendet werden die Umgebungen häufig, um längere + Zitate\Index{Zitat} abzusetzen. Der Unterschied zwischen beiden liegt in + der Art und Weise, wie Absätze abgesetzt werden. Während bei + \Environment{quote} Absätze durch vertikalen Abstand gekennzeichnet + werden, wird bei \Environment{quotation} mit horizontalem Einzug der + ersten Zeile eines Absatzes gearbeitet. Dies gilt auch für den ersten + Absatz einer \Environment{quotation}-Umgebung% Umbruchkorrektur + \IfThisCommonLabelBase{maincls}{% + , außer es wird \Macro{noindent}\IndexCmd{noindent} vorangestellt.% + }{% + \IfThisCommonLabelBase{scrlttr2}{% + . Wollen Sie dort den Einzug verhindern, müssen Sie die + \Macro{noindent}-Anweisung\IndexCmd{noindent} voranstellen.% + }{\InternalCommonFileUsageError}% + }% + \fi % Umbruchkorrekturvarianten + \IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.quote}% + Sie wollen eine kleine Anekdote hervorheben. Also schreiben Sie + unter Verwendung der Umgebung \Environment{quotation}:% +\begin{lstcode} + \documentclass[paper=a5,pagesize]{scrartcl} + \usepackage{selinput} + \SelectInputMappings{adieresis={ä},germandbls={ß}} + \usepackage[ngerman]{babel} + \begin{document} + Ein kleines Beispiel für eine Anekdote, die sich + einst in Schwaben zugetragen haben soll: + \begin{quotation} + Es klingelt an der Tür eines Pfarrhauses in + Stuttgart. Als die Haushälterin öffnet, steht + ein unrasierter Mann in reichlich schäbigem + Mantel vor der Tür und hält seine Strickmütze + in der Hand. + + "`Gute Frau,"' verkündet der Mann in gequältem + Ton, doch bestem Hochdeutsch, + "`ich habe seit drei Tagen nichts mehr + gegessen."' + + Die Frau schüttelt mitleidig den Kopf und + entgegnet im Brustton vollster Überzeugung: + + "`Guda Moh, Sie missat sich halt zwinga!"' + \end{quotation} + \end{document} +\end{lstcode} + Das Ergebnis könnte dann so aussehen: + \begin{ShowOutput} + \iftrue% Umbruchkorrekturtext + Ein kleines Beispiel für eine Anekdote, die sich einst + in Schwaben zugetragen haben soll: + \fi + \begin{quotation} + Es klingelt an der Tür eines Pfarrhauses in + Stuttgart. Als die Haushälterin öffnet, steht ein + unrasierter Mann in reichlich schäbigem + Mantel vor der Tür und hält seine Strickmütze in + der Hand. + + "`Gute Frau,"' verkündet der Mann in gequältem Ton, + doch bestem Hochdeutsch, + \iffalse% Umbruchkorrekturtext + während er verlegen von einem Bein auf das andere wechselt, + \fi + "`ich habe + seit drei Tagen nichts mehr gegessen."' + + Die Frau schüttelt mitleidig den Kopf und entgegnet + im Brustton vollster Überzeugung: + + "`Guda Moh, Sie missat sich halt zwinga!"' + \end{quotation} + \end{ShowOutput}% + \iffree{}{\IfThisCommonLabelBase{maincls}{\clearpage}{}}% Umbruchkorrektur!!!! + Zum Vergleich sei das Ganze anstelle von \Environment{quotation} auch + noch mit einer \DescRef{\LabelBase.env.quote}-Umgebung gezeigt:% + \begin{ShowOutput} + \iftrue% Umbruchkorrekturtext + Ein kleines Beispiel für eine Anekdote, die sich einst + in Schwaben zugetragen haben soll: + \fi + \begin{quote}\setlength{\parskip}{4pt plus 2pt minus 2pt} + Es klingelt an der Tür eines Pfarrhauses in Stuttgart. Als die + Haushälterin öffnet, steht ein unrasierter Mann in reichlich + schäbigem Mantel vor der Tür und hält seine Strickmütze in der Hand. + + "`Gute Frau,"' verkündet der Mann in gequältem Ton, doch bestem + Hochdeutsch, + \iffalse% Umbruchkorrekturtext + während er verlegen von einem Bein auf das andere wechselt, + \fi + "`ich habe seit drei Tagen nichts mehr gegessen."' + + Die Frau schüttelt mitleidig den Kopf und entgegnet im Brustton + vollster Überzeugung: + + "`Guda Moh, Sie missat sich halt zwinga!"' + \end{quote} + \end{ShowOutput} + % + \end{Example}% + \fi + % + \EndIndexGroup +\fi + +\begin{Declaration} + \begin{Environment}{addmargin}\OParameter{linker Einzug}\Parameter{Einzug} + \end{Environment} + \begin{Environment}{addmargin*}\OParameter{innerer Einzug}\Parameter{Einzug} + \end{Environment} +\end{Declaration} +Wie bei % +\IfThisCommonLabelBase{scrextend}{% + den in den Standardklassen und den \KOMAScript-Klassen vorhandenen + Umgebungen \DescRef{\ThisCommonFirstLabelBase.env.quote} und + \DescRef{\ThisCommonFirstLabelBase.env.quotation}% +}{% + \DescRef{\ThisCommonLabelBase.env.quote} und + \DescRef{\ThisCommonLabelBase.env.quotation}% +} % +handelt\textnote{allgemeine Einzugsumgebung} es sich bei +\Environment{addmargin} um eine Umgebung, die den Rand\Index{Rand} +verändert. Im Unterschied zu den beiden erstgenannten Umgebungen kann der +Anwender jedoch bei \Environment{addmargin} wählen, um welchen Wert der Rand +verändert werden soll. Des Weiteren verändert die Umgebung den Absatzeinzug +und den Absatzabstand nicht. Es wird auch kein zusätzlicher vertikaler Abstand +vor und nach der Umgebung eingefügt. + +Ist nur das obligatorische Argument \PName{Einzug} angegeben, so wird der +Inhalt der Umgebung rechts und links um diesen Wert eingezogen. Ist das +optionale Argument \PName{linker Einzug} hingegen angegeben, so wird links +abweichend von \PName{Einzug} der Wert \PName{linker Einzug} zum Rand addiert. + +Die Sternvariante \Environment{addmargin*}\important{\Environment{addmargin*}} +unterscheidet sich nur im doppelseitigen Satz von der Variante ohne Stern, +wobei der Unterschied auch nur dann auf"|tritt, wenn das optionale Argument +\PName{innerer Einzug} verwendet wird. Dabei wird dann der Wert von +\PName{innerer Einzug} zum inneren Randanteil der Seite addiert. Dies ist bei +rechten Seiten der linke Rand der Seite, bei linken Seiten jedoch der rechte +Rand der Seite. \PName{Einzug} gilt dann für den jeweils anderen Rand. + +Bei beiden Varianten der Umgebung sind für alle Parameter auch negative Werte +erlaubt. % Umbruchkorrektur +\IfThisCommonLabelBase{scrextend}{% + Die Umgebung ragt dann entsprechend in den Rand hinein.% +}{% + Damit kann man erreichen, dass die Umgebung in den Rand hineinragt.% +}% +\IfThisCommonFirstRun{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{env.addmargin}% + Angenommen, Sie schreiben eine Anleitung mit kurzen + Quellcode-Beispielen. Um diese sehr stark hervorzuheben, sollen sie mit + horizontalen Linien vom Text abgesetzt und leicht in den äußeren Rand + verschoben werden. Sie definieren sich dafür zunächst eine Umgebung: +\begin{lstcode} + \newenvironment{QuellcodeRahmen}{% + \begin{addmargin*}[1em]{-1em}% + \begin{minipage}{\linewidth}% + \rule{\linewidth}{2pt}% + }{% + \rule[.25\baselineskip]{\linewidth}{2pt}% + \end{minipage}% + \end{addmargin*}% + } +\end{lstcode} + \begin{ShowOutput} + \newenvironment{QuellcodeRahmen}{% + \begin{addmargin*}[1em]{-1em}% + \begin{minipage}{\linewidth}% + \rule{\linewidth}{2pt}% + }{% + \rule[.25\baselineskip]{\linewidth}{2pt}% + \end{minipage}% + \end{addmargin*}% + } + Zur Demonstration sei die Definition der Umgebung in der Umgebung selbst + gesetzt: + \begin{QuellcodeRahmen} +\begin{lstcode} +\newenvironment{\QuellcodeRahmen}{% + \begin{addmargin*}[1em]{-1em}% + \begin{minipage}{\linewidth}% + \rule{\linewidth}{2pt}% +}{% + \rule[.25\baselineskip]{\linewidth}{2pt}% + \end{minipage}% + \end{addmargin*}% +} +\end{lstcode} + \end{QuellcodeRahmen} + Nicht zwingend schön, aber es zeigt den Nutzen. + \end{ShowOutput} + Das optionale Argument der \Environment{addmargin*}-Umgebung sorgt dafür, + dass der innere Rand um den Wert 1\Unit{em} vergrößert wird. Dafür wird + der äußere Rand um den negativen Wert vergrößert, also in Wirklichkeit um + 1\Unit{em} verkleinert. Dies resultiert in einer Verschiebung um + 1\Unit{em} nach außen. Selbstverständlich kann statt \PValue{1em} auch + eine Länge, beispielsweise \PValue{2\Macro{parindent}}, verwendet werden. + \end{Example} +\fi% + +Ob eine Seite eine linke oder eine rechte Seite ist, kann übrigens beim ersten +\LaTeX-Durchlauf nicht zuverlässig festgestellt werden. Siehe dazu die +Erklärungen zu den Anweisungen +\DescRef{\ThisCommonLabelBase.cmd.ifthispageodd} +(\autoref{sec:\ThisCommonLabelBase.oddOrEven}, +\DescPageRef{\ThisCommonLabelBase.cmd.ifthispageodd}) und +\iffree{\Macro{ifthispagewasodd}}{% + \DescRef{maincls-experts.cmd.ifthispagewasodd}} +(\autoref{sec:maincls-experts.addInfos}, +\DescPageRef{maincls-experts.cmd.ifthispageodd}).% +\IfThisCommonLabelBase{scrlttr2}{}{% +\begin{Explain} + Im Zusammenspiel von % Umgebungen wie + Listen mit Absätzen ergeben sich für + Laien häufiger Fragen. Daher widmet sich die weiterführende Erklärung zu + Option \DescRef{maincls-experts.option.parskip} in + \autoref{sec:maincls-experts.addInfos}, + \DescPageRef{maincls-experts.option.parskip} auch diesem + Thema. Ebenfalls im Expertenteil in \autoref{sec:maincls-experts.addInfos}, + \DescPageRef{maincls-experts.env.addmargin*} wird die Problematik von + mehrseitigen \Environment{addmargin*}-Umgebungen behandelt. +\end{Explain}}% +% +\EndIndexGroup +% +\EndIndexGroup + + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-marginpar.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-marginpar.tex new file mode 100644 index 0000000000..ee80633693 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-marginpar.tex @@ -0,0 +1,153 @@ +% ====================================================================== +% common-marginpar.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-marginpar.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-marginpar.tex} + [$Date: 2018-01-29 14:12:59 +0100 (Mon, 29 Jan 2018) $ + KOMA-Script guide (common paragraphs)] + + + + +\section{Randnotizen} +\seclabel{marginNotes}% +\BeginIndexGroup +\BeginIndex{}{Randnotizen}% + +\IfThisCommonFirstRun{}{% + Es gilt sinngemäß, was in + \autoref{sec:\ThisCommonFirstLabelBase.marginNotes} geschrieben wurde. Falls + Sie also \autoref{sec:\ThisCommonFirstLabelBase.marginNotes} bereits gelesen + und verstanden haben, können Sie auf + \autopageref{sec:\ThisCommonLabelBase.marginNotes.next} mit + \autoref{sec:\ThisCommonLabelBase.marginNotes.next} fortfahren.% +} + +Außer dem eigentlichen Textbereich, der normalerweise den Satzspiegel +ausfüllt, existiert in Dokumenten noch die sogenannte Marginalienspalte. In +dieser können Randnotizen gesetzt werden. % +\IfThisCommonLabelBase{scrlttr2}{% + Bei Briefen sind Randnotizen allerdings eher unüblich und sollten äußerst + sparsam eingesetzt werden.% +}{% + In diesem \iffree{Dokument}{Buch} wird davon ebenfalls Gebrauch gemacht.% +}% + + +\begin{Declaration} + \Macro{marginpar}\OParameter{Randnotiz links}\Parameter{Randnotiz} + \Macro{marginline}\Parameter{Randnotiz} +\end{Declaration}% +Für Randnotizen\Index[indexmain]{Randnotizen} ist bei {\LaTeX} normalerweise +Anweisung \Macro{marginpar} vorgesehen. Die \PName{Randnotiz} wird dabei im +äußeren Rand gesetzt. Bei einseitigen Dokumenten wird der rechte Rand +verwendet. Zwar kann bei \Macro{marginpar} optional eine abweichende Randnotiz +angegeben werden, falls die Randnotiz im linken Rand landet, jedoch werden +Randnotizen immer im Blocksatz ausgegeben. Die Erfahrung zeigt, dass bei +Randnotizen statt des Blocksatzes oft je nach Rand linksbündiger oder +rechtsbündiger Flattersatz zu bevorzugen ist. {\KOMAScript} bietet hierfür +die Anweisung \Macro{marginline}. + +\IfThisCommonFirstRun{% + \iftrue% +}{% + Ein ausführliches Beispiel hierzu finden Sie in + \autoref{sec:\ThisCommonFirstLabelBase.marginNotes}, + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.marginline}.% + \csname iffalse\endcsname% +}% + \begin{Example} + \phantomsection\xmpllabel{cmd.marginline}% + In diesem \iffree{Dokument}{Buch} ist an einigen Stellen die + Klassenangabe \Class{scrartcl} + im Rand zu finden. Diese kann mit: +\begin{lstcode} + \marginline{\texttt{scrartcl}} +\end{lstcode} + erreicht werden.% + \iftrue % Umbruchkorrekturtext + \footnote{Tatsächlich wurde nicht \Macro{texttt}, + sondern eine semantische Auszeichnung verwendet. Um nicht unnötig + zu verwirren, wurde diese im Beispiel ersetzt.}% + \fi + + Statt der Anweisung \Macro{marginline} wäre auch die Verwendung von + \Macro{marginpar} möglich gewesen. Tatsächlich wird bei obiger Verwendung + von \Macro{marginline} intern nichts anders gemacht als: +\begin{lstcode} + \marginpar[\raggedleft\texttt{scrartcl}] + {\raggedright\texttt{scrartcl}} +\end{lstcode} + Damit ist \Macro{marginline} also nur eine abkürzende Schreibweise.% + \end{Example}% +\fi + +Für\textnote{Achtung!} Experten sind in +\autoref{sec:maincls-experts.addInfos}, +\DescPageRef{maincls-experts.cmd.marginpar} Probleme bei der Verwendung von +\Macro{marginpar} dokumentiert. Diese gelten ebenso für \Macro{marginline}. +Darüber hinaus wird in \autoref{cha:scrlayer-notecolumn} ein Paket +vorgestellt, mit dem sich auch Notizspalten mit eigenem Seitenumbruch +realisieren lassen.% +\iftrue% Umbruchkorrektur + \ Allerdings ist das Paket + \hyperref[cha:scrlayer-notecolumn]{\Package{scrlayer-notecolumn}}% + \IndexPackage{scrlayer-notecolumn} eher als + eine Konzeptstudie und weniger als fertiges Paket zu verstehen.% +\fi% +% +\EndIndexGroup +% +\EndIndexGroup + + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-oddorevenpage.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-oddorevenpage.tex new file mode 100644 index 0000000000..71dc74663e --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-oddorevenpage.tex @@ -0,0 +1,139 @@ +% ====================================================================== +% common-oddorevenpage.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-oddorevenpage.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-oddorevenpage.tex} + [$Date: 2018-01-30 09:32:50 +0100 (Tue, 30 Jan 2018) $ + KOMA-Script guide (common paragraphs)] + +\section{Erkennung von rechten und linken Seiten} +\seclabel{oddOrEven}% +\BeginIndexGroup +\BeginIndex{}{Seiten>gerade}% +\BeginIndex{}{Seiten>ungerade}% + +\IfThisCommonFirstRun{}{% + Es gilt sinngemäß, was in + \autoref{sec:\ThisCommonFirstLabelBase.oddOrEven} geschrieben + wurde. Falls Sie also \autoref{sec:\ThisCommonFirstLabelBase.oddOrEven} + bereits gelesen und verstanden haben, können Sie in + \autoref{sec:\ThisCommonLabelBase.oddOrEven.next} auf + \autopageref{sec:\ThisCommonLabelBase.oddOrEven.next} fortfahren.% +} + +Bei doppelseitigen Dokumenten wird zwischen linken und rechten Seiten +unterschieden. Dabei hat eine linke Seite immer eine gerade Nummer und eine +rechte Seite immer eine ungerade Nummer. % +\IfThisCommonLabelBase{maincls}{% + Die Erkennung von rechten und linken Seiten ist damit + gleichbedeutend mit der Erkennung von Seiten mit gerader oder ungerader + Nummer. In \iffree{dieser Anleitung}{diesem Buch} ist vereinfachend von + ungeraden und geraden Seiten die Rede.% + + % Umbruchkorrekturtext + \iftrue% + Bei einseitigen Dokumenten existiert die Unterscheidung zwischen linken + und rechten Seiten nicht. Dennoch gibt es natürlich auch bei einseitigen + Dokumenten sowohl Seiten mit gerader als auch Seiten mit ungerader + Nummer.% + \fi% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + In der Regel werden Briefe einseitig gesetzt. Sollen Briefe mit + einseitigem Layout jedoch auf Vorder- und Rückseite gedruckt oder + ausnahmsweise tatsächlich doppelseitige Briefe erstellt werden, kann unter + Umständen das Wissen, ob man sich auf einer Vorder- oder einer Rückseite + befindet, nützlich sein.% + }{}% +} + +\begin{Declaration} + \Macro{ifthispageodd}\Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration}% +Will man bei \KOMAScript{} feststellen, ob ein Text auf einer geraden oder +einer ungeraden Seite ausgegeben wird, so verwendet man die Anweisung +\Macro{ifthispageodd}. Dabei wird das Argument \PName{Dann-Teil} nur dann +ausgeführt, wenn man sich aktuell auf einer ungeraden Seite +befindet. Anderenfalls kommt das Argument \PName{Sonst-Teil} zur Anwendung. + +\begin{Example} + Angenommen, Sie wollen einfach nur ausgeben, ob ein Text auf einer geraden + oder ungeraden Seite ausgegeben wird. Sie könnten dann beispielsweise mit + der Eingabe +\begin{lstcode} + Dies ist eine Seite mit + \ifthispageodd{un}{}gerader Seitenzahl. +\end{lstcode} + \iffree{}{mit leerem \PName{Sonst-Teil} }% Umbruchkorrekturtext!!! + die Ausgabe + \begin{quote} + Dies ist eine Seite mit \ifthispageodd{un}{}gerader Seitenzahl. + \end{quote} + erhalten.\iffree{ Beachten Sie, dass in diesem Beispiel das Argument + \PName{Sonst-Teil} leer geblieben ist.}{}% Umbruchkorrekturtext!!! +\end{Example} + +Da die Anweisung \Macro{ifthispageodd} mit einem Mechanismus arbeitet, der +einem Label und einer Referenz darauf sehr ähnlich ist, werden nach jeder +Textänderung mindestens zwei \LaTeX-Durchläufe benötigt. Erst dann ist die +Entscheidung korrekt. Im ersten Durchlauf wird für die +Entscheidung eine Heuristik verwendet. + +Näheres zur Problematik der Erkennung von linken und rechten Seiten oder +geraden und ungeraden Seitennummern ist für Experten in +\autoref{sec:maincls-experts.addInfos}, +\DescPageRef{maincls-experts.cmd.ifthispageodd} zu finden.% +% +\EndIndexGroup +% +\EndIndexGroup + + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-options.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-options.tex new file mode 100644 index 0000000000..433dfb2e67 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-options.tex @@ -0,0 +1,248 @@ +% ====================================================================== +% common-options.tex +% Copyright (c) Markus Kohm, 2001-2017 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-options.tex +% Copyright (c) Markus Kohm, 2001-2017 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-options.tex} + [$Date: 2018-10-23 08:59:49 +0200 (Tue, 23 Oct 2018) $ + KOMA-Script guide (common paragraphs)] + +\section{Frühe oder späte Optionenwahl} +\seclabel{options} +\BeginIndexGroup +\BeginIndex{}{Optionen}% + +\IfThisCommonFirstRun{% + In diesem Abschnitt wird eine Besonderheit von \KOMAScript{} vorgestellt, die + neben % + \IfThisCommonLabelBase{typearea}{\Package{typearea} auch andere + \KOMAScript-Pakete und "~Klassen }{% + \IfThisCommonLabelBase{maincls}{den Klassen \Class{scrbook}, + \Class{scrreprt} und \Class{scrartcl} auch andere \KOMAScript-Klassen und + "~Pakete }{% + \IfThisCommonLabelBase{scrlttr2}{der Klasse \Class{scrlttr2} auch andere + \KOMAScript-Klassen und "~Pakete }{% + \IfThisCommonLabelBase{scrextend}{den Klassen und \Package{scrextend} + auch einige andere \KOMAScript-Pakete }{% + \IfThisCommonLabelBase{scrhack}{\Package{scrhack} auch andere + \KOMAScript-Pakete und "~Klassen }{% + \IfThisCommonLabelBase{scrjura}{\Package{scrjura} auch andere + \KOMAScript-Pakete und "~Klassen }{% + \IfThisCommonLabelBase{scrlayer}{\Package{scrlayer} auch andere + \KOMAScript-Pakete und "-Klassen }{% + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \Package{scrlayer-scrpage} auch andere \KOMAScript-Pakete und + "-Klassen }{% + \IfThisCommonLabelBase{scrlayer-notecolumn}{% + \Package{scrlayer-notecolumn} auch andere \KOMAScript-Pakete + und "-Klassen }{% + \InternalCommonFileUsageError}}}}}}}}}%% + betrifft. % + % Umbruchvarianten: + \IfThisCommonLabelBase{scrlttr2}{Im Sinne der Abgeschlossenheit der Kapitel + ist dieser Abschnitt nahezu identisch in mehreren Kapiteln zu finden, + braucht aber beim Studium des gesamten von \KOMAScript{} natürlich nur in + einem gelesen werden.% + }{Damit die Anwender alle Informationen zu einem Paket oder einer Klasse im + jeweiligen Kapitel finden, ist dieser Abschnitt nahezu gleichlautend in + mehreren Kapiteln zu finden. Anwender, die nicht nur an der Anleitung zu + einem Paket oder einer Klasse interessiert sind, sondern sich einen + Gesamtüberblick über \KOMAScript{} verschaffen wollen, brauchen diesen + Abschnitt nur in einem der Kapitel zu lesen und können ihn + \IfThisCommonLabelBase{maincls}{bei den weiteren Kapitel + überspringen.}{beim weiteren Studium der Anleitung dann überspringen.}% + }% +}{% + Es gilt sinngemäß, was in \autoref{sec:\ThisCommonFirstLabelBase.options} + geschrieben wurde. Falls Sie also + \autoref{sec:\ThisCommonFirstLabelBase.options} bereits gelesen und + verstanden haben, können Sie auf + \autopageref{sec:\ThisCommonLabelBase.options.next} mit + \autoref{sec:\ThisCommonLabelBase.options.next} fortfahren.% +} + + +\begin{Declaration} + \Macro{documentclass}\OParameter{Optionenliste}% + \Parameter{\KOMAScript-Klasse}% + \Macro{usepackage}\OParameter{Optionenliste}% + \Parameter{Paket-Liste} +\end{Declaration} +Bei \LaTeX{} ist vorgesehen, dass Anwender +Klassenoptionen\textnote{Klassenoptionen} in Form einer durch Komma getrennten +Liste einfacher Schlüsselwörter als optionales Argument von +\Macro{documentclass} angeben. Außer an die Klasse werden diese Optionen auch +an alle Pakete\textnote{globale Optionen} weitergereicht, die diese Optionen +verstehen. Ebenso ist vorgesehen, dass Anwender +Paketoptionen\textnote{Paketoptionen} in Form einer durch Komma getrennten +Liste einfacher Schlüsselwörter als optionales Argument von \Macro{usepackage} +angeben. \KOMAScript{} erweitert\ChangedAt{v3.00}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}\and \Package{typearea}} den +Mechanismus der Optionen für +\IfThisCommonLabelBaseOneOf{scrextend,scrjura}{}{die \KOMAScript-Klassen und +}einige Pakete um weitere Möglichkeiten. So haben die meisten Optionen bei +\KOMAScript{} zusätzlich einen Wert. Eine Option hat also nicht unbedingt nur +die Form \PName{Option}, sondern kann auch die Form +\PName{Option}\texttt{=}\PName{Wert}% +\important{\PName{Option}\texttt{=}\PName{Wert}} haben. Bis auf diesen +Unterschied arbeiten \Macro{documentclass} und \Macro{usepackage} bei +\KOMAScript{} wie in \cite{latex:usrguide} oder jeder \LaTeX-Einführung, +beispielsweise \cite{l2kurz}, beschrieben.% +% +\iffree{}{\IfThisCommonLabelBase{scrlayer-scrpage}{\par + Das als veraltet zu betrachtende Paket + \Package{scrpage2}\IndexPackage{scrpage2}\important{\Package{scrpage2}} + besitzt diese Erweiterung übrigens nicht. Es versteht daher nur einfache + Optionen ohne Wertzuweisung.\par}{}}% + +\IfThisCommonLabelBaseNotOneOf{% + scrjura,scrhack,scrlayer,scrlayer-scrpage,scrlayer-notecolumn,scrextend% +}{% + Bei Verwendung einer \KOMAScript-Klasse\textnote{Achtung!} sollten im + Übrigen beim Laden des Pakets \Package{typearea} oder \Package{scrbase} + keine Optionen angegeben werden. Das ist darin begründet, dass die Klasse + diese Pakete bereits ohne Optionen lädt und \LaTeX{} das mehrmalige Laden + eines Pakets mit unterschiedlicher Angabe von Optionen verweigert.% + \IfThisCommonLabelBase{scrlttr2}{ Überhaupt ist es bei Verwendung einer + \KOMAScript-Klasse nicht notwendig, eines dieser Pakete auch noch explizit + zu laden.}{}% + \par +}{} + +% Umbruchoptimierung!!! +\IfThisCommonLabelBase{typearea}{Das Setzen der Optionen mit + \Macro{documentclass} hat übrigens einen\textnote{Achtung!} entscheidenden + Nachteil: % +}{% + Gegenüber der nachfolgend vorgestellten Schnittstelle zu Einstellungen von + Optionen hat \Macro{documentclass} einen Nachteil, der unbedingt zu + beachten\textnote{Achtung!} ist: % +}% +Anweisungen, Längen, Zähler und ähnliches können darin leicht zerbrechen. So +führt die Verwendung einer \LaTeX-Länge im Wert einer Option bei dieser +Anweisung bei vielen Nicht-\KOMAScript-Klassen zu einer Fehlermeldung% +\IfThisCommonLabelBaseNotOneOf{maincls,scrlttr2}{, noch bevor der Wert an ein + \KOMAScript-Paket übergeben wird, es also die Kontrolle darüber übernehmen + könnte}{}% +. Wertzuweisungen mit \LaTeX-Längen oder \LaTeX-Zählern sollten daher nie per +\Macro{documentclass}, sondern mit den nachfolgend dokumentierten Anweisungen +\DescRef{\LabelBase.cmd.KOMAoptions} oder \DescRef{\LabelBase.cmd.KOMAoption} +vorgenommen werden. \EndIndexGroup + + +\begin{Declaration} + \Macro{KOMAoptions}\Parameter{Optionenliste}\\ + \Macro{KOMAoption}\Parameter{Option}\Parameter{Werteliste} +\end{Declaration} +\KOMAScript{}\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{typearea}} bietet bei den meisten +\IfThisCommonLabelBaseOneOf{scrextend,scrjura}{}{Klassen- und }Paketoptionen +auch die Möglichkeit, den Wert der Optionen noch nach dem Laden +\IfThisCommonLabelBaseOneOf{scrextend,scrjura}{}{der Klasse beziehungsweise +}des Pakets zu ändern. Mit der Anweisung \Macro{KOMAoptions} kann man wie bei +\DescRef{\ThisCommonLabelBase.cmd.documentclass} oder +\DescRef{\ThisCommonLabelBase.cmd.usepackage} die Werte einer Reihe von +Optionen ändern. Jede Option der \PName{Optionenliste} hat dabei die Form +\PName{Option}\texttt{=}\PName{Wert}% +\important{\PName{Option}\texttt{=}\PName{Wert},\dots}. + +Einige Optionen besitzen auch einen Säumniswert (engl. \emph{default + value}). Versäumt man die Angabe eines Wertes, verwendet man die Option also +einfach in der Form \PName{Option}, so wird automatisch dieser Säumniswert +angenommen. + +Manche Optionen können gleichzeitig mehrere Werte besitzen. Für solche +Optionen besteht die Möglichkeit, mit \Macro{KOMAoption} der einen +\PName{Option} nacheinander eine Reihe von Werten zuzuweisen. Die einzelnen +Werte sind dabei in der +\PName{Werteliste}\important{\PName{Wert},\dots} durch Komma +voneinander getrennt. + +Soll\textnote{Achtung!} ein \PName{Wert} ein Gleichheitszeichen oder ein Komma +enthalten, so ist der \PName{Wert} in geschweifte Klammern zu setzen. + +\begin{Explain} + \KOMAScript{} bedient sich für die Realisierung dieser Möglichkeit der + Anweisungen \DescRef{scrbase.cmd.FamilyOptions} und + \DescRef{scrbase.cmd.FamilyOption} mit der Familie »\PValue{KOMA}«. + \IfThisCommonLabelBaseOneOf{typearea}{% Umbruchkorrektur + Näheres zu diesen Anweisungen finden fortgeschrittene Anwender in + \autoref{sec:scrbase.keyvalue} ab \DescPageRef{scrbase.cmd.FamilyOptions}. + }{% + Siehe dazu \autoref{part:forExperts}, \autoref{sec:scrbase.keyvalue}, + ab \DescPageRef{scrbase.cmd.FamilyOptions}. + }% +\end{Explain} + +Mit \Macro{KOMAoptions} oder \Macro{KOMAoption} gesetzte Optionen erreichen +\IfThisCommonLabelBase{scrextend}{}{sowohl die \KOMAScript-Klasse als }auch +alle bereits geladenen \KOMAScript-Pakete, die diese Optionen kennen. Ist eine +Option oder ein Wert insgesamt unbekannt, so wird die Option einschließlich +des Wertes von +\hyperref[cha:scrbase]{\Package{scrbase}}\IndexPackage{scrbase}% +\important{\hyperref[cha:scrbase]{\Package{scrbase}}} als fehlerhaft +gemeldet.% +% +\iffalse% Umbruchkorrekturtext +\iffree{}{\IfThisCommonLabelBase{scrlayer-scrpage}{\par + Das als veraltet zu betrachtende Paket + \Package{scrpage2}\IndexPackage{scrpage2}\important{\Package{scrpage2}} + besitzt diese Erweiterung übrigens nicht. Optionen können daher nur über + die zuvor erklärte Möglichkeit während des Ladens des Pakets gesetzt + werden.}{}}% +\fi% +\EndIndexGroup +% +\EndIndexGroup + +\phantomsection +\label{sec:\ThisCommonLabelBase.options.end} +\endinput + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-pagestylemanipulation.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-pagestylemanipulation.tex new file mode 100644 index 0000000000..f4814b7283 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-pagestylemanipulation.tex @@ -0,0 +1,1151 @@ +% ====================================================================== +% common-pagestylemanipulation.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-pagestylemanipulation.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Text that is common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapitels in der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{common-pagestylemanipulation.tex} + [$Date: 2018-02-05 10:50:56 +0100 (Mon, 05 Feb 2018) $ + KOMA-Script guide (common paragraph: + Setting up defined page styles)] + +\section{Beeinflussung von Seitenstilen} +\seclabel{pagestyle.content} +\BeginIndexGroup +\BeginIndex{}{Seiten>Stil} + +\IfThisCommonLabelBase{scrlayer}{% + Obwohl \Package{scrlayer} selbst keine konkreten Seitenstile mit Inhalt + definiert -- die erwähnten Seitenstile + \DescRef{\LabelBase.pagestyle.@everystyle@} und \PageStyle{empty} werden ja + zunächst ohne Ebenen, also leer definiert --, stellt es einige Optionen und + Befehle zur Beeinflussung von Inhalten zur Verfügung.% +}{% + \IfThisCommonLabelBase{scrlayer-scrpage}{% + In \autoref{sec:scrlayer-scrpage.predefined.pagestyles} wurde erklärt, wie + die Seitenstile \DescRef{\LabelBase.pagestyle.scrheadings} und + \DescRef{\LabelBase.pagestyle.plain.scrheadings} grundlegend vordefiniert + sind und wie diese Vorbelegung grundsätzlich geändert werden kann. Es + fehlen jedoch noch Informationen, wie beispielsweise die Kolumnentitel + zustande kommen, wie man die Breite des Kopfes und Fußes verändern kann + und wie man Linien über oder unter Kopf oder Fuß setzen kann. Obwohl dies + eigentlich Fähigkeiten des Pakets + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + \important{\hyperref[cha:scrlayer]{\Package{scrlayer}}} + sind, werden sie nachfolgend + erläutert, da diese grundlegenden Eigenschaften von + \hyperref[cha:scrlayer]{\Package{scrlayer}} einen wichtigen Teil der + Möglichkeiten von \IfThisCommonLabelBase{scrlayer-scrpage}{% + \Package{scrlayer-scrpage}% + }{% + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + } ausmachen.% + }{% + \IfThisCommonLabelBase{scrlayer-scrpage-experts}{% + Dieser Abschnitt ist als Ergänzung zu + \autoref{sec:scrlayer.pagestyle.content} zu verstehen und beschreibt + Dinge, die sich dem Anfänger nicht unbedingt sofort erschließen.% + }{\InternalCommonFileUsageError}% + }% +} + +\IfThisCommonLabelBase{scrlayer-scrpage-experts}{\iffalse}{% + \csname iftrue\endcsname}% + \begin{Declaration} + \Macro{automark}\OParameter{Gliederungsebene der rechten Marke} + \Parameter{\mbox{Gliederungsebene der linken Marke}} + \Macro{automark*}\OParameter{Gliederungsebene der rechten Marke} + \Parameter{Gliederungsebene der linken Marke} + \Macro{manualmark} + \end{Declaration} + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \begin{Explain} + Bei den Standardklassen und auch bei den \KOMAScript-Klassen fällt die + Entscheidung, ob mit lebenden oder statischen + Kolumnentiteln\Index{Kolumnentitel>lebend}\Index{Kolumnentitel>statisch} + gearbeitet werden soll, über die Wahl des entsprechenden + Seitenstils. Wie bereits in \autoref{sec:maincls.pagestyle} erklärt, + erhält man bei Wahl von + \DescRef{maincls.pagestyle.headings}\IndexPagestyle{headings}% + \important{\DescRef{maincls.pagestyle.headings}} lebende + Kolumnentitel. Unter lebenden Kolumnentiteln versteht man die + Wiederholung eines für die Seite oder die \emph{Kolumne} markanten + Textes meist im Kopf, seltener im Fuß der Seite. + + Bei den Artikel-Klassen\OnlyAt{\Class{article}\and \Class{scrartcl}} + \Class{article} oder \hyperref[cha:maincls]{\Class{scrartcl}} wird für + den lebenden Kolumnentitel\textnote{lebende Kolumnentitel} im + einseitigen Modus die Abschnittsüberschrift, also das obligatorische + oder das optionale Argument von \DescRef{maincls.cmd.section} + verwendet. Diese wird als \emph{rechte Marke} behandelt. Im + doppelseitigen Satz wird dieselbe Überschrift als \emph{linke Marke} + verwendet und gleichzeitig die Unterabschnittsüberschrift als + \emph{rechte Marke}. Ausgegeben wird die linke Marke, wie der Name schon + sagt, auf der linken Seite, während die rechte Marke auf rechten Seiten + -- im einseitigen Modus also auf allen Seiten -- ausgegeben wird. Beim + Setzen der linken Marke für den Abschnitt werden von den Klassen in der + Voreinstellung außerdem auch immer die rechten Marken gelöscht. + + Bei den Bericht- und Buch-Klassen\OnlyAt{\Class{report}\and + \Class{scrreprt}\and \Class{book}\and \Class{scrbook}} wird eine Ebene + höher begonnen. Im einseitigen Modus wird also die Kapitelüberschrift + als rechte Marke gesetzt. Im doppelseitigen Satz wird die + Kapitelüberschrift als linke Marke und die Abschnittsüberschrift als + rechte Marke gesetzt. + + Verwendet man hingegen als Seitenstil + \DescRef{maincls.pagestyle.myheadings}\IndexPagestyle{myheadings}% + \important{\DescRef{maincls.pagestyle.myheadings}}% + \textnote{manuelle Kolumnentitel}, so + existieren zwar die Marken im Kopf genauso und auch die Seitenzahlen + werden gleich platziert, allerdings werden die Marken nicht automatisch + durch die Überschriften gesetzt. Man kann sie dann nur + manuell\important{% + \DescRef{\ThisCommonLabelBase.cmd.markright}\\ + \DescRef{\ThisCommonLabelBase.cmd.markboth}} + über die später in diesem Abschnitt dokumentierten Anweisungen + \DescRef{\ThisCommonLabelBase.cmd.markright} und + \DescRef{\ThisCommonLabelBase.cmd.markboth} befüllen. + \end{Explain}\par% + }{% + \IfThisCommonLabelBase{scrlayer}{% + Bei den meisten Klassen bestimmt die Wahl des Seitenstils, meist + \PageStyle{headings} und \PageStyle{myheadings}, darüber, ob die + Kolumnentitel automatisch oder manuell erzeugt werden. % + }{\InternalCommonFileUsageError}% + }% + Genau diese Unterscheidung wurde bei % + \iffalse \Package{scrpage2} und nun auch bei \fi% + \hyperref[cha:scrlayer]{\Package{scrlayer}}\IndexPackage{scrlayer} + aufgehoben. Statt die Unterscheidung zwischen + automatischen\textnote{lebende und manuelle Kolumnentitel} und manuellen + Kolumnentiteln über den Seitenstil vorzunehmen, gibt es die beiden + Anweisungen \Macro{automark} und \Macro{manualmark}. + + Mit \Macro{manualmark}\important{\Macro{manualmark}} wird dabei auf manuelle + Marken umgeschaltet. Es deaktiviert also das automatische Setzen der + Marken. Demgegenüber kann mit \Macro{automark}\important{\Macro{automark}} + und \Macro{automark*} festgelegt werden, welche Gliederungsebenen für das + automatische Setzen der Marke verwendet werden sollen. Das optionale + Argument gibt dabei die \PName{Gliederungsebene der rechten Marke} an, + während das obligatorische Argument die \PName{Gliederungsebene der linken + Marke} ist. Als Argument werden jeweils die Namen der Gliederungsebenen + angegeben, also \PValue{part}, \PValue{chapter}, \PValue{section}, + \PValue{subsection}, \PValue{subsubsection}, \PValue{paragraph} oder + \PValue{subparagraph}. + + Normalerweise sollte die höhere Ebene die linke Marke setzen, während die + tiefere Ebene für die rechte Marke zu verwenden ist. Diese übliche + Konvention ist jedoch keine Pflicht, sondern lediglich sinnvoll. + + Es ist zu beachten\textnote{Achtung!}, dass nicht alle Klassen Kolumnentitel + für alle Ebenen ermöglichen. So setzen die + Standardklassen\textnote{\KOMAScript{} vs. Standardklassen} beispielsweise + nie Kolumnentitel für \DescRef{maincls.cmd.part}. Die \KOMAScript-Klassen + unterstützen hingegen alle Ebenen. + + Der Unterschied zwischen \Macro{automark} und + \Macro{automark*}\important{\Macro{automark*}} liegt darin, dass + \Macro{automark} alle vorherigen Befehle zum automatischen Setzen der Marken + aufhebt, während die Stern-Version \Macro{automark*} lediglich die Aktionen + für die angegebenen Gliederungsebenen ändert.% + \IfThisCommonLabelBase{scrlayer-scrpage}{}{ Man kann so auch relativ + komplexe Fälle abdecken.}% Umbruchoptimierung + \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{\csname + iffalse\endcsname}% + \iffalse% Umbruchkorrekturtext + \iffree{}{\par + Das veraltete Paket + \Package{scrpage2}\IndexPackage{scrpage2}\important{\Package{scrpage2}} + kennt sowohl \Macro{manualmark} als auch \Macro{automark}, jedoch nicht + \Macro{automark*}. Daher sind die nachfolgenden Beispielen nicht + vollständig auf die Verwendung von \Package{scrpage2} übertragbar.% + }% + \fi + % + \begin{Example} + \phantomsection\xmpllabel{mark}% + Angenommen Sie wollen, dass wie üblich auf den linken Seiten eines + Buches die Kapitelüberschriften als automatische Kolumnentitel verwendet + werden und auf den rechten Seiten die + Abschnittsüberschriften. Allerdings soll auf rechte Seiten so lange + ebenfalls die Kapitelüberschrift verwendet werden, bis der erste + Abschnitt auf"|taucht. Dazu wird zuerst + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \Package{scrlayer-scrpage}% + }{% + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + } geladen und der Seitenstil \DescRef{\LabelBase.pagestyle.scrheadings} + aktiviert. Das Dokument beginnt also mit: +\begin{lstcode} + \documentclass{scrbook} + \usepackage{scrlayer-scrpage} + \pagestyle{scrheadings} +\end{lstcode} + Als nächstes wird dafür gesorgt, dass die Kapitelüberschriften sowohl + die linke als auch die rechte Marke setzen: +\begin{lstcode} + \automark[chapter]{chapter} +\end{lstcode} + Dann sollen die Abschnittsüberschriften zusätzlich die rechten Marken + setzen: +\begin{lstcode} + \automark*[section]{} +\end{lstcode} + Hier findet die Stern-Version Anwendung, da die vorherige + \Macro{automark}-Anweisung weiterhin wirksam bleiben soll. Außerdem + bleibt das Argument für die \PName{Gliederungsebene der linken Marke} + leer, weil diese Marke unverändert bleiben soll. + + Alles, was jetzt noch fehlt, ist ein wenig Dokumentinhalt: +\begin{lstcode} + \usepackage{lipsum} + \begin{document} + \chapter{Kapitel} + \lipsum[1-20] + \section{Abschnitt} + \lipsum[21-40] + \end{document} +\end{lstcode} + Dabei ist das Paket \Package{lipsum}\IndexPackage{lipsum} mit seiner + Anweisung \Macro{lipsum}\IndexCmd{lipsum} sehr nützlich. + + Wenn Sie dieses Beispiel einmal testen, werden Sie sehen, dass die + Kapitelanfangsseite wie üblich ohne Kolumnentitel ist, da sie + automatisch im \PageStyle{plain}-Seitenstil + \DescRef{\LabelBase.pagestyle.plain.scrheadings} gesetzt wird (siehe + dazu Anweisung \DescRef{maincls.cmd.chapterpagestyle} auf + \DescPageRef{maincls.cmd.chapterpagestyle}). Seite~2 bis 4 tragen als + Kolumnentitel die Kapitelüberschrift. Nachdem auf Seite~4 eine + Abschnittsüberschrift ausgegeben wurde, ändert sich der Kolumnentitel + auf Seite~5 in die Abschnittsüberschrift. Ab dann werden die beiden + Überschriften im Kopf wechselweise ausgegeben, auf linken Seiten die + Kapitelüberschrift, auf rechten Seiten die Abschnittsüberschrift.% + \end{Example} + \fi + + \begin{Declaration} + \Option{automark} + \OptionVName{autooneside}{Ein-Aus-Wert} + \Option{manualmark} + \end{Declaration} + Außer mit den zuvor erklärten Befehlen kann auch direkt mit den beiden + Optionen + \Option{manualmark}\important{\Option{manualmark}\\\Option{automark}} und + \Option{automark} zwischen automatischen und manuellen Kolumnentiteln hin- + und hergeschaltet werden. Dabei verwendet \Option{automark} bei Klassen mit + \DescRef{maincls.cmd.chapter}-Anweisung immer die + Voreinstellung\textnote{Voreinstellung} + \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{\csname + iffalse\endcsname}% + \lstinline|\automark[section]{chapter}| und bei anderen Klassen + \lstinline|\automark[subsection]{section}|. + \else +\begin{lstcode} + \automark[section]{chapter} +\end{lstcode} + und bei anderen Klassen: +\begin{lstcode} + \automark[subsection]{section} +\end{lstcode} + \fi + + \IfThisCommonLabelBase{scrlayer-scrpage}{% + Im einseitigen Modus\textnote{einseitiger Satz} will man in der Regel, + dass nur die höheren Ebenen den Kolumnentitel vorgeben.% + }{% + Im einseitigen Modus\textnote{einseitiger Satz} will man in der Regel + nicht, dass die untergeordnete Ebene die rechte Marke + beeinflusst. Stattdessen soll auch mit der Voreinstellung nur die höhere + Ebene, die beispielsweise im doppelseitigen Modus in der Voreinstellung + alleine die linke Marke beeinflusst, den Kolumnentitel aller Seiten + vorgeben.% + } Diese Voreinstellung entspricht einer aktiven Option + \Option{autooneside}\important{\Option{autooneside}}. Die Option versteht + die Werte für einfache Schalter, die in \autoref{tab:truefalseswitch} auf + \autopageref{tab:truefalseswitch} angegeben sind. Wird die Option + deaktiviert, so wirken sich im einseitigen Satz sowohl das optionale als + auch das obligatorische Argument auf den Kolumnentitel aus.% + \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{\csname + iffalse\endcsname}% + \begin{Example} + \phantomsection\xmpllabel{mark.oneside}% + Angenommen, Sie wollen im einseitigen Modus eines Berichts eine ganz + ähnliche Verwendung des Kolumnentitels erreichen wie im vorherigen + Beispiel. Konkret soll so lange die Kapitelüberschrift verwendet werden, + bis ein Abschnitt gesetzt wird. Ab dann soll nur noch die + Abschnittsüberschrift verwendet werden. Dazu wird das Beispiel wie folgt + abgewandelt: +\begin{lstcode} + \documentclass{scrreprt} + \usepackage[autooneside=false]{scrlayer-scrpage} + \pagestyle{scrheadings} + \automark[section]{chapter} + \usepackage{lipsum} + \begin{document} + \chapter{Kapitel} + \lipsum[1-20] + \section{Abschnitt} + \lipsum[21-40] + \end{document} +\end{lstcode} + Wie zu sehen ist, wird in diesem Fall keine ergänzende + \DescRef{\LabelBase.cmd.automark*}-Anweisung benötigt. Sie sollten zum + Vergleich die Option \Option{autooneside} auch einmal auf \PValue{true} + setzen oder sie entfernen. Ein Unterschied ist dann ab Seite~4 im + Kolumnentitel im Kopf der Seiten zu sehen. + \end{Example} + \fi + + Das\textnote{Achtung!} Laden des Pakets selbst hat übrigens noch keine + Auswirkung darauf, ob mit automatischen Kolumnentiteln gearbeitet wird oder + nicht. Erst die explizite Verwendung einer der Optionen \Option{automark} + oder \Option{manualmark} oder einer der beiden Anweisungen + \DescRef{\LabelBase.cmd.automark} oder \DescRef{\LabelBase.cmd.manualmark} + schafft hier klare Verhältnisse.% + \IfThisCommonLabelBase{scrlayer-scrpage}{\par% + Bei Bedarf finden Sie weitere Hintergründe und Beispiele zur Verwendung + dieser Befehle und Optionen mit dem auf \Package{scrlayer} basierenden + Paket \IfThisCommonLabelBase{scrlayer-scrpage}{% + \Package{scrlayer-scrpage}% + }{% + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + } in + \autoref{sec:scrlayer-scrpage.pagestyle.content}, ab + \DescPageRef{scrlayer-scrpage.cmd.manualmark}.% + }{}% + \EndIndexGroup + \EndIndexGroup + + + \begin{Declaration} + \OptionVName{draft}{Ein-Aus-Wert} + \end{Declaration} + Die \KOMAScript-Option versteht die Standardwerte für einfache Schalter, die + in \autoref{tab:truefalseswitch} auf \autopageref{tab:truefalseswitch} + angegeben sind. Ist die Option aktiviert, so werden + \IfThisCommonLabelBase{scrlayer}{für die Entwurfsphase}{\unskip} alle + Elemente der Seitenstile zusätzlich mit + Maßlinien\Index{Masslinien=Maßlinien} + versehen. \IfThisCommonLabelBase{scrlayer}{\unskip}{Dies kann während der + Entwurfsphase manchmal nützlich sein.}% + \IfThisCommonLabelBase{scrlayer-scrpage}{ % + Falls diese Option global gesetzt wurde, die Maßlinien aber nicht + gewünscht sind, kann die Option auch nur für das Paket deaktiviert werden, + indem man \OptionValue{draft}{false} als optionales Argument von + \DescRef{\LabelBase.cmd.usepackage} beim Laden des Pakets angibt.% + }{}% + \EndIndexGroup + + + \begin{Declaration} + \Macro{MakeMarkcase}\Parameter{Text} + \end{Declaration} + Die automatischen, nicht jedoch die manuellen Kolumnentitel verwenden + \Macro{MakeMarkcase} für ihre Ausgabe. Ist die Anweisung beim Laden von + \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } nicht\textnote{bedingte Voreinstellung} definiert, so wird sie in der + Voreinstellung derart definiert, dass sie ihr Argument \PName{Text} + unverändert ausgibt. Diese Voreinstellung kann jedoch entweder durch + Umdefinierung von \Macro{MakeMarkcase} oder durch die nachfolgend + dokumentierte Option \DescRef{\LabelBase.option.markcase}% + \IndexOption{markcase}\important{\DescRef{\LabelBase.option.markcase}} + geändert werden. Je nach Einstellung wird das Argument dann beispielsweise + in Groß- oder Kleinbuchstaben umgewandelt. + % + \EndIndexGroup + + + \begin{Declaration} + \OptionVName{markcase}{Wert} + \end{Declaration} + Wie bereits früher erläutert, kann man bei + \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } zwischen manuellen und automatischen Kolumnentiteln wählen. Bei den + automatischen Kolumnentiteln werden dabei die entsprechenden Marken über die + Gliederungsbefehle gesetzt. In manchen Kulturkreisen ist es im Gegensatz zur + Typografie des deutschsprachigen Raums üblich, die Kolumnentitel in + Großbuchstaben zu setzen. Die Standardklassen machen genau dies in der + Voreinstellung. Das Paket \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } unterstützt das optional ebenfalls. Hierzu gibt man als Option + \OptionValue{markcase}{upper}\important{\OptionValue{markcase}{upper}}% + \IndexOption[indexmain]{markcase~=upper} an. Im Endeffekt führt das zu einer + Umdefinierung von + \DescRef{\ThisCommonLabelBase.cmd.MakeMarkcase}% + \IndexCmd[indexmain]{MakeMarkcase}. + + \IfThisCommonLabelBase{scrlayer}{% + Aufgrund der mangelnden typografischen Qualität der primitiven Umwandlung + in Großbuchstaben (siehe die Erklärung zu + \DescRef{scrlayer-scrpage.option.markcase} in + \autoref{sec:scrlayer-scrpage.pagestyle.content} auf + \autopageref{expl:scrlayer-scrpage.MakeUppercase}) empfiehlt der + \KOMAScript-Autor den Verzicht auf Versalsatz.% + }{% + Leider\phantomsection\label{expl:\ThisCommonLabelBase.MakeUppercase} + führt die von \LaTeX{} für Versalsatz\Index{Versalsatz} vorgesehene + Anweisung \Macro{MakeUppercase}\IndexCmd{MakeUppercase} zu keinem guten + Ergebnis, da weder gesperrt noch ausgeglichen wird. Dies liegt teilweise + sicher daran, dass für typografisch korrekten Versalsatz eine + Glyphenanalyse notwendig ist, um die konkrete Form der Buchstaben\iffree{ + und ihrer Kombinationen}{} in den Ausgleich der Sperrung einfließen zu + lassen. Der \KOMAScript-Autor empfiehlt daher, auf Versalsatz für die + Kolumnentitel zu verzichten.% + } Dies ist normalerweise mit + \OptionValue{markcase}{used}\important{\OptionValue{markcase}{used}}% + \IndexOption[indexmain]{markcase~=used} möglich. Allerdings fügen einige + Klassen selbst beispielsweise bei den Kolumnentitel für Verzeichnisse ein + \Macro{MakeUppercase} oder sogar die \TeX-Anweisung \Macro{uppercase} + ein. Für diese Fälle gibt es auch noch die Einstellung + \OptionValue{markcase}{noupper}\important{\OptionValue{markcase}{noupper}}% + \IndexOption[indexmain]{markcase~=noupper}, mit deren Hilfe + \Macro{MakeUppercase} und \Macro{uppercase} für die Kolumnentitel lokal + deaktiviert werden können. + + Alle für \Option{markcase} möglichen Werte sind noch einmal in + \autoref{tab:scrlayer-scrpage.markcase}% + \IfThisCommonLabelBase{scrlayer-scrpage}{}{, + \autopageref{tab:scrlayer-scrpage.markcase}} zusammengefasst.% + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \begin{table} + \centering + \caption[Mögliche Werte für Option \Option{markcase}]{Mögliche Werte für + Option \Option{markcase} zur Wahl von Groß-/Kleinschreibung in + automatischen Kolumnentiteln}% + \label{tab:\ThisCommonLabelBase.markcase}% + \begin{desctabular} + \pventry{lower}{\IndexOption[indexmain]{markcase~=lower}% + definiert \DescRef{\LabelBase.cmd.MakeMarkcase} so um, dass + automatische Kolumnentitel mit Hilfe von \Macro{MakeLowercase} in + Kleinbuchstaben gewandelt werden (Minuskelsatz).% + }% + \pventry{upper}{\IndexOption[indexmain]{markcase~=upper}% + definiert \DescRef{\LabelBase.cmd.MakeMarkcase} so um, dass + automatische Kolumnentitel mit Hilfe von \Macro{MakeUppercase} in + Großbuchstaben gewandelt werden (Versalsatz).% + }% + \pventry{used}{\IndexOption[indexmain]{markcase~=used}% + definiert \DescRef{\LabelBase.cmd.MakeMarkcase} so um, dass für + automatische Kolumnentitel keine automatische Veränderung der + Groß-/Kleinschreibung durchgeführt wird.% + }% + \entry{\PValue{ignoreuppercase}, \PValue{nouppercase}, + \PValue{ignoreupper}, + \PValue{noupper}}{\IndexOption[indexmain]{markcase~=noupper}% + definiert nicht nur \DescRef{\LabelBase.cmd.MakeMarkcase} so um, + dass für automatische Kolumnentitel keine automatische Veränderung + der Groß-/Kleinschreibung durchgeführt wird, sondern deaktiviert + zusätzlich lokal für alle Ebenen aller Seitenstile + \Macro{MakeUppercase} und \Macro{uppercase}.% + }% + \end{desctabular} + \end{table} + }{}% + \EndIndexGroup + + + \begin{Declaration} + \Macro{leftmark} + \Macro{rightmark} + \Macro{headmark} + \Macro{pagemark} + \end{Declaration} + Will man von den vordefinierten Seitenstilen abweichen, so muss man in der + Regel auch selbst entscheiden können, wo die Marken gesetzt werden + sollen. Mit \Macro{leftmark}\important{\Macro{leftmark}} platziert man die + linke Marke. Diese wird dann bei der Ausgabe der Seite durch den + entsprechenden Inhalt ersetzt. + + Dementsprechend kann man mit \Macro{rightmark}\important{\Macro{rightmark}} + die rechte Marke platzieren, die dann bei der Ausgabe der Seite durch den + entsprechenden Inhalt ersetzt wird. Für einige Feinheiten dabei sei auch + auf die weiterführenden Erklärungen zu + \DescRef{maincls-experts.cmd.rightmark} in + \autoref{sec:maincls-experts.addInfos}, + \DescPageRef{maincls-experts.cmd.rightmark} verwiesen. + + Mit \Macro{headmark}\important{\Macro{headmark}} kann man sich das Leben + erleichtern. Diese Erweiterung von + \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } entspricht je nachdem, ob die aktuelle Seite eine linke oder rechte ist, + \Macro{leftmark} oder \Macro{rightmark}. + + Die Anweisung \Macro{pagemark}\important{\Macro{pagemark}} hat genau + genommen nichts mit den Marken von \TeX{} zu tun. Sie dient dazu, eine + formatierte Seitenzahl zu platzieren. + \BeginIndex{FontElement}{pagenumber}\LabelFontElement{pagenumber}% + Bei ihrer Ausgabe wird dann auch die Schrifteinstellung für das Element + \FontElement{pagenumber}\important{\FontElement{pagenumber}} + verwendet. Diese kann mit Hilfe der Anweisungen + \DescRef{maincls.cmd.setkomafont} und \DescRef{maincls.cmd.addtokomafont} + verändert werden (siehe auch \autoref{sec:maincls.textmarkup}, + \DescPageRef{maincls.cmd.setkomafont}).% + \EndIndex{FontElement}{pagenumber}% + \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{% + \par% + Bei Bedarf finden Sie ein Beispiel zur Verwendung der Anweisungen + \Macro{headmark} und \Macro{pagemark} mit dem auf + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + }{% + \Package{scrlayer}% + } basierenden Paket \IfThisCommonLabelBase{scrlayer-scrpage}{% + \Package{scrlayer-scrpage}% + }{% + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + } in + \autoref{sec:scrlayer-scrpage.pagestyle.content}, ab + \PageRefxmpl{scrlayer-scrpage.headmark}.% + \csname iffalse\endcsname}% + \begin{Example} + \phantomsection\xmpllabel{headmark}% + Angenommen, Sie wollen, dass auch im einseitigen Modus der Kolumnentitel + immer am linken Rand und die Seitenzahl immer am rechten Rand + ausgerichtet wird. Beide sollen im Kopf platziert werden. Das folgende, + vollständige Minimalbeispiel liefert genau dies: +\begin{lstcode} + \documentclass{scrreprt} + \usepackage{blindtext} + \usepackage[automark]{scrlayer-scrpage} + \pagestyle{scrheadings} + \ihead{\headmark} + \ohead*{\pagemark} + \chead{} + \cfoot[]{} + \begin{document} + \blinddocument + \end{document} +\end{lstcode} + Das Paket \Package{blindtext}\IndexPackage{blindtext} mit seiner + Anweisung \Macro{blinddocument}\IndexCmd{blinddocument} wird hier für + die komfortable Erzeugung eines Beispieldokumentinhalts verwendet. + + Mit den Anweisungen \DescRef{scrlayer-scrpage.cmd.ihead}\IndexCmd{ihead} + und \DescRef{scrlayer-scrpage.cmd.ohead*}\IndexCmd{ohead*} werden die + gewünschten Marken platziert. Dabei wird die + Seitenzahl\iffalse-Marke\fi{} durch die Sternform + \DescRef{scrlayer-scrpage.cmd.ohead*} % + \iffalse% Umbruchvarianten + nicht nur auf den mit + \DescRef{\LabelBase.pagestyle.scrheadings}\IndexPagestyle{scrheadings} + gesetzten Seiten, sondern auch für den auf Kapitelanfangsseiten + automatisch verwendeten \PageStyle{plain}-Seitenstil % + \else% + auch für den auf Kapitelanfangsseiten verwendeten Seitenstil % + \fi% + \DescRef{\LabelBase.pagestyle.plain.scrheadings}% + \IndexPagestyle{plain.scrheadings} konfiguriert.% + + Da die Seitenstile bereits mit Marken in der Mitte von Kopf oder + Fuß vordefiniert sind, werden diese beiden Elemente mit + \DescRef{scrlayer-scrpage.cmd.chead} und + \DescRef{scrlayer-scrpage.cmd.cfoot} gelöscht. Hierzu werden leere + Argumente verwendet. Alternativ dazu hätte man auch + \DescRef{scrlayer-scrpage-experts.cmd.clearpairofpagestyles} + \IndexCmd{clearpairofpagestyles} + \emph{vor} \DescRef{scrlayer-scrpage.cmd.ihead} verwenden können. Diese + Anweisung wird jedoch erst in + \autoref{sec:scrlayer-scrpage-experts.pagestyle.pairs} auf + \DescPageRef{scrlayer-scrpage-experts.cmd.clearpairofpagestyles} + erklärt werden. + \end{Example}% + + Bitte beachten Sie, dass das leere optionale Argument bei + \DescRef{scrlayer-scrpage.cmd.cfoot} im Beispiel nicht gleichbedeutend mit + dem Weglassen dieses optionalen Arguments ist. Sie sollten das einmal + selbst ausprobieren und dabei den Fuß der ersten Seite beobachten.% + \fi + + \IfThisCommonLabelBase{scrlayer-scrpage}{% Umbruchvarianten + Fortgeschrittene Anwender finden ab + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \DescPageRef{scrlayer-scrpage-experts.cmd.righttopmark}}{% + \DescPageRef{\ThisCommonLabelBase.cmd.righttopmark}} weitere + Marken-Anweisungen.% + }{% + Sollten die hier vorgestellten Möglichkeiten für Marken einmal nicht + ausreichen, so sind für fortgeschrittene Anwender ab + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \DescPageRef{scrlayer-scrpage-experts.cmd.righttopmark}}{% + \DescPageRef{\ThisCommonLabelBase.cmd.righttopmark}} weitere Anweisungen + dokumentiert.% + }% + \iffalse% Umbruchkorrektur + \ Beispielsweise ist für lexikonartige Dokumente das dort erklärte + \DescRef{scrlayer-scrpage-experts.cmd.leftfirstmark} und + \DescRef{scrlayer-scrpage-experts.cmd.rightbotmark} recht nützlich.% + \fi \EndIndexGroup + + + \begin{Declaration} + \Macro{partmarkformat} + \Macro{chaptermarkformat} + \Macro{sectionmarkformat} + \Macro{subsectionmarkformat} + \Macro{subsubsectionmarkformat} + \Macro{paragraphmarkformat} + \Macro{subparagraphmarkformat} + \end{Declaration} + Diese Anweisungen werden von den \KOMAScript-Klassen und auch von + \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } intern üblicherweise verwendet, um die Gliederungsnummern der + automatischen Kolumnentitel zu formatieren. Dabei wird auch der + \DescRef{maincls.cmd.autodot}-Mechanismus der \KOMAScript-Klassen + unterstützt. Bei Bedarf können diese Anweisungen umdefiniert werden, um eine + andere Formatierung der Nummern zu erreichen.% + \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{% + \ Siehe dazu gegebenenfalls das Beispiel in + \autoref{sec:scrlayer-scrpage.pagestyle.content}, auf + \PageRefxmpl{scrlayer-scrpage.cmd.sectionmarkformat}.% + \csname iffalse\endcsname% + }% + \begin{Example} + \phantomsection\xmpllabel{cmd.sectionmarkformat}% + \iftrue + Wollen Sie auf Abschnittsebene Kolumnentitel ohne Gliederungsnummer, + geht das beispielsweise so: + \else + Angenommen, Sie wollen, dass Abschnittsüberschriften im Kolumnentitel + ohne Gliederungsnummer gesetzt werden, \iffree{so}{dann} ist das ganz + einfach \iffree{mit:}{so zu erreichen:} + \fi +\begin{lstcode}[belowskip=-\dp\strutbox] + \renewcommand*{\sectionmarkformat}{} +\end{lstcode} + \iffree{zu erreichen.}{}% + \end{Example}% + \fi + % + \EndIndexGroup + + + \begin{Declaration} + \Macro{partmark}\Parameter{Text} + \Macro{chaptermark}\Parameter{Text} + \Macro{sectionmark}\Parameter{Text} + \Macro{subsectionmark}\Parameter{Text} + \Macro{subsubsectionmark}\Parameter{Text} + \Macro{paragraphmark}\Parameter{Text} + \Macro{subparagraphmark}\Parameter{Text} + \end{Declaration} + Diese Anweisungen werden intern von den meisten Klassen verwendet, um die + Marken entsprechend der Gliederungsbefehle zu setzen. Dabei wird als + Argument lediglich der Text, nicht jedoch die Nummer erwartet. Die Nummer + wird stattdessen automatisch über den aktuellen Zählerstand ermittelt, falls + mit nummerierten Überschriften gearbeitet wird. + + Allerdings\textnote{Achtung!} verwenden nicht alle Klassen in allen + Gliederungsebenen eine solche Anweisung. % + \IfThisCommonLabelBase{scrlayer-scrpage}{% Umbruchvarianten + Beispielsweise rufen die Standardklassen\textnote{\KOMAScript{} + vs. Standardklassen} \Macro{partmark} bei \Macro{part} nicht auf.% + }{% + So wird beispielsweise \Macro{partmark} von den + Standardklassen\textnote{\KOMAScript{} vs. Standardklassen} nie + aufgerufen, während die \KOMAScript-Klassen selbstverständlich auch + \Macro{partmark} unterstützen.% + } + + Falls diese Anweisungen vom Anwender umdefiniert werden, sollte + er\textnote{Achtung!} unbedingt darauf achten, vor dem Setzen der Nummer + ebenfalls über \DescRef{maincls.counter.secnumdepth} zu prüfen, ob die + Nummern auszugeben sind. Dies gilt auch, wenn der Anwender + \DescRef{maincls.counter.secnumdepth} selbst nicht verändert, weil Pakete + und Klassen sich eventuell auf die Wirkung von + \DescRef{maincls.counter.secnumdepth} verlassen! + + Das Paket \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } definiert diese Anweisungen außerdem bei jedem Aufruf von + \DescRef{scrlayer.cmd.automark} oder \DescRef{scrlayer.cmd.manualmark} oder + den entsprechenden Optionen teilweise neu, um so die gewünschten + automatischen oder manuellen Kolumnentitel zu erreichen.% + \EndIndexGroup + + + \begin{Declaration} + \Macro{markleft}\Parameter{linke Marke} + \Macro{markright}\Parameter{rechte Marke} + \Macro{markboth}\Parameter{linke Marke}\Parameter{rechte Marke} + \end{Declaration} + Unabhängig davon, ob gerade mit manuellen oder automatischen Kolumnentiteln + gearbeitet wird, kann man jederzeit die \PName{linke Marke} oder + \PName{rechte Marke} mit einer dieser Anweisungen setzen. Dabei ist zu + beachten, dass die resultierende linke Marke in + \Macro{leftmark}\IndexCmd{leftmark}\important{\Macro{leftmark}} die letzte + auf der entsprechenden Seite gesetzte Marke ist, während die resultierende + rechte Marke in + \Macro{rightmark}\IndexCmd{rightmark}\important{\Macro{rightmark}} die erste + auf der entsprechenden Seite gesetzte Marke ausgibt. Näheres dazu ist den + weiterführenden Erklärungen zu \DescRef{maincls-experts.cmd.rightmark} in + \autoref{sec:maincls-experts.addInfos}, + \DescPageRef{maincls-experts.cmd.rightmark} oder zu + \DescRef{scrlayer.cmd.rightfirstmark}\IfThisCommonLabelBase{scrlayer}{}{ in + \autoref{sec:scrlayer.pagestyle.content}}, + \DescPageRef{scrlayer.cmd.rightfirstmark} zu entnehmen. + + Wird mit manuellen Kolumnentiteln\Index{Kolumnentitel>manuell} gearbeitet, + so bleiben die Marken gültig, bis sie durch erneute Verwendung der + entsprechenden Anweisung explizit ersetzt werden. Bei automatischen + Kolumnentiteln können Marken hingegen je nach Konfigurierung des + Automatismus ihre Gültigkeit mit einer der nächsten Gliederungsüberschriften + verlieren. + + Auch im Zusammenhang mit den Sternvarianten der Gliederungsbefehle können + diese Anweisungen nützlich sein.% + \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{% + \ Ausführliche Beispiele für die Verwendung von \Macro{markboth} mit dem + von \IfThisCommonLabelBase{scrlayer-scrpage}{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + }{% + \Package{scrlayer}% + } abgeleiteten Paket \IfThisCommonLabelBase{scrlayer-scrpage}{% + \Package{scrlayer-scrpage}% + }{% + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + } sind in \autoref{sec:scrlayer-scrpage.pagestyle.content}, ab + \PageRefxmpl{scrlayer-scrpage.cmd.markboth} zu finden.% + \csname iffalse\endcsname% + }% + \begin{Example} + \phantomsection\xmpllabel{cmd.markboth}% + Angenommen, Sie schreiben noch vor dem Inhaltsverzeichnis ein Vorwort + über mehrere Seiten, das jedoch im Inhaltsverzeichnis nicht auf"|tauchen + soll. Da Sie aber Trennlinien im Kopf verwenden, soll der Kolumnentitel + das Vorwort dennoch zeigen: +\begin{lstcode} + \documentclass[headsepline]{book} + \usepackage[automark]{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{blindtext} + \begin{document} + \chapter*{Vorwort} + \markboth{Vorwort}{Vorwort} + \blindtext[20] + \tableofcontents + \blinddocument + \end{document} +\end{lstcode} + Zunächst erscheint das Ergebnis wunschgemäß. Vielleicht erst beim + zweiten Blick fällt aber auf, dass der Kolumnentitel »\texttt{Vorwort}« + im Gegensatz zu den übrigen Kolumnentiteln nicht im Versalsatz + erscheint. Das ist jedoch leicht zu ändern: +\begin{lstcode} + \documentclass[headsepline]{book} + \usepackage[automark]{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{blindtext} + \begin{document} + \chapter*{Vorwort} + \markboth{\MakeMarkcase{Vorwort}} + {\MakeMarkcase{Vorwort}} + \blindtext[20] + \tableofcontents + \blinddocument + \end{document} +\end{lstcode} + Wie zu sehen ist, wurde \DescRef{scrlayer.cmd.MakeMarkcase}% + \IndexCmd{MakeMarkcase}\important{\DescRef{scrlayer.cmd.MakeMarkcase}} + verwendet, um auch den manuell korrigierten Kolumnentitel des Vorworts + entsprechend der automatischen Kolumnentitel des restlichen Dokuments + anzupassen. + + Verschieben Sie nun einmal \DescRef{maincls.cmd.tableofcontents}% + \Index{Inhaltsverzeichnis}\IndexCmd{tableofcontents}% + \important{\DescRef{maincls.cmd.tableofcontents}} vor das Vorwort und + entfernen Sie die \Macro{markboth}-Anweisung. Sie werden entdecken, dass + das Vorwort als Kolumnentitel nun »\texttt{CONTENTS}« trägt. Das liegt + an einer Eigenart von \DescRef{maincls.cmd.chapter*}% + \IndexCmd{chapter*}\important{\DescRef{maincls.cmd.chapter*}} (siehe + auch in \autoref{sec:maincls.structure} auf + \DescPageRef{maincls.cmd.chapter*}). Soll hier stattdessen kein + Kolumnentitel erscheinen, so ist dies sehr einfach mit \Macro{markboth} + mit zwei leeren Argumenten zu erreichen: +\begin{lstcode} + \documentclass[headsepline]{book} + \usepackage[automark]{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{blindtext} + \begin{document} + \tableofcontents + \chapter*{Vorwort} + \markboth{}{} + \blindtext[20] + \blinddocument + \end{document} +\end{lstcode} + \end{Example} + \fi% + % + \EndIndexGroup +\fi + + +\IfThisCommonLabelBase{scrlayer-scrpage}{\iffalse}{\csname iftrue\endcsname} + \begin{Declaration} + \Macro{GenericMarkFormat}\Parameter{Gliederungsname} + \end{Declaration} + Diese Anweisung wird in der Voreinstellung zur Formatierung aller + Gliederungsnummern in automatischen Kolumnentiteln unterhalb der + Unterabschnitte und bei Klassen ohne \DescRef{maincls.cmd.chapter} + zusätzlich auch für die Ebene der Abschnitte und Unterabschnitte verwendet, + soweit die entsprechenden Mark-Anweisungen nicht bereits anderweitig + definiert sind. Dabei verwendet die Anweisung in der Voreinstellung + \Macro{@seccntmarkformat}\IndexCmd{@seccntmarkformat}% + \important{\Macro{@seccntmarkformat}}, wenn eine solche interne Anweisung + wie bei den \KOMAScript-Klassen definiert ist. Anderenfalls wird mit + \Macro{@seccntformat}\IndexCmd{@seccntformat}\important{\Macro{@seccntformat}} + eine Anweisung verwendet, die bereits vom \LaTeX-Kern für Klassen und Pakete + bereitgestellt und von \KOMAScript{} etwas modifiziert wird. Als Argument + erwartet \Macro{GenericMarkFormat} den Namen der Gliederung, also + beispielsweise \PValue{chapter} oder \PValue{section} \emph{ohne} + vorangestellten umgekehrten Schrägstrich (engl. \emph{backslash}). + + Durch Umdefinierung dieser Anweisung kann damit die Standardformatierung + aller Gliederungsnummern im Kolumnentitel geändert werden, die darauf + zurückgreifen. Ebenso kann eine Klasse darüber eine andere + Standardformatierung vorgeben, ohne alle Befehle einzeln ändern zu müssen.% + \IfThisCommonLabelBase{scrlayer-scrpage-experts}{\iftrue}{% + \par % + Ein ausführliches Beispiel für das Zusammenspiel der Anweisung + \Macro{GenericMarkFormat} mit den auf + \DescPageRef{\ThisCommonLabelBase.cmd.chaptermark} erklärten Anweisungen + \DescRef{\ThisCommonLabelBase.cmd.sectionmarkformat} und + \DescRef{\ThisCommonLabelBase.cmd.subsectionmarkformat} beziehungsweise + \DescRef{\ThisCommonLabelBase.cmd.chaptermarkformat} bei Verwendung des + von \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } abgeleiteten Pakets \IfThisCommonLabelBase{scrlayer-scrpage}{% + \Package{scrlayer-scrpage}% + }{% + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + } ist in \autoref{sec:scrlayer-scrpage-experts.pagestyle.content}, ab + \PageRefxmpl{scrlayer-scrpage-experts.cmd.GenericMarkFormat} zu finden.% + \csname iffalse\endcsname}% + \begin{Example} + \phantomsection + \xmpllabel{cmd.GenericMarkFormat}% + Angenommen, Sie wollen, dass bei allen Gliederungsnummern im + Kolumnentitel eines Artikels die Nummer als weiße Schrift auf einem + schwarzen Kasten ausgegeben wird. Da bei Artikeln mit \Class{article} + die Anweisungen \DescRef{scrlayer.cmd.sectionmarkformat}% + \IndexCmd{sectionmarkformat}% + \important{% + \DescRef{scrlayer.cmd.sectionmarkformat}\\ + \DescRef{scrlayer.cmd.subsectionmarkformat}} und + \DescRef{scrlayer.cmd.subsectionmarkformat}% + \IndexCmd{subsectionmarkformat} von \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } mit Hilfe von + \Macro{GenericMarkFormat} definiert werden, genügt dafür die + entsprechende Umdefinierung dieser einen Anweisung: +\begin{lstcode}[moretexcs={colorbox,textcolor}] + \documentclass{article} + \usepackage{blindtext} + \usepackage[automark]{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{xcolor} + \newcommand*{\numberbox}[1]{% + \colorbox{black}{% + \strut~\textcolor{white}{#1}~}% + } + \renewcommand*{\GenericMarkFormat}[1]{% + \protect\numberbox{\csname the#1\endcsname}% + \enskip + } + \begin{document} + \blinddocument + \end{document} +\end{lstcode} + Für die Farbumschaltungen werden Anweisungen des Pakets + \Package{xcolor}\IndexPackage{xcolor} verwendet. Näheres dazu ist der + Anleitung zum Paket zu entnehmen (siehe \cite{package:xcolor}). + + Außerdem wird eine unsichtbare Stütze mit \Macro{strut} eingefügt. Diese + Anweisung sollte in keiner ausführlichen \LaTeX-Einführung fehlen. + + Für den Kasten mit der Nummer wird eine eigene Hilfsanweisung + \Macro{numberbox} definiert. Diese wird in der Umdefinierung von + \Macro{GenericMarkFormat} mit + \Macro{protect}\IndexCmd{protect}\important{\Macro{protect}} vor der + Expansion geschützt. Dies ist notwendig, weil sonst durch das + \Macro{MakeUppercase}\IndexCmd{MakeUppercase}% + \important{\Macro{MakeUppercase}} für den Versalsatz der Kolumnentitel + nicht mehr die Farben »\texttt{black}« und »\texttt{white}«, sondern die + Farben »\texttt{BLACK}« und »\texttt{WHITE}« verlangt würden, die gar + nicht definiert sind. Alternativ könnte man \Macro{numberbox} auch mit + Hilfe von \Macro{DeclareRobustCommand*} statt mit \Macro{newcommand*} + definieren (siehe \cite{latex:clsguide}). + + Wollte man dasselbe mit einer \KOMAScript-Klasse oder mit den + Standardklassen \Class{book} oder \Class{report} erreichen, so müsste + man übrigens zusätzlich + \DescRef{scrlayer.cmd.sectionmarkformat}% + \IndexCmd{sectionmarkformat}% + \important{\DescRef{scrlayer.cmd.sectionmarkformat}} und -- + je nach Klasse -- + \DescRef{scrlayer.cmd.subsectionmarkformat}% + \IndexCmd{subsectionmarkformat}% + \important{\DescRef{scrlayer.cmd.subsectionmarkformat}} + beziehungsweise \DescRef{scrlayer.cmd.chaptermarkformat}% + \IndexCmd{chaptermarkformat}% + \important{\DescRef{scrlayer.cmd.chaptermarkformat}} + umdefinieren, da diese bei Verwendung der genannten Klassen + \Macro{GenericMarkFormat} nicht verwenden: +\begin{lstcode}[moretexcs={colorbox,textcolor}] + \documentclass{scrbook} + \usepackage{blindtext} + \usepackage[automark]{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{xcolor} + \newcommand*{\numberbox}[1]{% + \colorbox{black}{% + \strut~\textcolor{white}{#1}~}% + } + \renewcommand*{\GenericMarkFormat}[1]{% + \protect\numberbox{\csname the#1\endcsname}% + \enskip + } + \renewcommand*{\chaptermarkformat}{% + \GenericMarkFormat{chapter}% + } + \renewcommand*{\sectionmarkformat}{% + \GenericMarkFormat{section}% + } + \begin{document} + \blinddocument + \end{document} +\end{lstcode} + \end{Example} + \fi% + \EndIndexGroup + + + \begin{Declaration} + \Macro{righttopmark} + \Macro{rightbotmark} + \Macro{rightfirstmark} + \Macro{lefttopmark} + \Macro{leftbotmark} + \Macro{leftfirstmark} + \end{Declaration} + \LaTeX\ChangedAt{v3.16}{\Package{scrlayer}} verwendet für die Seitenstile + normalerweise eine zweiteilige \TeX-Marke. Im Kolumnentitel kann auf den + linken Teil der Marke mit \DescRef{scrlayer.cmd.leftmark}% + \important{\DescRef{scrlayer.cmd.leftmark}}\IndexCmd{leftmark} zugegriffen + werden, während der rechte Teil der Marke über + \DescRef{scrlayer.cmd.rightmark}% + \important{\DescRef{scrlayer.cmd.rightmark}}\IndexCmd{rightmark} verfügbar + ist. Tatsächlich ist es wohl auch so gedacht, dass + \DescRef{scrlayer.cmd.leftmark} für linke Seiten und + \DescRef{scrlayer.cmd.rightmark} für rechte Seiten im doppelseitigen Druck + verwendet wird. Im einseitigen Layout setzen die Gliederungsbefehle der + Standardklassen den linken Teil der Marke hingegen gar nicht erst. + + \TeX{} selbst kennt drei Möglichkeiten, auf eine Marke zuzugreifen. Die + \Macro{botmark}\IndexCmd{botmark}\important{\Macro{botmark}} ist die auf der + zuletzt zusammengestellten Seite zuletzt gültige Marke. Das entspricht der + zuletzt gesetzten Marke der Seite. Wurde auf der Seite keine Marke gesetzt, + so entspricht es der zuletzt gesetzten Marke auf den bereits ausgegebenen + Seiten. Die \LaTeX-Anweisung \DescRef{scrlayer.cmd.leftmark} verwendet genau + diese Marke, gibt also den linken Teil der letzten Marke der Seite aus. Dies + entspricht auch genau \Macro{leftbotmark}\important{\Macro{leftbotmark}}. Im + Vergleich dazu gibt \Macro{rightbotmark}\important{\Macro{rightbotmark}} den + rechten Teil dieser Marke aus. + + \Macro{firstmark}\IndexCmd{firstmark}\important{\Macro{firstmark}} ist die + erste Marke der zuletzt zusammengestellten Seite. Das entspricht der ersten + Marke, die auf der Seite gesetzt wurde. Wurde auf der Seite keine Marke + gesetzt, so entspricht es der zuletzt gesetzten Marke auf den bereits + ausgegebenen Seiten. Die \LaTeX-Anweisung \DescRef{scrlayer.cmd.rightmark} + verwendet genau diese Marke, gibt also den rechten Teil der ersten Marke der + Seite aus. Dies entspricht auch genau + \Macro{rightfirstmark}\important{\Macro{rightfirstmark}}. Im Vergleich dazu + gibt \Macro{leftfirstmark}\important{\Macro{leftfirstmark}} den linken Teil + dieser Marke aus. + + \Macro{topmark}\IndexCmd{topmark}\important{\Macro{topmark}} ist der Inhalt, + den \Macro{botmark} hatte, bevor die aktuelle Seite zusammengestellt + wurde. \LaTeX{} verwendet dies selbst nie. Trotzdem bietet + \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } die Möglichkeit mit \Macro{lefttopmark}\important{\Macro{lefttopmark}} auf + den linken Teil dieser Marke und mit + \Macro{righttopmark}\important{\Macro{righttopmark}} auf den rechten Teil + zuzugreifen. + + Es\textnote{Achtung!} ist zu beachten, dass der linke und rechte Teil der + Marke immer nur gemeinsam gesetzt werden kann. Selbst wenn man mit + \DescRef{scrlayer.cmd.markright}\IndexCmd{markright} nur den rechten Teil + verändert, wird der linke Teil (unverändert) mit gesetzt. Entsprechend + setzen im doppelseitigen Layout die höheren Gliederungsebenen beim + Seitenstil + \PageStyle{headings}\important{\PageStyle{headings}}\IndexPagestyle{headings} + immer beide Teile. Beispielsweise verwendet + \DescRef{scrlayer.cmd.chaptermark} dann + \DescRef{scrlayer.cmd.markboth} mit einem leeren rechten Argument. Das ist + auch der Grund, warum \DescRef{scrlayer.cmd.rightmark} beziehungsweise + \Macro{rightfirstmark} auf der Seite einer Kapitelüberschrift immer einen + leeren Wert zurück gibt, selbst wenn danach beispielsweise über + \DescRef{scrlayer.cmd.sectionmark} oder indirekt über + \DescRef{maincls.cmd.section} ein neuer rechter Teil + \IfThisCommonLabelBase{scrlayer-scrpage}{der Marke}{\unskip} gesetzt + wurde. + + Bitte\textnote{Achtung!} beachten Sie, dass die Verwendung einer der hier + erklärten Anweisungen zur Ausgabe des linken oder rechten Teils der Marke + innerhalb einer Seite zu unerwarteten Ergebnissen führen kann. Sie sind + wirklich nur zur Verwendung im Kopf oder Fuß eines Seitenstils + gedacht. Daher sollten sie bei \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } immer Teil des Inhalts + einer Ebene sein. Dagegen spielt es keine Rolle, ob sie auf den Hintergrund + oder den Vordergrund beschränkt werden, da alle Ebenen erst nach der + Zusammenstellung der aktuellen Seite ausgegeben werden. + + Näheres zum Mark-Mechanismus \iffree{von \TeX{}}{\unskip} ist beispielsweise + \cite[Kapitel~23]{knuth:texbook} zu entnehmen. Das Thema ist dort als + absolutes Expertenwissen markiert.\IfThisCommonLabelBase{scrlayer}{ + % Umbruchkorrektur + Sollte Sie obige Erklärung also eher + verwirrt haben, machen Sie sich bitte nichts daraus.}{}% + \EndIndexGroup + + + \begin{Declaration} + \Macro{@mkleft}\Parameter{linke Marke}% + \Macro{@mkright}\Parameter{rechte Marke}% + \Macro{@mkdouble}\Parameter{Marke}% + \Macro{@mkboth}\Parameter{linke Marke}\Parameter{rechte Marke}% + \end{Declaration} + Innerhalb der Klassen und Pakete kommt es vor, dass Kolumnentitel nur dann + gesetzt werden sollen, wenn automatische Kolumnentitel (siehe Option + \DescRef{scrlayer.option.automark} und Anweisung + \DescRef{scrlayer.cmd.automark} auf + \DescPageRef{scrlayer.cmd.automark}) aktiviert sind. Bei + den Standardklassen geht dies ausschließlich über \Macro{@mkboth}. Diese + Anweisung entspricht entweder \Macro{@gobbletwo}, einer Anweisung, die ihre + beiden Argumente vernichtet, oder \DescRef{scrlayer.cmd.markboth}, + einer Anweisung, mit der sowohl eine \PName{linke Marke} als auch eine + \PName{rechte Marke} gesetzt wird. Pakete wie \Package{babel} hängen sich + ebenfalls in \Macro{@mkboth} ein, um beispielsweise noch eine + Sprachumschaltung im Kolumnentitel vorzunehmen. + + Will man nun jedoch nur eine \PName{linke Marke} oder nur eine \PName{rechte + Marke} setzen, ohne die jeweils andere Marke zu verändern, so fehlen + entsprechende Anweisungen. Das Paket \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } selbst benötigt entsprechende Anweisungen beispielsweise im Rahmen der + automatischen Kolumnentitel. Sind \Macro{@mkleft} zum Setzen nur der + \PName{linken Marke}, \Macro{@mkright} zum Setzen nur der \PName{rechten + Marke} oder \Macro{@mkdouble} zum Setzen sowohl der rechten als auch der + linken \PName{Marke} mit demselben Inhalt beim Laden von + \IfThisCommonLabelBase{scrlayer}{% + \Package{scrlayer}% + }{% + \hyperref[cha:scrlayer]{\Package{scrlayer}}% + } nicht definiert, so werden sie vom Paket selbst definiert. Dabei wird eine + Definition gewählt, die am Zustand von \Macro{@mkboth} erkennt, ob mit + automatischen Kolumnentiteln gearbeitet wird. Nur in diesem Fall setzen die + Befehle auch eine entsprechende Marke.% + + Klassen- und Paketautoren können ebenfalls auf die passende der vier + Anweisungen zurückgreifen, wenn sie linke oder rechte Marken setzen und + dies auf den Fall beschränken wollen, dass mit automatischen Kolumnentiteln + gearbeitet wird.% + \EndIndexGroup \fi + +\IfThisCommonLabelBase{scrlayer}{% + Zu weiteren Möglichkeiten zur Beeinflussung der Inhalte von Seitenstilen + siehe auch \autoref{sec:scrlayer-scrpage.pagestyle.content}, + \autopageref{sec:scrlayer-scrpage.pagestyle.content}.% +}{}% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "scrlayer-de.tex" +%%% TeX-PDF-mode: t +%%% End: + +% LocalWords: Seitenstilen Ebenenmodell scrpage headings myheadings plain +% LocalWords: empty scrlayer Seitenstil Rückgriffe Gliederungsnummern +% LocalWords: Standardklassen Seitenstile konsistenteren Befehlssatzes +% LocalWords: Einstellmöglichkeiten Seiteninhalts Gliederungsüberschrift +% LocalWords: Maßlinien Entwurfsphase Unterabschnittsüberschrift Versalsatz +% LocalWords: Abschnittsüberschrift Kapitelüberschrift Glyphenanalyse +% LocalWords: Hilfsanweisung content Expertenwissen Gliederungsebenen +% LocalWords: Gliederungsüberschriften Kapitelüberschriften Kolumnentitel +% LocalWords: Abschnittsüberschriften Gliederungsnummer Kapitelanfangsseite +% LocalWords: Kolumnentiteln Abschnittsebene Paketautoren diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-parmarkup.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-parmarkup.tex new file mode 100644 index 0000000000..951953fb82 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-parmarkup.tex @@ -0,0 +1,281 @@ +% ====================================================================== +% common-parmarkup.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-parmarkup.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-parmarkup.tex} + [$Date: 2018-01-31 13:56:21 +0100 (Wed, 31 Jan 2018) $ + KOMA-Script guide (common paragraphs)] + +\section{Absatzauszeichnung} +\seclabel{parmarkup}% +\BeginIndexGroup +\BeginIndex{}{Absatz>Auszeichnung}% + +\IfThisCommonLabelBase{maincls}{% + Die\textnote{Absatzeinzug vs. Absatzabstand} Standardklassen setzen + Absätze\Index[indexmain]{Absatz} normalerweise mit Absatzeinzug und ohne + Absatzabstand. Bei Verwendung eines normalen Satzspiegels, wie ihn + \Package{typearea} bietet, ist dies die vorteilhafteste + Absatzauszeichnung. Würde man ohne Einzug und Abstand arbeiten, hätte der + Leser als Anhaltspunkt nur die Länge der letzten Zeile. Im Extremfall kann + es sehr schwer sein zu erkennen, ob eine Zeile voll ist oder nicht. Des + Weiteren stellt der Typograf fest, dass die Auszeichnung des Absatzendes am + Anfang der nächsten Zeile leicht vergessen ist. Demgegenüber ist eine + Auszeichnung am Absatzanfang einprägsamer. Der Absatzabstand hat den + Nachteil, dass er in verschiedenem Zusammenhang leicht verloren geht. So + wäre nach einer abgesetzten Formel nicht mehr festzustellen, ob der Absatz + fortgesetzt wird oder ein neuer beginnt. Auch am Seitenanfang müsste + zurückgeblättert werden, um feststellen zu können, ob mit der Seite auch ein + neuer Absatz beginnt. All diese Probleme sind beim Absatzeinzug nicht + gegeben. Eine Kombination von Absatzeinzug und Absatzabstand ist wegen der + übertriebenen Redundanz abzulehnen. Der Einzug\Index[indexmain]{Einzug} + alleine ist deutlich genug. Der einzige Nachteil des Absatzeinzugs liegt in + der Verkürzung der Zeile. Damit gewinnt der + Absatzabstand\Index{Absatz>Abstand} bei ohnehin kurzen Zeilen, etwa im + Zeitungssatz, seine Berechtigung.% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + In der Einleitung zu \autoref{sec:maincls.parmarkup} ab + \autopageref{sec:maincls.parmarkup} wird dargelegt, warum der Absatzeinzug + gegenüber dem Absatzabstand vorzuziehen ist. Die Elemente, auf die sich + diese Argumente beziehen, beispielsweise Abbildungen, Tabellen, Listen, + abgesetzte Formeln und auch neue Seiten, sind in Standardbriefen eher + selten. Auch sind Briefe normalerweise nicht so umfänglich, dass ein nicht + erkannter Absatz sich schwerwiegend auf die Lesbarkeit auswirkt. Die + Argumente sind daher bei Standardbriefen eher schwach. Dies dürfte ein + Grund dafür sein, dass der Absatzabstand bei Briefen eher gebräuchlich + ist. Es bleiben damit für Standardbriefe im Wesentlichen zwei Vorteile des + Absatzeinzugs. Zum einen hebt sich ein solcher Brief aus der Masse hervor + und zum anderen durchbricht man damit nicht nur für Briefe das + einheitliche Erscheinungsbild aller Dokumente aus einer Quelle, die so + genannte \emph{Corporate Identity}.% + }{\InternalCommonFileUsageError}% +} % +\IfThisCommonFirstRun{}{% + Über diese Überlegungen hinaus gilt sinngemäß, was in + \autoref{sec:\ThisCommonFirstLabelBase.parmarkup} geschrieben wurde. + Falls Sie also \autoref{sec:\ThisCommonFirstLabelBase.parmarkup} bereits + gelesen und verstanden haben, können Sie nach dem Ende dieses Abschnitts auf + \autopageref{sec:\ThisCommonLabelBase.parmarkup.next} mit + \autoref{sec:\ThisCommonLabelBase.parmarkup.next} fortfahren.% + \IfThisCommonLabelBase{scrlttr2}{ % + Dies gilt ebenso, wenn Sie nicht mit Klasse + \Class{scrlttr2}\OnlyAt{scrlttr2}, sondern mit Paket \Package{scrletter} + arbeiten. Das Paket bietet keine eigenen Einstellungen für die + Absatzauszeichnung, sondern verlässt sich dabei ganz auf die verwendete + Klasse.% + }{}% +} + + +\begin{Declaration} + \OptionVName{parskip}{Methode} +\end{Declaration} +\IfThisCommonLabelBase{maincls}{% + Hin und wieder wird ein Layout mit Absatzabstand anstelle des + voreingestellten Absatzeinzugs gefordert. Die \KOMAScript-Klassen bieten mit + der Option \Option{parskip}\ChangedAt{v3.00}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} % +}{% + \IfThisCommonLabelBase{scrlttr2}{% + Bei Briefen findet man häufiger ein Layout mit Absatzabstand anstelle des + voreingestellten Absatzeinzugs. Die \KOMAScript-Klasse + \Class{scrlttr2}\OnlyAt{scrlttr2} + bietet mit der Option \Option{parskip} % + }{\InternalCommonFileUsageError}% +}% +eine Reihe von Möglichkeiten, um dies zu erreichen. Die \PName{Methode} setzt +sich dabei aus zwei Teilen zusammen. Der erste Teil ist entweder +\PValue{full}\important{\OptionValue{parskip}{full}\\ + \OptionValue{parskip}{half}} oder \PValue{half}, wobei \PValue{full} für +einen Absatzabstand von einer Zeile und \PValue{half} für einen Absatzabstand +von einer halben Zeile steht. Der zweite Teil ist eines der Zeichen +»\PValue{*}«, »\PValue{+}«, »\PValue{-}« und kann auch entfallen. Lässt man +das Zeichen\important{\OptionVName{parskip}{Abstand}} weg, so wird in der +letzten Zeile des Absatzes am Ende mindestens ein Geviert, das ist 1\Unit{em}, +frei gelassen. Mit dem +Pluszeichen\important{\OptionValue{parskip}{\PName{Abstand}+}} wird am +Zeilenende mindestens ein Drittel und mit dem +Stern\important{\OptionValue{parskip}{\PName{Abstand}*}} mindestens ein +Viertel einer normalen Zeile frei gelassen. Mit der +Minus-Variante\important{\OptionValue{parskip}{\PName{Abstand}-}} werden keine +Vorkehrungen für die letzte Zeile eines Absatzes getroffen. + +Die Einstellung kann jederzeit geändert werden. Wird sie innerhalb des +Dokuments geändert, so wird implizit die Anweisung +\Macro{selectfont}\IndexCmd{selectfont}% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.08}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrlttr2}{% + \ChangedAt{v3.08}{\Class{scrlttr2}}% + }{% + \InternalComonFileUsageError% + }% +} % +ausgeführt. Änderungen der Absatzauszeichnung innerhalb eines Absatzes +werden erst am Ende des Absatzes sichtbar. + +Neben den sich so ergebenden acht Kombinationen ist es noch möglich, als +\PName{Methode} die Werte für einfache Schalter aus +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} zu +verwenden. Das Einschalten der +Option\important{\Option{parskip}\\\OptionValue{parskip}{true}} entspricht +dabei \PValue{full} ohne angehängtes Zeichen für den Freiraum der letzten +Absatzzeile, also mit mindestens einem Geviert Freiraum am Ende des +Absatzes. Das Ausschalten\important{\OptionValue{parskip}{false}} der Option +schaltet hingegen wieder auf Absatzeinzug von einem Geviert um. Dabei darf die +letzte Zeile eines Absatzes auch bis zum rechten Rand reichen. Einen Überblick +über alle möglichen Werte für \PName{Methode} bietet +\autoref{tab:\ThisCommonFirstLabelBase.parskip}% +\IfThisCommonFirstRun{.% + \begin{desclist} + % Umbruchkorrektur + \vskip-\ht\strutbox + \renewcommand{\abovecaptionskipcorrection}{-\normalbaselineskip}% +% \begin{table} + \desccaption +% \caption + [{Mögliche Werte für Option \Option{parskip}}]{% + Mögliche Werte für Option \Option{parskip} zur Auswahl der Kennzeichnung + von Absätzen\label{tab:\ThisCommonFirstLabelBase.parskip}% + }% + {% + Mögliche Werte für Option \Option{parskip} (\emph{Fortsetzung})% + }% +% \begin{desctabular} + \entry{\PValue{false}, \PValue{off}, \PValue{no}% + \IndexOption{parskip~=\textKValue{false}}}{% + Absätze werden durch einen Einzug der ersten Zeilen von einem Geviert + (1\Unit{em}) gekennzeichnet. Der erste Absatz eines Abschnitts wird nicht + eingezogen.}% + \entry{\PValue{full}, \PValue{true}, \PValue{on}, \PValue{yes}% + \IndexOption{parskip~=\textKValue{full}}% + }{% + Absätze werden durch einen vertikalen Abstand von einer Zeile + gekennzeichnet, Absatzenden durch einen Leerraum von mind. einem Geviert + (1\Unit{em}) der Grundschrift am Ende der letzten Zeile.}% + \pventry{full-}{% + Absätze werden durch einen vertikalen Abstand von einer Zeile + gekennzeichnet. Absatzenden werden nicht + gekennzeichnet.\IndexOption{parskip~=\textKValue{full-}}}% + \pventry{full+}{% + \looseness=-1 Absätze werden durch einen vertikalen Abstand von einer + Zeile gekennzeichnet. Absatzenden werden durch einen Leerraum von + mind. einem Drittel einer normalen Zeile + gekennzeichnet.\IndexOption{parskip~=\textKValue{full+}}}% + \pventry{full*}{% + Absätze werden durch einen vertikalen Abstand von einer Zeile + gekennzeichnet. Absatzenden werden durch einen Leerraum von mind. einem + Viertel einer normalen Zeile + gekennzeichnet.\IndexOption{parskip~=\textKValue{full*}}}% + \pventry{half}{% + Absätze werden durch einen vertikalen Abstand von einer halben Zeile + gekennzeichnet. Absatzenden durch einen Leerraum von mind. einem Geviert + (1\Unit{em}) der normalen Schrift am Ende + gekennzeichnet.\IndexOption{parskip~=\textKValue{half}}}% + \pventry{half-}{% + Absätze werden durch einen vertikalen Abstand von einer halben Zeile + gekennzeichnet. Absatzenden werden nicht + gekennzeichnet.\IndexOption{parskip~=half-}}% + \pventry{half+}{% + Absätze werden durch einen vertikalen Abstand von einer halben Zeile + gekennzeichnet. Absatzenden werden durch einen Leerraum von mind. einem + Drittel einer normalen Zeile + gekennzeichnet.\IndexOption{parskip~=\textKValue{half+}}}% + \pventry{half*}{% + Absätze werden durch einen vertikalen Abstand von einer Zeile + gekennzeichnet. Absatzenden werden durch einen Leerraum von mind. einem + Viertel einer normalen Zeile + gekennzeichnet.\IndexOption{parskip~=\textKValue{half*}}}% + \pventry{never}{% + Es % + \IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.08}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + }{% + \IfThisCommonLabelBase{scrlttr2}{\ChangedAt{v3.08}{\Class{scrlttr2}}}{}% + }% + wird auch dann kein Abstand zwischen Absätzen eingefügt, wenn für den + vertikalen Ausgleich der Einstellung + \DescRef{maincls.cmd.flushbottom}\IndexCmd{flushbottom} zusätzlicher + vertikaler Abstand verteilt werden + muss.\IndexOption{parskip~=\textKValue{never}}}% +% \end{desctabular} +% \end{table}% + \end{desclist}% +}{ auf \autopageref{tab:\ThisCommonFirstLabelBase.parskip}.} + +Wird\textnote{Achtung!} ein Absatzabstand verwendet, so verändert sich auch +der Abstand vor, nach und innerhalb von Listenumgebungen. Dadurch wird +verhindert, dass diese Umgebungen oder Absätze innerhalb dieser Umgebungen +stärker vom Text abgesetzt werden als die Absätze des normalen Textes +voneinander.% +\IfThisCommonLabelBase{maincls}{ % + Inhalts"~, Abbildungs"~ und Tabellenverzeichnis werden immer ohne + zusätzlichen Absatzabstand gesetzt.% +}{% + \iffalse% + \ Verschiedene Elemente des Briefbogens werden immer ohne Absatzabstand + gesetzt.% + \fi% +}% + +Voreingestellt\textnote{Voreinstellung} ist bei \KOMAScript{} +\OptionValue{parskip}{false}. Hierbei gibt es keinen Absatzabstand, sondern +einen Absatzeinzug von 1\Unit{em}.% +% +\EndIndexGroup +% +\EndIndexGroup + + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-textmarkup.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-textmarkup.tex new file mode 100644 index 0000000000..25d7649217 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-textmarkup.tex @@ -0,0 +1,868 @@ +% ====================================================================== +% common-textmarkup.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-textmarkup.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-textmarkup.tex} + [$Date: 2018-07-20 09:52:01 +0200 (Fri, 20 Jul 2018) $ + KOMA-Script guide (common paragraphs)] + +\section{Textauszeichnungen} +\seclabel{textmarkup}% +\BeginIndexGroup +\BeginIndex{}{Text>Auszeichnung}% +\BeginIndex{}{Schrift>Art}% + +\IfThisCommonFirstRun{}{% + Es gilt sinngemäß, was in \autoref{sec:\ThisCommonFirstLabelBase.textmarkup} + geschrieben wurde. Falls Sie also + \autoref{sec:\ThisCommonFirstLabelBase.textmarkup} bereits gelesen und + verstanden haben, können Sie + \IfThisCommonLabelBaseOneOf{scrextend,scrjura,scrlayer-notecolumn}{}{% + sich auf \autoref{tab:\ThisCommonLabelBase.fontelements}, + \autopageref{tab:\ThisCommonLabelBase.fontelements} beschränken und + ansonsten }% + auf \autopageref{sec:\ThisCommonLabelBase.textmarkup.next} mit + \autoref{sec:\ThisCommonLabelBase.textmarkup.next} fortfahren.% + \IfThisCommonLabelBase{scrextend}{\ Für diesen Fall sei jedoch darauf + hingewiesen\textnote{Einschränkung} dass von \Package{scrextend} aus + \autoref{tab:maincls.fontelements}, \autopageref{tab:maincls.fontelements} + nur die Elemente für den Dokumenttitel, den schlauen Spruch, die Fußnoten + und die \DescRef{maincls.env.labeling}-Umgebung unterstützt werden. Das + Element \DescRef{maincls.fontelement.disposition} ist zwar auch vorhanden, + wird jedoch von \Package{scrextend} ebenfalls nur für den Dokumenttitel + verwendet.% + }{}% +} + +% Umbruchkorrektur +\IfThisCommonLabelBase{scrlayer-scrpage}{}{% + \LaTeX{} verfügt über eine ganze Reihe von Anweisungen zur + Textauszeichnung. % + \IfThisCommonLabelBaseOneOf{scrlttr2}{}{% + Neben der Wahl der Schriftart gehören dazu auch Befehle zur Wahl einer + Textgröße oder der Textausrichtung. % + }% +Näheres zu den normalerweise definierten Möglichkeiten ist \cite{l2kurz}, +\cite{latex:usrguide} und \cite{latex:fntguide} zu entnehmen.}% + +\IfThisCommonLabelBaseOneOf{scrlayer-scrpage,scrjura,scrlayer-notecolumn}{% + \iffalse% +}{% + \csname iftrue\endcsname}% + \begin{Declaration} + \Macro{textsuperscript}\Parameter{Text} + \Macro{textsubscript}\Parameter{Text} + \end{Declaration} + Im \LaTeX-Kern ist bereits die Anweisung + \Macro{textsuperscript}\IndexCmd{textsuperscript} definiert, mit der + \PName{Text} höher gestellt werden kann. Eine + entsprechende Anweisung, um Text tief\Index{Tiefstellung} statt + hoch\Index{Hochstellung} zu stellen, bietet + \LaTeX{}\textnote{\LaTeX~2015/01/01} erst seit Version + 2015/01/01. Für ältere \LaTeX-Versionen definiert \KOMAScript{} daher + \Macro{textsubscript}. % + \ifthiscommonfirst + \begin{Example} + \phantomsection + \xmpllabel{cmd.textsubscript}% + Sie schreiben einen Text über den menschlichen Stoffwechsel. Darin + kommen hin und wieder einfache chemische Summenformeln vor. Dabei sind + einzelne Ziffern tief zu stellen. Im Sinne des logischen Markups + definieren Sie zunächst in der Dokumentpräambel oder einem eigenen + Paket: +\begin{lstcode} + \newcommand*{\Molek}[2]{#1\textsubscript{#2}} +\end{lstcode} + \newcommand*{\Molek}[2]{#1\textsubscript{#2}}% + Damit schreiben Sie dann: +\begin{lstcode} + Die Zelle bezieht ihre Energie unter anderem aus + der Reaktion von \Molek C6\Molek H{12}\Molek O6 + und \Molek O2 zu \Molek H2\Molek O{} und + \Molek C{}\Molek O2. Arsen (\Molek{As}{}) wirkt + sich auf den Stoffwechsel sehr nachteilig aus. +\end{lstcode} + Das Ergebnis sieht daraufhin so aus: + \begin{ShowOutput} + Die Zelle bezieht ihre Energie unter anderem + aus der Reaktion von + \Molek C6\Molek H{12}\Molek O6 und \Molek O2 zu + \Molek H2\Molek O{} und \Molek C{}\Molek O2. + Arsen (\Molek{As}{}) wirkt sich auf + den Stoffwechsel sehr nachteilig aus. + \end{ShowOutput} + + Etwas später entscheiden Sie, dass Summenformeln grundsätzlich + serifenlos geschrieben werden sollen. Nun zeigt sich, wie gut die + Entscheidung für konsequentes logisches Markup war. Sie müssen nur die + \Macro{Molek}-Anweisung umdefinieren: +\begin{lstcode} + \newcommand*{\Molek}[2]{% + \textsf{#1\textsubscript{#2}}% + } +\end{lstcode} + \renewcommand*{\Molek}[2]{\textsf{#1\textsubscript{#2}}}% + Schon ändert sich die Ausgabe im gesamten Dokument: + \begin{ShowOutput} + Die Zelle bezieht ihr Energie unter anderem aus der Reaktion von + \Molek C6\Molek H{12}\Molek O6 und \Molek O2 zu \Molek H2\Molek + O{} und \Molek C{}\Molek O2. Arsen (\Molek{As}{}) wirkt sich + auf den Stoffwechsel sehr nachteilig aus. + \end{ShowOutput} + \end{Example} + \iffalse % vielleicht in einer späteren Auf-lage + Für Experten ist in \autoref{sec:experts.knowhow}, + \DescPageRef{experts.macroargs} dokumentiert, warum das Beispiel + funktioniert, obwohl teilweise die Argumente von \Macro{Molek} nicht in + geschweifte Klammern gesetzt wurden.% + \fi% + \else% + Ein Anwendungsbeispiel finden Sie in + \autoref{sec:\ThisCommonFirstLabelBase.textmarkup}, + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.textsubscript}.% + \fi% + \EndIndexGroup% +\fi + + +\begin{Declaration} + \Macro{setkomafont}\Parameter{Element}\Parameter{Befehle}% + \Macro{addtokomafont}\Parameter{Element}\Parameter{Befehle}% + \Macro{usekomafont}\Parameter{Element} +\end{Declaration}% +Mit% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v2.8p}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{} Hilfe der Anweisungen \Macro{setkomafont} und \Macro{addtokomafont} ist es +möglich, die \PName{Befehle} festzulegen, mit denen die Schrift eines +bestimmten \PName{Element}s umgeschaltet wird. Theoretisch könnten als +\PName{Befehle} alle möglichen Anweisungen einschließlich Textausgaben +verwendet werden. Sie\textnote{Achtung!} sollten sich jedoch unbedingt auf +solche Anweisungen beschränken, mit denen wirklich nur Schriftattribute +umgeschaltet werden. In der Regel werden dies Befehle wie \Macro{rmfamily}, +\Macro{sffamily}, \Macro{ttfamily}, \Macro{upshape}, \Macro{itshape}, +\Macro{slshape}, \Macro{scshape}, \Macro{mdseries}, \Macro{bfseries}, +\Macro{normalfont} oder einer der Befehle \Macro{Huge}, \Macro{huge}, +\Macro{LARGE}, \Macro{Large}, \Macro{large}, \Macro{normalsize}, +\Macro{small}, \Macro{footnotesize}, \Macro{scriptsize} und \Macro{tiny} +sein. Die Erklärung zu diesen Befehlen entnehmen Sie bitte \cite{l2kurz}, +\cite{latex:usrguide} oder \cite{latex:fntguide}. Auch Farbumschaltungen wie +\Macro{normalcolor} sind möglich (siehe \cite{package:graphics} und +\cite{package:xcolor}).% +\iffalse % Umbruchkorrekturtext +\ Das Verhalten bei Verwendung anderer Anweisungen, inbesondere solcher, die +zu Umdefinierungen führen oder Ausgaben tätigen, ist nicht +definiert. Seltsames Verhalten ist möglich und stellt keinen Fehler dar. +\else% +\ Die Verwendung anderer Anweisungen, inbesondere solcher, die Umdefinierungen +vornehmen oder zu Ausgaben führen, ist nicht vorgesehen. Seltsames Verhalten +ist in diesen Fällen möglich und stellt keinen Fehler dar.% +\fi + +Mit \Macro{setkomafont} wird die Schriftumschaltung eines Elements mit einer +völlig neuen Definition versehen. Demgegenüber wird mit \Macro{addtokomafont} +die existierende Definition lediglich erweitert. Es wird empfohlen, beide +Anweisungen nicht innerhalb des Dokuments, sondern nur in der Dokumentpräambel +zu verwenden. Beispiele für die Verwendung entnehmen Sie bitte den Abschnitten +zu den jeweiligen Elementen.% +\IfThisCommonLabelBase{scrlayer-notecolumn}{}{% + \ Namen und Bedeutung der einzelnen Elemente + \IfThisCommonLabelBaseOneOf{scrlayer-scrpage,scrjura}{und deren + Voreinstellungen }{}% + sind in % + \IfThisCommonLabelBase{scrextend}{% + \autoref{tab:maincls.fontelements}, \autopageref{tab:maincls.fontelements} + }{% + \autoref{tab:\ThisCommonLabelBase.fontelements} % + }% + aufgelistet.% + \IfThisCommonLabelBase{scrextend}{ % + Allerdings werden davon in \Package{scrextend} nur\textnote{Einschränkung} + die Elemente für den Dokumenttitel, den schlauen Spruch, die Fußnoten und + die \DescRef{maincls.env.labeling}-Umgebung behandelt. Das Element + \DescRef{maincls.fontelement.disposition} ist zwar auch verfügbar, wird + jedoch von \Package{scrextend} ebenfalls nur für den Dokumenttitel + verwendet.% + }{% + \IfThisCommonLabelBase{scrlayer-scrpage}{ % + Die angegebenen Voreinstellungen gelten nur, wenn das jeweilige Element + beim Laden von \Package{scrlayer-scrpage} nicht bereits definiert + ist. Beispielsweise definieren die \KOMAScript-Klassen + \DescRef{maincls.fontelement.pageheadfoot} und es gilt dann die von + \Package{scrlayer-scrpage} vorgefundene Einstellung.% + }{% + \IfThisCommonLabelBase{scrjura}{}{ % + Die Voreinstellungen sind den jeweiligen Abschnitten zu entnehmen.% + }% + }% + }% +}% + +\IfThisCommonLabelBaseOneOf{scrlttr2,scrextend}{% Umbruchvarianten + Mit der Anweisung \Macro{usekomafont} kann die aktuelle Schriftart auf die + für das angegebene \PName{Element} umgeschaltet werden.% +}{% + Mit der Anweisung \Macro{usekomafont} kann die aktuelle Schriftart auf + diejenige umgeschaltet werden, die für das angegebene \PName{Element} + definiert ist.% +} +\IfThisCommonLabelBase{maincls}{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + \phantomsection\xmpllabel{cmd.setkomafont}% + Angenommen, für das Element + \DescRef{\ThisCommonLabelBase.fontelement.captionlabel} soll dieselbe + Schriftart wie für + \DescRef{\ThisCommonLabelBase.fontelement.descriptionlabel} verwendet + werden. Das erreichen Sie einfach mit: +\begin{lstcode} + \setkomafont{captionlabel}{% + \usekomafont{descriptionlabel}% + } +\end{lstcode} + Weitere Beispiele finden Sie in den Abschnitten zu den jeweiligen + Elementen. + \end{Example} + + \begin{desclist} + \desccaption{% + Elemente, deren Schrift bei \Class{scrbook}, \Class{scrreprt} oder + \Class{scrartcl} mit \Macro{setkomafont} und \Macro{addtokomafont} + verändert werden kann% + \label{tab:maincls.fontelements}% + \label{tab:scrextend.fontelements}% + }{% + Elemente, deren Schrift verändert werden kann (\emph{Fortsetzung})% + }% + \feentry{author}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{scrextend}}% + Autorangaben im Haupttitel des Dokuments mit + \DescRef{\ThisCommonLabelBase.cmd.maketitle}, also das Argument von + \DescRef{\ThisCommonLabelBase.cmd.author} (siehe + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.author})}% + \feentry{caption}{Text einer Abbildungs- oder Tabellenunter- oder + "~überschrift (siehe \autoref{sec:maincls.floats}, + \DescPageRef{maincls.cmd.caption})}% + \feentry{captionlabel}{% + Label einer Abbildungs- oder Tabellenunter- oder "~überschrift; + Anwendung erfolgt nach dem Element + \DescRef{\ThisCommonLabelBase.fontelement.caption} (siehe + \autoref{sec:maincls.floats}, \DescPageRef{maincls.cmd.caption})}% + \feentry{chapter}{% + Überschrift der Ebene \DescRef{\ThisCommonLabelBase.cmd.chapter} (siehe + \autoref{sec:maincls.structure}, \DescPageRef{maincls.cmd.chapter})}% + \feentry{chapterentry}{% + Inhaltsverzeichniseintrag der Ebene + \DescRef{\ThisCommonLabelBase.cmd.chapter} (siehe + \autoref{sec:maincls.toc}, \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{chapterentrydots}{% + \ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}}% + Optionale Verbindungspunkte in Inhaltsverzeichniseinträgen der Ebene + \DescRef{\ThisCommonLabelBase.cmd.chapter} abweichend vom Element + \DescRef{\ThisCommonLabelBase.fontelement.chapterentrypagenumber} (siehe + \autoref{sec:maincls.toc}, \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{chapterentrypagenumber}{% + Seitenzahl des Inhaltsverzeichniseintrags der Ebene + \DescRef{\ThisCommonLabelBase.cmd.chapter} abweichend vom Element + \DescRef{\ThisCommonLabelBase.fontelement.chapterentry} (siehe + \autoref{sec:maincls.toc}, \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{chapterprefix}{% + Kapitelnummernzeile sowohl bei Einstellung + \OptionValueRef{maincls}{chapterprefix}{true} als auch + \OptionValueRef{maincls}{appendixprefix}{true} (siehe + \autoref{sec:maincls.structure}, + \DescPageRef{maincls.option.chapterprefix})}% + \feentry{date}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{scrextend}}% + Datum im Haupttitel des Dokuments mit + \DescRef{\ThisCommonLabelBase.cmd.maketitle}, also das Argument von + \DescRef{\ThisCommonLabelBase.cmd.date} (siehe + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.date})}% + \feentry{dedication}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{scrextend}}% + Widmung nach dem Haupttitel des Dokuments mit + \DescRef{\ThisCommonLabelBase.cmd.maketitle}, also das Argument von + \DescRef{\ThisCommonLabelBase.cmd.dedication} (siehe + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.dedication})}% + \feentry{descriptionlabel}{% + Label, also das optionale Argument der + \DescRef{\ThisCommonLabelBase.cmd.item.description}-Anweisung, in einer + \DescRef{\ThisCommonLabelBase.env.description}-Umgebung (siehe + \autoref{sec:maincls.lists}, \DescPageRef{maincls.env.description})}% + \feentry{dictum}{% + mit \DescRef{\ThisCommonLabelBase.cmd.dictum} gesetzter schlauer Spruch + (siehe \autoref{sec:maincls.dictum}, \DescPageRef{maincls.cmd.dictum})}% + \feentry{dictumauthor}{% + Urheber eines schlauen Spruchs; Anwendung erfolgt nach dem Element + \DescRef{\ThisCommonLabelBase.fontelement.dictum} (siehe + \autoref{sec:maincls.dictum}, \DescPageRef{maincls.cmd.dictum})}% + \feentry{dictumtext}{% + alternative Bezeichnung für + \DescRef{\ThisCommonLabelBase.fontelement.dictum}}% + \feentry{disposition}{% + alle Gliederungsüberschriften, also die Argumente von + \DescRef{\ThisCommonLabelBase.cmd.part} bis + \DescRef{\ThisCommonLabelBase.cmd.subparagraph} und + \DescRef{\ThisCommonLabelBase.cmd.minisec} sowie die Überschrift der + Zusammenfassung; die Anwendung erfolgt vor dem Element der jeweiligen + Gliederungsebene (siehe \autoref{sec:maincls.structure} ab + \autopageref{sec:maincls.structure})}% + \feentry{footnote}{% + Marke und Text einer Fußnote (siehe \autoref{sec:maincls.footnotes}, + \DescPageRef{maincls.cmd.footnote})}% + \feentry{footnotelabel}{% + Marke einer Fußnote; Anwendung erfolgt nach dem Element + \DescRef{\ThisCommonLabelBase.fontelement.footnote} (siehe + \autoref{sec:maincls.footnotes}, \DescPageRef{maincls.cmd.footnote})}% + \feentry{footnotereference}{% + Referenzierung der Fußnotenmarke im Text (siehe + \autoref{sec:maincls.footnotes}, \DescPageRef{maincls.cmd.footnote})}% + \feentry{footnoterule}{% + Linie\ChangedAt{v3.07}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} über dem Fußnotenapparat (siehe + \autoref{sec:maincls.footnotes}, + \DescPageRef{maincls.cmd.setfootnoterule})}% + \feentry{labelinglabel}{% + Label, also das optionale Argument der + \DescRef{\ThisCommonLabelBase.cmd.item.labeling}-Anweisung, und + Trennzeichen, also das optionale Argument der + \DescRef{\ThisCommonLabelBase.env.labeling}-Umgebung, in einer + \DescRef{\ThisCommonLabelBase.env.labeling}-Umgebung (siehe + \autoref{sec:maincls.lists}, \DescPageRef{maincls.env.labeling})}% + \feentry{labelingseparator}{% + Trennzeichen, also das optionale Argument der + \DescRef{\ThisCommonLabelBase.env.labeling}-Umgebung, in einer + \DescRef{\ThisCommonLabelBase.env.labeling}-Umgebung; Anwendung erfolgt + nach dem Element + \DescRef{\ThisCommonLabelBase.fontelement.labelinglabel} (siehe + \autoref{sec:maincls.lists}, \DescPageRef{maincls.env.labeling})}% + \feentry{minisec}{% + mit \DescRef{\ThisCommonLabelBase.cmd.minisec} gesetzte Überschrift + (siehe \autoref{sec:maincls.structure} ab + \DescPageRef{maincls.cmd.minisec})}% + \feentry{pagefoot}{% + wird nur verwendet, wenn das Paket \Package{scrlayer-scrpage} geladen + ist (siehe \autoref{cha:scrlayer-scrpage}, + \DescPageRef{scrlayer-scrpage.fontelement.pagefoot})}% + \feentry{pagehead}{% + alternative Bezeichnung für + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}}% + \feentry{pageheadfoot}{% + Seitenkopf und Seitenfuß bei allen von \KOMAScript{} definierten + Seitenstilen (siehe \autoref{sec:maincls.pagestyle} ab + \autopageref{sec:maincls.pagestyle})}% + \feentry{pagenumber}{% + Seitenzahl im Kopf oder Fuß der Seite (siehe + \autoref{sec:maincls.pagestyle})}% + \feentry{pagination}{% + alternative Bezeichnung für + \DescRef{\ThisCommonLabelBase.fontelement.pagenumber}}% + \feentry{paragraph}{% + Überschrift der Ebene \DescRef{\ThisCommonLabelBase.cmd.paragraph} + (siehe \autoref{sec:maincls.structure}, + \DescPageRef{maincls.cmd.paragraph})}% + \feentry{part}{% + Überschrift der Ebene \DescRef{\ThisCommonLabelBase.cmd.part}, jedoch + ohne die Zeile mit der Nummer des Teils (siehe + \autoref{sec:maincls.structure}, \DescPageRef{maincls.cmd.part})}% + \feentry{partentry}{% + Inhaltsverzeichniseintrag der Ebene + \DescRef{\ThisCommonLabelBase.cmd.part} (siehe + \autoref{sec:maincls.toc}, \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{partentrypagenumber}{% + Seitenzahl des Inhaltsverzeichniseintrags der Ebene + \DescRef{\ThisCommonLabelBase.cmd.part} abweichend vom Element + \DescRef{\ThisCommonLabelBase.fontelement.partentry} (siehe + \autoref{sec:maincls.toc}, \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{partnumber}{% + Zeile mit der Nummer des Teils in Überschrift der Ebene + \DescRef{\ThisCommonLabelBase.cmd.part} (siehe + \autoref{sec:maincls.structure}, \DescPageRef{maincls.cmd.part})}% + \feentry{publishers}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{scrextend}}% + Verlagsangabe im Haupttitel des Dokuments mit + \DescRef{\ThisCommonLabelBase.cmd.maketitle}, also das Argument von + \DescRef{\ThisCommonLabelBase.cmd.publishers} (siehe + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.publishers})}% + \feentry{section}{% + Überschrift der Ebene \DescRef{\ThisCommonLabelBase.cmd.section} (siehe + \autoref{sec:maincls.structure}, \DescPageRef{maincls.cmd.section})}% + \feentry{sectionentry}{% + Inhaltsverzeichniseintrag der Ebene + \DescRef{\ThisCommonLabelBase.cmd.section} (nur bei \Class{scrartcl} + verfügbar, siehe \autoref{sec:maincls.toc}, + \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{sectionentrydots}{% + \ChangedAt{v3.15}{\Class{scrartcl}}% + Optionale Verbindungspunkte in Inhaltsverzeichniseinträgen der Ebene + \DescRef{\ThisCommonLabelBase.cmd.section} abweichend vom Element + \DescRef{\ThisCommonLabelBase.fontelement.sectionentrypagenumber} (nur + bei \Class{scrartcl} verfügbar, siehe \autoref{sec:maincls.toc}, + \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{sectionentrypagenumber}{% + Seitenzahl des Inhaltsverzeichniseintrags der Ebene + \DescRef{\ThisCommonLabelBase.cmd.section} abweichend vom Element + \DescRef{\ThisCommonLabelBase.fontelement.sectionentry} (nur bei + \Class{scrartcl} verfügbar, siehe \autoref{sec:maincls.toc}, + \DescPageRef{maincls.cmd.tableofcontents})}% + \feentry{sectioning}{% + alternative Bezeichnung für + \DescRef{\ThisCommonLabelBase.fontelement.disposition}}% + \feentry{subject}{% + Typisierung des Dokuments, also das Argument von + \DescRef{\ThisCommonLabelBase.cmd.subject} auf der Haupttitelseite mit + \DescRef{\ThisCommonLabelBase.cmd.maketitle} (siehe + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.subject})}% + \feentry{subparagraph}{% + Überschrift der Ebene \DescRef{\ThisCommonLabelBase.cmd.subparagraph} + (siehe \autoref{sec:maincls.structure}, + \DescPageRef{maincls.cmd.subparagraph})}% + \feentry{subsection}{% + Überschrift der Ebene \DescRef{\ThisCommonLabelBase.cmd.subsection} + (siehe \autoref{sec:maincls.structure}, + \DescPageRef{maincls.cmd.subsection})}% + \feentry{subsubsection}{% + Überschrift der Ebene \DescRef{\ThisCommonLabelBase.cmd.subsubsection} + (siehe \autoref{sec:maincls.structure}, + \DescPageRef{maincls.cmd.subsubsection})}% + \feentry{subtitle}{% + Untertitel des Dokuments, also das Argument von + \DescRef{\ThisCommonLabelBase.cmd.subtitle} auf der Haupttitelseite mit + \DescRef{\ThisCommonLabelBase.cmd.maketitle} (siehe + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.title})}% + \feentry{title}{% + Haupttitel des Dokuments, also das Argument von + \DescRef{\ThisCommonLabelBase.cmd.title} bei Verwendung von + \DescRef{\ThisCommonLabelBase.cmd.maketitle} (bezüglich der Größe des + Haupttitels siehe die ergänzenden Bemerkungen im Text von + \autoref{sec:maincls.titlepage} ab \DescPageRef{maincls.cmd.title})}% + \feentry{titlehead}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{scrextend}}% + Kopf über dem Haupttitel des Dokuments, also das Argument von + \DescRef{\ThisCommonLabelBase.cmd.titlehead} mit + \DescRef{\ThisCommonLabelBase.cmd.maketitle} (siehe + \autoref{sec:maincls.titlepage}, \DescPageRef{maincls.cmd.titlehead})}% + \end{desclist} +\else + \IfThisCommonLabelBase{scrextend}{\iftrue}{\csname iffalse\endcsname} + \begin{Example} + Angenommen, Sie wollen, dass der Titel in Serifenschrift und rot gesetzt + wird. Das erreichen Sie einfach mit: +\begin{lstcode}[moretexcs=color] + \setkomafont{title}{% + \color{red}% + } +\end{lstcode} + Für die Anweisung \Macro{color}\PParameter{red} wird das Paket + \Package{color} oder \Package{xcolor} benötigt. Die zusätzliche Angabe + von \Macro{normalfont} ist in diesem Beispiel deshalb nicht notwendig, + weil diese Anweisung bereits in der Definition des Titels enthalten + ist. Das\textnote{Achtung!} Beispiel setzt voraus, dass + \OptionValueRef{scrextend}{extendedfeature}{title} gesetzt ist + (siehe \autoref{sec:scrextend.optionalFeatures}, + \DescPageRef{scrextend.option.extendedfeature}). + \end{Example} + \else + \IfThisCommonLabelBase{scrlttr2}{% + Ein allgemeines Beispiel für die Anwendung sowohl von + \Macro{setkomafont} als auch + \Macro{usekomafont} finden Sie in \autoref{sec:maincls.textmarkup}, + \PageRefxmpl{maincls.cmd.setkomafont}. + + \begin{desclist} + \desccaption{% + Elemente, deren Schrift bei der Klasse \Class{scrlttr2} oder + dem Paket \Package{scrletter} mit \Macro{setkomafont} und + \Macro{addtokomafont} verändert werden + kann\label{tab:scrlttr2.fontelements}% + }{% + Elemente, deren Schrift verändert werden kann (\emph{Fortsetzung})% + }% + \feentry{addressee}{Name und Anschrift im Anschriftfenster + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.option.addrfield})}% + \feentry{backaddress}{Rücksendeadresse für einen Fensterbriefumschlag + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.option.backaddress})}% + \feentry{descriptionlabel}{Label, also das optionale Argument von + \DescRef{\ThisCommonLabelBase.cmd.item.description}, in einer + \DescRef{\ThisCommonLabelBase.env.description}-Umgebung + (\autoref{sec:scrlttr2.lists}, + \DescPageRef{scrlttr2.env.description})}% + \feentry{foldmark}{Faltmarke auf dem Briefpapier; ermöglicht Änderung + der Linienfarbe (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.option.foldmarks})}% + \feentry{footnote}{% + Marke und Text einer Fußnote (\autoref{sec:scrlttr2.footnotes}, + \DescPageRef{scrlttr2.cmd.footnote})}% + \feentry{footnotelabel}{% + Marke einer Fußnote; Anwendung erfolgt nach dem Element + \DescRef{\ThisCommonLabelBase.fontelement.footnote} + (\autoref{sec:scrlttr2.footnotes}, + \DescPageRef{scrlttr2.cmd.footnote})}% + \feentry{footnotereference}{% + Referenzierung der Fußnotenmarke im Text + (\autoref{sec:scrlttr2.footnotes}, + \DescPageRef{scrlttr2.cmd.footnote})}% + \feentry{footnoterule}{% + Linie\ChangedAt{v3.07}{\Class{scrlttr2}} über dem Fußnotenapparat + (\autoref{sec:scrlttr2.footnotes}, + \DescPageRef{scrlttr2.cmd.setfootnoterule})}% + \feentry{fromaddress}{Absenderadresse im Briefkopf + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.fromaddress})}% + \feentry{fromname}{Name des Absenders im Briefkopf abweichend von + \PValue{fromaddress} (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.fromname})}% + \feentry{fromrule}{Linie im Absender im Briefkopf; gedacht für + Farbänderungen (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.option.fromrule})}% + \feentry{labelinglabel}{% + Label, also das optionale Argument der + \DescRef{\ThisCommonLabelBase.cmd.item.labeling}-Anweisung, und + Trennzeichen, also das optionale Argument der + \DescRef{\ThisCommonLabelBase.env.labeling}-Umgebung, in einer + \DescRef{\ThisCommonLabelBase.env.labeling}-Umgebung (siehe + \autoref{sec:scrlttr2.lists}, \DescPageRef{scrlttr2.env.labeling})}% + \feentry{labelingseparator}{% + Trennzeichen, also das optionale Argument der + \DescRef{\ThisCommonLabelBase.env.labeling}-Umgebung, in einer + \DescRef{\ThisCommonLabelBase.env.labeling}-Umgebung; Anwendung + erfolgt nach dem Element + \DescRef{\ThisCommonLabelBase.fontelement.labelinglabel} (siehe + \autoref{sec:scrlttr2.lists}, \DescPageRef{scrlttr2.env.labeling})}% + \feentry{pagefoot}{% + wird nach dem Element + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot} + für den mit Variable + \DescRef{scrlttr2.variable.nextfoot}\IndexVariable{nextfoot} + definierten Seitenfuß verwendet oder wenn das Paket + \Package{scrlayer-scrpage} geladen ist + (\autoref{cha:scrlayer-scrpage}, + \DescPageRef{scrlayer-scrpage.fontelement.pagefoot})}% + \feentry{pagehead}{% + alternative Bezeichnung für + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}}% + \feentry{pageheadfoot}{% + Seitenkopf und Seitenfuß bei allen von \KOMAScript{} definierten + Seitenstilen (\autoref{sec:maincls.pagestyle}, + \DescPageRef{\ThisCommonLabelBase.fontelement.pageheadfoot})}% + \feentry{pagenumber}{% + Seitenzahl im Kopf oder Fuß der Seite + (\autoref{sec:maincls.pagestyle}, + \DescPageRef{\ThisCommonLabelBase.fontelement.pagenumber})}% + \feentry{pagination}{% + alternative Bezeichnung für + \DescRef{\ThisCommonLabelBase.fontelement.pagenumber}}% + \feentry{placeanddate}{% + \ChangedAt{v3.12}{\Class{scrlttr2}}% + Ort und Datum, falls statt einer Geschäftszeile nur eine Datumszeile + verwendet wird (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.placeseparator})}% + \feentry{refname}{% + Bezeichnung der Felder in der Geschäftszeile + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.yourref})}% + \feentry{refvalue}{% + Werte der Felder in der Geschäftszeile + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.yourref})}% + \feentry{specialmail}{Versandart im Anschriftfenster + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.specialmail})}% + \feentry{lettersubject}{% + \ChangedAt{v3.17}{\Class{scrlttr2}\and \Package{scrletter}}% + Betreff in der Brieferöffnung (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.subject})}% + \feentry{lettertitle}{% + \ChangedAt{v3.17}{\Class{scrlttr2}\and \Package{scrletter}}% + Titel in der Brieferöffnung (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.title})}% + \feentry{toaddress}{Abweichung vom Element + \DescRef{\ThisCommonLabelBase.fontelement.addressee} für die + Anschrift (ohne Name) des Empfängers im Anschriftfeld + (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.toaddress})}% + \feentry{toname}{Abweichung vom Element + \DescRef{\ThisCommonLabelBase.fontelement.addressee} für den Namen + des Empfängers im Anschriftfeld (\autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.variable.toname})}% + \end{desclist} + }{% + \IfThisCommonLabelBase{scrlayer-scrpage}{% + \begin{desclist} + \desccaption[{Elemente, deren Schrift bei \Package{scrlayer-scrpage} + mit \Macro{setkomafont} und \Macro{addtokomafont} verändert werden + kann, einschließlich der jeweiligen Voreinstellung}]% + {Elemente, deren Schrift bei \Package{scrlayer-scrpage} mit + \Macro{setkomafont} und \Macro{addtokomafont} verändert werden + kann, einschließlich der jeweiligen Voreinstellung, falls die + Elemente beim Laden von \Package{scrlayer-scrpage} nicht bereits + definiert sind% + \label{tab:scrlayer-scrpage.fontelements}% + }% + {Elemente, deren Schrift verändert werden kann + (\emph{Fortsetzung})}% + \feentry{footbotline}{% + Linie unter dem Fuß eines mit \Package{scrlayer-scrpage} + definierten Seitenstils (siehe + \autoref{sec:scrlayer-scrpage.pagestyle.content}, + \DescPageRef{scrlayer-scrpage.fontelement.footbotline}). Das + Element wird nach \Macro{normalfont}\IndexCmd{normalfont} und nach + den Elementen + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}% + \IndexFontElement{pageheadfoot} und + \DescRef{\ThisCommonLabelBase.fontelement.pagefoot}% + \IndexFontElement{pagefoot} angewandt. Es wird empfohlen, dieses + Element lediglich für Farbänderungen zu verwenden.\par + \mbox{Voreinstellung: \emph{leer}}% + }% + \feentry{footsepline}{% + Linie über dem Fuß eines mit \Package{scrlayer-scrpage} + definierten Seitenstils (siehe + \autoref{sec:scrlayer-scrpage.pagestyle.content}, + \DescPageRef{scrlayer-scrpage.fontelement.footsepline}). Das + Element wird nach \Macro{normalfont}\IndexCmd{normalfont} und nach + den Elementen + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}% + \IndexFontElement{pageheadfoot} und + \DescRef{\ThisCommonLabelBase.fontelement.pagefoot}% + \IndexFontElement{pagefoot} angewandt. Es wird empfohlen, dieses + Element lediglich für Farbänderungen zu verwenden.\par + \mbox{Voreinstellung: \emph{leer}}% + }% + \feentry{headsepline}{% + Linie unter dem Kopf eines mit \Package{scrlayer-scrpage} + definierten Seitenstils (siehe + \autoref{sec:scrlayer-scrpage.pagestyle.content}, + \DescPageRef{scrlayer-scrpage.fontelement.headsepline}). Das + Element wird nach \Macro{normalfont}\IndexCmd{normalfont} und nach + den Elementen + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}% + \IndexFontElement{pageheadfoot} und + \DescRef{scrlayer-scrpage.fontelement.pagehead}% + \IndexFontElement{pagehead} angewandt. Es wird empfohlen, dieses + Element lediglich für Farbänderungen zu verwenden.\par + \mbox{Voreinstellung: \emph{leer}}% + }% + \feentry{headtopline}{% + Linie über dem Kopf eines mit \Package{scrlayer-scrpage} + definierten Seitenstils (siehe + \autoref{sec:scrlayer-scrpage.pagestyle.content}, + \DescPageRef{scrlayer-scrpage.fontelement.headtopline}). Das + Element wird nach \Macro{normalfont}\IndexCmd{normalfont} und nach + den Elementen + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}% + \IndexFontElement{pageheadfoot} und + \DescRef{scrlayer-scrpage.fontelement.pagehead}% + \IndexFontElement{pagehead} angewandt. Es wird empfohlen, dieses + Element lediglich für Farbänderungen zu verwenden.\par + \mbox{Voreinstellung: \emph{leer}}% + }% + \feentry{pagefoot}{% + Inhalt eines Fußes eines mit \Package{scrlayer-scrpage} + definierten Seitenstils (siehe + \autoref{sec:scrlayer-scrpage.predefined.pagestyles}, + \DescPageRef{scrlayer-scrpage.fontelement.pagefoot}). Das Element + wird nach \Macro{normalfont}\IndexCmd{normalfont} und nach dem + Element \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}% + \IndexFontElement{pageheadfoot} angewandt.\par + \mbox{Voreinstellung: \emph{leer}}% + }% + \feentry{pagehead}{% + Inhalt eines Kopfes eines mit \Package{scrlayer-scrpage} + definierten Seitenstils (siehe + \autoref{sec:scrlayer-scrpage.predefined.pagestyles}, + \DescPageRef{scrlayer-scrpage.fontelement.pagehead}). Das Element + wird nach \Macro{normalfont}\IndexCmd{normalfont} und nach Element + \DescRef{\ThisCommonLabelBase.fontelement.pageheadfoot}% + \IndexFontElement{pageheadfoot} angewandt.\par + \mbox{Voreinstellung: \emph{leer}}% + }% + \feentry{pageheadfoot}{% + Inhalt eines Kopfes oder Fußes eines mit + \Package{scrlayer-scrpage} definierten Seitenstils (siehe + \autoref{sec:scrlayer-scrpage.predefined.pagestyles}, + \DescPageRef{scrlayer-scrpage.fontelement.pageheadfoot}). Das + Element wird nach \Macro{normalfont}\IndexCmd{normalfont} + angewandt.\par + \mbox{Voreinstellung: + \Macro{normalcolor}\Macro{slshape}}% + }% + \feentry{pagenumber}{% + Die mit \DescRef{\ThisCommonLabelBase.cmd.pagemark} gesetzte + Paginierung (siehe + \autoref{sec:scrlayer-scrpage.predefined.pagestyles}, + \DescPageRef{scrlayer-scrpage.fontelement.pagenumber}). Bei einer + etwaigen Umdefinierung von + \DescRef{\ThisCommonLabelBase.cmd.pagemark} ist dafür zu sorgen, + dass die Umdefinierung auch ein + \Macro{usekomafont}\PParameter{pagenumber} enthält!\par + \mbox{Voreinstellung: \Macro{normalfont}}% + }% + \end{desclist} + }{% + \IfThisCommonLabelBase{scrjura}{% + \begin{table} + \caption{Elemente, deren Schrift bei \Package{scrjura} mit + \Macro{setkomafont} und \Macro{addtokomafont} verändert werden + kann, einschließlich der jeweiligen Voreinstellung}% + \label{tab:scrjura.fontelements}% + \begin{desctabular} + \feentry{Clause}{% + Alias für \FontElement{\PName{Umgebungsname}.Clause} + innerhalb einer Vertragsumgebung, beispielsweise + \FontElement{contract.Clause} innerhalb von + \DescRef{\ThisCommonLabelBase.env.contract}; ist kein + entsprechendes Element definiert, so wird auf + \FontElement{contract.Clause} zurückgegriffen% + }% + \feentry{contract.Clause}{% + Überschrift eines Paragraphen innerhalb von + \DescRef{\ThisCommonLabelBase.env.contract} (siehe + \autoref{sec:\ThisCommonLabelBase.contract}, + \DescPageRef{\ThisCommonLabelBase.fontelement.contract.Clause}); + \par + \mbox{Voreinstellung: + \Macro{sffamily}\Macro{bfseries}\Macro{large}}% + }% + \entry{\DescRef{\ThisCommonLabelBase.fontelement./Name/.Clause}}{% + \IndexFontElement[indexmain]{\PName{Name}.Clause}% + Überschrift eines Paragraphen innerhalb einer Umgebung + \PName{Name}, die mit + \DescRef{\ThisCommonLabelBase.cmd.DeclareNewJuraEnvironment} + definiert wurde, soweit bei der Definition mit + \Option{ClauseFont} eine Einstellung vorgenommen wurde oder + das Element nachträglich definiert wurde (siehe + \autoref{sec:\ThisCommonLabelBase.newenv}, + \DescPageRef{\ThisCommonLabelBase.fontelement./Name/.Clause}); + \par + \mbox{Voreinstellung: \emph{keine}}% + }% + \feentry{parnumber}{% + Absatznummern innerhalb einer Vertragsumgebung (siehe + \autoref{sec:\ThisCommonLabelBase.par}, + \DescPageRef{\ThisCommonLabelBase.fontelement.parnumber});\par + \mbox{Voreinstellung: \emph{leer}}% + }% + \feentry{sentencenumber}{% + \ChangedAt{v3.26}{\Package{scrjura}}% + Satznummer der Anweisung + \DescRef{\ThisCommonLabelBase.cmd.Sentence} (siehe + \autoref{sec:\ThisCommonLabelBase.sentence}, \DescPageRef{% + \ThisCommonLabelBase.fontelement.sentencenumber});\par + \mbox{Voreinstellung: \emph{leer}}% + }% + \end{desctabular} + \end{table} + }{% + \IfThisCommonLabelBase{scrlayer-notecolumn}{}{% + \InternalCommonFileUsageError% + }% + }% + }% + }% + \fi% +\fi +\EndIndexGroup + + +\begin{Declaration} + \Macro{usefontofkomafont}\Parameter{Element}% + \Macro{useencodingofkomafont}\Parameter{Element}% + \Macro{usesizeofkomafont}\Parameter{Element}% + \Macro{usefamilyofkomafont}\Parameter{Element}% + \Macro{useseriesofkomafont}\Parameter{Element}% + \Macro{useshapeofkomafont}\Parameter{Element}% +\end{Declaration} +Manchmal\ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Package{scrextend}} werden in der Schrifteinstellung +eines Elements auch Dinge vorgenommen, die mit der Schrift eigentlich gar +nichts zu tun haben, obwohl dies ausdrücklich nicht empfohlen wird. Soll dann +nur die Schrifteinstellung, aber keine dieser zusätzlichen Einstellungen +ausgeführt werden, so kann statt +\DescRef{\ThisCommonLabelBase.cmd.usekomafont} die Anweisung +\Macro{usefontofkomafont} verwendet werden. Diese Anweisung übernimmt nur die +Schriftgröße und den Grundlinienabstand, die Codierung +(engl. \emph{encoding}), die Familie (engl. \emph{family}), die Strichstärke +oder Ausprägung (engl. \emph{font series}) und die Form oder Ausrichtung +(engl. \emph{font shape}). + +Mit den übrigen Anweisungen können auch einzelne Schriftattribute +übernommen werden. Dabei übernimmt \Macro{usesizeofkomafont} sowohl die +Schriftgröße als auch den Grundlinienabstand.% +% +\IfThisCommonLabelBase{scrextend}{% Umbruchvariante! +}{% + \IfThisCommonLabelBase{scrjura}{% + \par% + Vor dem Missbrauch der Schrifteinstellungen wird dennoch dringend gewarnt + (siehe \autoref{sec:maincls-experts.experts}, + \DescPageRef{maincls-experts.cmd.addtokomafontrelaxlist})!% + }{% + \par% + Diese Befehle sollten jedoch nicht als Legitimation dafür verstanden + werden, in die Schrifteinstellungen der Elemente beliebige Anweisungen + einzufügen. Das kann nämlich sehr schnell zu Fehlern führen (siehe + \autoref{sec:maincls-experts.experts}, + \DescPageRef{maincls-experts.cmd.addtokomafontrelaxlist}).% + }% +}% +\EndIndexGroup +% +\EndIndexGroup + + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-titles.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-titles.tex new file mode 100644 index 0000000000..2086df85c4 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-titles.tex @@ -0,0 +1,723 @@ +% ====================================================================== +% common-titles.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-titles.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-titles.tex} + [$Date: 2018-01-30 13:37:05 +0100 (Tue, 30 Jan 2018) $ + KOMA-Script guide (common paragraphs)] + + + + + +\section{Dokumenttitel} +\seclabel{titlepage}% +\BeginIndexGroup +\BeginIndex{}{Titel}% + +\IfThisCommonFirstRun{}{% + Es gilt sinngemäß, was in \autoref{sec:\ThisCommonFirstLabelBase.titlepage} + geschrieben wurde. Falls Sie also + \autoref{sec:\ThisCommonFirstLabelBase.titlepage} bereits gelesen und + verstanden haben, können Sie auf + \autopageref{sec:\ThisCommonLabelBase.titlepage.next} mit + \autoref{sec:\ThisCommonLabelBase.titlepage.next} fortfahren.% +}% +\IfThisCommonLabelBase{scrextend}{\iftrue}{\csname iffalse\endcsname}% + \ Die\textnote{Achtung!} Möglichkeiten von \Package{scrextend} zum + Dokumenttitel gehören jedoch zu den optionalen, erweiterten Möglichkeiten + und stehen daher nur zur Verfügung, wenn beim Laden des Pakets + \OptionValueRef{\ThisCommonLabelBase}{extendedfeature}{title} gewählt + wurde (siehe \autoref{sec:\ThisCommonLabelBase.optionalFeatures}, + \DescPageRef{\ThisCommonLabelBase.option.extendedfeature}). + + Darüber hinaus kann \Package{scrextend} nicht mit einer \KOMAScript-Klasse + zusammen verwendet werden. In allen Beispielen aus + \autoref{sec:maincls.titlepage} muss daher bei Verwendung von + \Package{scrextend} +\begin{lstcode} + \documentclass{scrbook} +\end{lstcode} +durch +\begin{lstcode} + \documentclass{book} + \usepackage[extendedfeature=title]{scrextend} +\end{lstcode} + ersetzt werden. +\fi + +Bei Dokumenten wird zwischen zwei Arten von Titeln +\IfThisCommonLabelBase{scrextend}{}{für das gesamte Dokument +}unterschieden. Zum einen gibt es die Titelseiten. Hierbei steht der +Dokumenttitel zusammen mit einigen zusätzlichen Informationen wie dem Autor +auf einer eigenen Seite. Neben der Haupttitelseite kann es weitere +Titelseiten, etwa Schmutztitel, Verlagsinformationen, Widmung oder ähnliche, +geben. Zum anderen gibt es den Titelkopf. Dabei erscheint der Titel lediglich +am Anfang einer neuen \IfThisCommonLabelBase{scrextend}{}{-- in der Regel der + ersten -- }Seite. Unterhalb dieser Titelzeilen\Index{Titel>Zeilen} wird +\IfThisCommonLabelBase{scrextend}{}{das Dokument }beispielsweise mit der +Zusammenfassung, einem Vorwort oder dem Inhaltsverzeichnis +\IfThisCommonLabelBase{scrextend}{fortgefahren}{fortgesetzt}. + + +\begin{Declaration} + \OptionVName{titlepage}{Ein-Aus-Wert} + \OptionValue{titlepage}{firstiscover} + \Macro{coverpagetopmargin} + \Macro{coverpageleftmargin} + \Macro{coverpagerightmargin} + \Macro{coverpagebottommargin} +\end{Declaration}% +Mit dieser Option% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{} wird ausgewählt, ob für die mit +\DescRef{\ThisCommonLabelBase.cmd.maketitle} (siehe +\DescPageRef{\ThisCommonLabelBase.cmd.maketitle}) gesetzte Titelei eigene +Seiten\Index{Titel>Seite} verwendet werden oder stattdessen die Titelei von +\DescRef{\ThisCommonLabelBase.cmd.maketitle} als Titelkopf\Index{Titel>Kopf} +gesetzt wird. Als \PName{Ein-Aus-Wert} kann einer der Standardwerte für +einfache Schalter aus \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} verwendet werden. + +Mit \OptionValue{titlepage}{true}\important{\OptionValue{titlepage}{true}} +\IfThisCommonLabelBase{scrextend}{}{oder \Option{titlepage} }wird die Titelei +in Form von Titelseiten ausgewählt. Die Anweisung +\DescRef{\ThisCommonLabelBase.cmd.maketitle} verwendet +\IfThisCommonLabelBase{scrextend}{dabei +}{}\DescRef{\ThisCommonLabelBase.env.titlepage}-Umgebungen zum Setzen dieser +Seiten, die somit normalerweise weder Seitenkopf noch Seitenfuß erhalten. Bei +{\KOMAScript} wurde die Titelei gegenüber den Standardklassen stark +erweitert. Die zusätzlichen Elemente finden sie auf den nachfolgenden Seiten. + +Demgegenüber wird mit +\important{\OptionValue{titlepage}{false}}\OptionValue{titlepage}{false} +erreicht, dass ein Titelkopf (engl.: \emph{in-page title}) gesetzt wird. Das +heißt, die Titelei wird lediglich speziell hervorgehoben. Auf der Seite mit +dem Titel kann aber nachfolgend weiteres Material, beispielsweise eine +Zusammenfassung oder ein Abschnitt, gesetzt werden. + +Mit% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.12}{\Package{scrextend}}% + }{\InternalCommonFileUseError}% +} der dritten Möglichkeit, \OptionValue{titlepage}{firstiscover}% +\important{\OptionValue{titlepage}{firstiscover}}, werden nicht nur +Titelseiten aktiviert. Es wird auch dafür gesorgt, dass die erste von +\DescRef{\LabelBase.cmd.maketitle}\IndexCmd{maketitle} ausgegebene Titelseite, +also entweder der Schmutztitel oder der Haupttitel, als +Umschlagseite\Index{Umschlag} ausgegeben wird. Jede andere Einstellung für die +Option \Option{titlepage} hebt diese Einstellung wieder auf. Die +Ränder\important{\Macro{coverpage\dots margin}} dieser Umschlagseite werden +über \Macro{coverpagetopmargin} (oberer Rand), \Macro{coverpageleftmargin} +(linker Rand), \Macro{coverpagerightmargin} (rechter Rand) und natürlich +\Macro{coverpagebottommargin} (unterer Rand) bestimmt. Die Voreinstellungen +sind von den Längen \Length{topmargin}\IndexLength{topmargin} und +\Length{evensidemargin}\IndexLength{evensidemargin} abhängig und können mit +\Macro{renewcommand} geändert werden. + +\IfThisCommonLabelBase{maincls}{% + Bei den Klassen \Class{scrbook} und \Class{scrreprt} sind Titelseiten + voreingestellt. Demgegenüber verwendet \Class{scrartcl} in der + Voreinstellung einen Titelkopf.% +}{% + \IfThisCommonLabelBase{scrextend}{% + Die Voreinstellung ist von der verwendeten Klasse abhängig und wird von + \Package{scrextend} kompatibel zu den Standardklassen erkannt. Setzt eine + Klasse keine entsprechende Voreinstellung, so ist der Titelkopf + voreingestellt.% + }{\InternalCommonFileUsageError}% +}% +% +\EndIndexGroup + + +\begin{Declaration} + \begin{Environment}{titlepage}\end{Environment} +\end{Declaration}% +\BeginIndex{Env}{titlepage}% +Grundsätzlich werden bei den Standardklassen und bei {\KOMAScript} alle +Titelseiten in einer speziellen Umgebung, der +\Environment{titlepage}-Umgebung, gesetzt. Diese Umgebung startet immer mit +einer neuen Seite -- im zweiseitigen Layout sogar mit einer neuen rechten +Seite~-- im einspaltigen Modus. Für eine Seite wird der Seitenstil mit +\DescRef{maincls.cmd.thispagestyle}% +\PParameter{\DescRef{maincls.pagestyle.empty}} +geändert, so dass weder Seitenzahl noch Kolumnentitel ausgegeben werden. Am +Ende der Umgebung wird die Seite automatisch beendet. Sollten Sie nicht das +automatische Layout der Titelei, wie es das nachfolgend beschriebene +\DescRef{\ThisCommonLabelBase.cmd.maketitle} bietet, verwenden können, ist zu +empfehlen, eine eigene Titelei mit Hilfe dieser Umgebung zu entwerfen. + +\IfThisCommonFirstRun{\iftrue}{% + Ein Beispiel für eine einfache Titelseite mit \Environment{titlepage} finden + Sie in \autoref{sec:\ThisCommonFirstLabelBase.titlepage}, + \PageRefxmpl{\ThisCommonFirstLabelBase.env.titlepage}.% + \csname iffalse\endcsname% +}% + \begin{Example} + \phantomsection\xmpllabel{env.titlepage}% + Angenommen, Sie wollen eine Titelseite, auf der lediglich oben links + möglichst groß und fett das Wort »Me« steht -- kein Autor, kein Datum, + nichts weiter. Folgendes Dokument ermöglicht das: +\begin{lstcode} + \documentclass{scrbook} + \begin{document} + \begin{titlepage} + \textbf{\Huge Me} + \end{titlepage} + \end{document} +\end{lstcode} + \end{Example} +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{maketitle}\OParameter{Seitenzahl} +\end{Declaration}% +Während\textnote{\KOMAScript{} vs. Standardklassen} bei den Standardklassen +nur maximal eine Titelseite mit den \IfThisCommonLabelBase{scrextend}{}{drei +}Angaben Titel, Autor und Datum existiert, können bei {\KOMAScript} mit +\Macro{maketitle} bis zu sechs Titelseiten gesetzt werden. Im Gegensatz zu +den Standardklassen kennt \Macro{maketitle} bei {\KOMAScript} außerdem noch +ein optionales nummerisches Argument. Findet es Verwendung, so wird die +Nummer als Seitenzahl der ersten Titelseite benutzt. Diese Seitenzahl wird +jedoch nicht ausgegeben, sondern beeinflusst lediglich die Zählung. Sie +sollten hier unbedingt eine ungerade Zahl wählen, da sonst die gesamte Zählung +durcheinander gerät. Meiner Auf"|fassung nach gibt es nur zwei sinnvolle +Anwendungen für das optionale Argument. Zum einen könnte man dem +Schmutztitel\Index[indexmain]{Schmutztitel} die logische Seitenzahl -1 +geben, um so die Seitenzählung erst ab der Haupttitelseite mit 1 zu +beginnen. Zum anderen könnte man mit einer höheren Seitenzahl beginnen, +beispielsweise 3, 5 oder 7, um so weitere Titelseiten zu berücksichtigen, die +erst vom Verlag hinzugefügt werden. Wird ein Titelkopf verwendet, wird das +optionale Argument ignoriert. Dafür kann der Seitenstil einer solchen Titelei +durch Umdefinierung des Makros +\DescRef{\ThisCommonLabelBase.cmd.titlepagestyle}% +\important{\DescRef{\ThisCommonLabelBase.cmd.titlepagestyle}} (siehe +\autoref{sec:maincls.pagestyle}, \DescPageRef{maincls.cmd.titlepagestyle}) +verändert werden. + +Die folgenden Anweisungen führen nicht unmittelbar zum Setzen der Titelei. Das +Setzen der Titelei erfolgt immer mit \Macro{maketitle}. Es sei an dieser +Stelle auch darauf hingewiesen, dass \Macro{maketitle} nicht innerhalb einer +\DescRef{\ThisCommonLabelBase.env.titlepage}-Umgebung zu verwenden +ist. Wie\textnote{Achtung!} in den Beispielen angegeben, sollte man nur +entweder \Macro{maketitle} oder \DescRef{\ThisCommonLabelBase.env.titlepage} +verwenden. + +Mit den nachfolgend erklärten Anweisungen werden lediglich die Inhalte der +Titelei festgelegt. Sie müssen daher auch unbedingt vor \Macro{maketitle} +verwendet werden. Es ist jedoch nicht notwendig und bei Verwendung des +\Package{babel}-Pakets\IndexPackage{babel} (siehe \cite{package:babel}) auch +nicht empfehlenswert, diese Anweisungen in der Dokumentpräambel vor +\Macro{begin}\PParameter{document} zu verwenden. Beispieldokumente finden Sie +\IfThisCommonFirstRun{bei den weiteren Befehlen dieses Abschnitts}{in + \autoref{sec:\ThisCommonFirstLabelBase.titlepage} ab + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.extratitle}}. + + +\begin{Declaration} + \Macro{extratitle}\Parameter{Schmutztitel} + \Macro{frontispiece}\Parameter{Frontispiz} +\end{Declaration}% +\begin{Explain}% + Früher war der Buchblock oftmals nicht durch einen Buchdeckel vor + Verschmutzung geschützt. Diese Aufgabe übernahm dann die erste Seite des + Buches, die meist einen Kurztitel, eben den \emph{Schmutztitel}, trug. Auch + heute noch wird diese Extraseite vor dem eigentlichen Haupttitel gerne + verwendet und enthält dann Verlagsangaben, Buchreihennummer und ähnliche + Angaben. +\end{Explain} +Bei {\KOMAScript} ist es möglich, vor der eigentlichen Titelseite eine weitere +Seite zu setzen. Als \PName{Schmutztitel}\Index{Schmutztitel} kann dabei +beliebiger Text -- auch mehrere Absätze -- gesetzt werden. Der Inhalt von +\PName{Schmutztitel} wird von {\KOMAScript} ohne zusätzliche Beeinflussung der +Formatierung ausgegeben. Dadurch ist dessen Gestaltung völlig dem Anwender +überlassen. Die Rückseite% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.25}{\Class{scrbook}\and\Class{scrreprt}\and\Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.25}{\Package{scrextend}}% + }{\ThisCommonLabelBaseFailure}% +} +des Schmutztitels ist das \PName{Frontispiz}. Der Schmutztitel +ergibt auch dann eine eigene Titelseite, wenn mit Titelköpfen gearbeitet +wird. Die Ausgabe des mit \Macro{extratitle} definierten Schmutztitels erfolgt +als Bestandteil der Titelei mit \DescRef{\ThisCommonLabelBase.cmd.maketitle}. + +\IfThisCommonFirstRun{\iftrue}{% + Ein Beispiel für eine einfache Titelseite mit Schmutztitel und Haupttitel + finden Sie in \autoref{sec:\ThisCommonFirstLabelBase.titlepage}, + \PageRefxmpl{\ThisCommonFirstLabelBase.cmd.extratitle}.% + \csname iffalse\endcsname% +}% + \begin{Example} + \phantomsection\xmpllabel{cmd.extratitle}% + Kommen wir auf das Beispiel von oben zurück und gehen davon aus, dass das + spartanische »Me« nur den Schmutztitel darstellt. Nach dem Schmutztitel + soll noch der Haupttitel folgen. Dann kann wie folgt verfahren werden: +\begin{lstcode} + \documentclass{scrbook} + \begin{document} + \extratitle{\textbf{\Huge Me}} + \title{It's me} + \maketitle + \end{document} +\end{lstcode} + Sie können den Schmutztitel aber auch horizontal zentriert und etwas + tiefer setzen: +\begin{lstcode} + \documentclass{scrbook} + \begin{document} + \extratitle{\vspace*{4\baselineskip} + \begin{center}\textbf{\Huge Me}\end{center}} + \title{It's me} + \maketitle + \end{document} +\end{lstcode} + Die\textnote{Achtung!} Anweisung \DescRef{\ThisCommonLabelBase.cmd.title} + ist beim Setzen der Titelei mit Hilfe von + \DescRef{\ThisCommonLabelBase.cmd.maketitle} grundsätzlich notwendig, + damit die Beispiele fehlerfrei sind. Sie wird nachfolgend erklärt. + \end{Example} +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{titlehead}\Parameter{Kopf} + \Macro{subject}\Parameter{Typisierung} + \Macro{title}\Parameter{Titel} + \Macro{subtitle}\Parameter{Untertitel} + \Macro{author}\Parameter{Autor} + \Macro{date}\Parameter{Datum} + \Macro{publishers}\Parameter{Verlag} + \Macro{and} + \Macro{thanks}\Parameter{Fußnote} +\end{Declaration}% +Für den Inhalt der Haupttitelseite stehen sieben Elemente zur Verfügung. Die +Ausgabe der Haupttitelseite erfolgt als Bestandteil der Titelei mit +\DescRef{\ThisCommonLabelBase.cmd.maketitle}, während die hier aufgeführten +Anweisungen lediglich der Definition der entsprechenden Elemente dienen. + +\BeginIndexGroup\BeginIndex{FontElement}{titlehead}% +\LabelFontElement{titlehead}% +Der\important{\Macro{titlehead}} +\PName{Kopf}\Index[indexmain]{Titel>Seitenkopf} des Haupttitels wird mit der +Anweisung \Macro{titlehead} definiert. Er wird über die gesamte Textbreite in +normalem Blocksatz am Anfang der Seite ausgegeben. Er kann vom Anwender frei +gestaltet werden. Für die Ausgabe wird die +Schrift\important{\FontElement{titlehead}} des gleichnamigen Elements +verwendet (siehe \autoref{tab:\ThisCommonFirstLabelBase.mainTitle}, +\autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}).% +\EndIndexGroup + +\BeginIndexGroup\BeginIndex{FontElement}{subject}\LabelFontElement{subject}% +Die\important{\Macro{subject}} +\PName{Typisierung}\Index[indexmain]{Typisierung} wird unmittelbar über dem +\PName{Titel} in der Schrift\important{\FontElement{subject}} des +gleichnamigen Elements ausgegeben.% +\EndIndexGroup + +\BeginIndexGroup\BeginIndex{FontElement}{title}\LabelFontElement{title}% +Der\important{\Macro{title}} \PName{Titel} wird in einer sehr großen Schrift +gesetzt. Dabei\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v2.8p}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}}{} finden \IfThisCommonLabelBase{scrextend}{}{abgesehen + von der Größe }% Umbruchkorrektur +Schriftumschaltungen für das Element +\FontElement{title}\IndexFontElement[indexmain]{title}% +\important{\FontElement{title}} Anwendung (siehe +\autoref{tab:\ThisCommonFirstLabelBase.mainTitle}, +\autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}).% +\EndIndexGroup + +\BeginIndexGroup\BeginIndex{FontElement}{subtitle}\LabelFontElement{subtitle}% +Der\important{\Macro{subtitle}} +\PName{Untertitel}\ChangedAt{v2.97c}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} steht knapp unter dem Titel in der +Schrift\important{\FontElement{subtitle}} des gleichnamigen Elements (siehe +\autoref{tab:\ThisCommonFirstLabelBase.mainTitle}, +\autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}).% +\EndIndexGroup + +\BeginIndexGroup\BeginIndex{FontElement}{author}\LabelFontElement{author}% +Unter\important{\Macro{author}} dem \PName{Untertitel} folgt der +\PName{Autor}\Index[indexmain]{Autor}. Es kann auch durchaus mehr als ein +Autor innerhalb des Arguments von \Macro{author} angegeben werden. Die Autoren +sind dann mit \Macro{and}\important{\Macro{and}} voneinander zu trennen. Die +Ausgabe erfolgt in der Schrift\important{\FontElement{author}} des +gleichnamigen Elements (siehe +\autoref{tab:\ThisCommonFirstLabelBase.mainTitle}, +\autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}).% +\EndIndexGroup + +\BeginIndexGroup\BeginIndex{FontElement}{date}\LabelFontElement{date}% +Unter\important{\Macro{date}} dem Autor oder den Autoren folgt das +Datum\Index{Datum}. Dabei ist das aktuelle Datum, +\Macro{today}\IndexCmd{today}, voreingestellt. Es kann jedoch mit \Macro{date} +eine beliebige Angabe -- auch ein leere -- erreicht werden. Die Ausgabe +erfolgt in der Schrift\important{\FontElement{date}} des gleichnamigen +Elements (siehe \autoref{tab:\ThisCommonFirstLabelBase.mainTitle}, +\autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}).% +\EndIndexGroup + +\BeginIndexGroup\BeginIndex{FontElement}{publishers}% +\LabelFontElement{publishers}% +Als\important{\Macro{publishers}} Letztes folgt schließlich der +\PName{Verlag}\Index[indexmain]{Verlag}. Selbstverständlich kann diese +Anweisung auch für andere Angaben geringer Wichtigkeit verwendet +werden. Notfalls kann durch Verwendung einer \Macro{parbox} über die gesamte +Seitenbreite auch erreicht werden, dass diese Angabe nicht zentriert, sondern +im Blocksatz gesetzt wird. Sie ist dann als Äquivalent zum Kopf zu +betrachten. Dabei ist jedoch zu beachten, dass sie oberhalb von eventuell +vorhandenen Fußnoten ausgegeben wird. Die Ausgabe erfolgt in der +Schrift\important{\FontElement{publishers}} des gleichnamigen Elements (siehe +\autoref{tab:\ThisCommonFirstLabelBase.mainTitle}, +\autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}).% +\EndIndexGroup + +Fußnoten\important{\Macro{thanks}}\Index{Fussnoten=Fußnoten} werden auf der +Titelseite nicht mit \DescRef{\ThisCommonLabelBase.cmd.footnote}, sondern mit +der Anweisung \Macro{thanks} erzeugt. Sie dienen in der Regel für Anmerkungen +bei den Autoren. Als Fußnotenzeichen werden dabei Symbole statt Zahlen +verwendet. Es\textnote{Achtung!} ist zu beachten, dass \Macro{thanks} +innerhalb des Arguments einer der übrigen Anweisungen, beispielsweise im +Argument \PName{Autor} der Anweisung \Macro{author}, zu verwenden ist. % +\IfThisCommonLabelBase{scrextend}{% + Damit die Schrifteinstellung für das Element + \DescRef{\ThisCommonLabelBase.fontelement.footnote} beim Paket + \Package{scrextend} Beachtung findet muss allerdings nicht nur die + Titelerweiterung aktiviert sein, es muss auch dafür gesorgt sein, dass die + Fußnoten mit diesem Paket gesetzt werden (siehe Einleitung von + \autoref{sec:\ThisCommonLabelBase.footnotes}, + \autopageref{sec:\ThisCommonLabelBase.footnotes}). Trifft dies nicht zu, so + wird die Schrift verwendet, die von der Klasse oder anderen für die Fußnoten + verwendeten Paketen vorgegeben ist.% +}{}% + +Für% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.12}{\Package{scrextend}}% + }{\InternalCommonFileUsageError}% +} die Ausgabe der Titelelemente kann die Schrift\textnote{Schrift} +mit Hilfe der Befehle \DescRef{\ThisCommonLabelBase.cmd.setkomafont} und +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}) eingestellt werden. Die +Voreinstellungen sind \autoref{tab:\ThisCommonFirstLabelBase.titlefonts}% +\IfThisCommonFirstRun{}{% + , \autopageref{tab:\ThisCommonFirstLabelBase.titlefonts}% +} % +zu entnehmen.% +\IfThisCommonFirstRun{% + \begin{table} +% \centering +% \caption + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \addtokomafont{caption}{\raggedright}% + \begin{captionbeside} + [{Schriftvoreinstellungen für die Elemente des Titels}] + {\label{tab:\ThisCommonLabelBase.titlefonts}% + \hspace{0pt plus 1ex}Voreinstellungen der Schrift für die Elemente des Titels} + [l] + \begin{tabular}[t]{ll} + \toprule + Element-Name & Voreinstellung \\ + \midrule + \FontElement{author} & \Macro{Large} \\ + \FontElement{date} & \Macro{Large} \\ + \FontElement{dedication} & \Macro{Large} \\ + \FontElement{publishers} & \Macro{Large} \\ + \FontElement{subject} & + \Macro{normalfont}\Macro{normalcolor}% + \Macro{bfseries}\Macro{Large} \\ + \FontElement{subtitle} & + \DescRef{\ThisCommonLabelBase.cmd.usekomafont}% + \PParameter{title}\Macro{large} \\ + \FontElement{title} & + \DescRef{\ThisCommonLabelBase.cmd.usekomafont}% + \PParameter{disposition} \\ + \FontElement{titlehead} & \\ + \bottomrule + \end{tabular} + \end{captionbeside} + \end{table}% +}{}% + +Bis auf den \PName{Kopf} und eventuelle Fußnoten werden alle Ausgaben +horizontal zentriert. % +\iffree{% + \IfThisCommonLabelBase{scrextend}{Die Formatierungen der einzelnen + Elemente}{Diese Angaben} sind noch einmal kurz zusammengefasst in + \autoref{tab:\ThisCommonFirstLabelBase.mainTitle}\IfThisCommonFirstRun{}{% + , \autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}} zu finden.% +}{% + \IfThisCommonLabelBase{scrextend}{% + Die Ausrichtungen der einzelnen Elemente sind ebenfalls in + \autoref{tab:\ThisCommonFirstLabelBase.mainTitle}\IfThisCommonFirstRun{}{% + , \autopageref{tab:\ThisCommonFirstLabelBase.mainTitle}} zu finden.% + }{% + Eine Zusammenfassung dazu bietet + \autoref{tab:\ThisCommonFirstLabelBase.mainTitle}.% + }% +}% +\IfThisCommonFirstRun{% + \begin{table} + % \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + % \caption + \begin{captionbeside}[Der Haupttitel]{% + \hspace{0pt plus 1ex}% + Schrift\-größe und + Ausrichtung der Elemente der Haupttitelseite bei Verwendung von + \DescRef{\LabelBase.cmd.maketitle}} + [l] + \setlength{\tabcolsep}{.7\tabcolsep}% Umbruchoptimierung + \begin{tabular}[t]{llll} + \toprule + Element & Anweisung & Schrift & Satz \\ + \midrule + Seitenkopf & \Macro{titlehead} & \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{titlehead} & Block- \\ + Typisierung & \Macro{subject} & \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{subject} + & zentriert \\ + Titel & \Macro{title} & + \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{title}\Macro{huge} & zentriert \\ + Untertitel & \Macro{subtitle} & + \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{subtitle} & zentriert \\ + Autoren & \Macro{author} & \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{author} & zentriert \\ + Datum & \Macro{date} & \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{date} & zentriert \\ + Verlag & \Macro{publishers} & \DescRef{\ThisCommonLabelBase.cmd.usekomafont}\PParameter{publishers} & zentriert \\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:maincls.mainTitle} + \end{table}% +}{} + +\IfThisCommonFirstRun{\iftrue}{% + Ein Beispiel mit allen von \KOMAScript{} angebotenen Elementen für die + Haupttitelseite finden Sie in + \autoref{sec:\ThisCommonFirstLabelBase.titlepage} auf + \PageRefxmpl{\ThisCommonFirstLabelBase.maintitle}.% + \csname iffalse\endcsname% +}% + \begin{Example} + \phantomsection\xmpllabel{maintitle}% + Nehmen wir nun einmal an, Sie schreiben eine Diplomarbeit. Dabei sei + vorgegeben, dass die Titelseite oben linksbündig das Institut + einschließlich Adresse und rechtsbündig das Semester wiedergibt. Wie + üblich ist ein Titel einschließlich Autor und Abgabedatum zu setzen. + Außerdem soll der Betreuer angegeben und zu erkennen sein, dass es + sich um eine Diplomarbeit handelt. Sie könnten das wie folgt + erreichen: +\begin{lstcode} + \documentclass{scrbook} + \usepackage[ngerman]{babel} + \begin{document} + \titlehead{{\Large Universit"at Schlauenheim + \hfill SS~2001\\} + Institut f"ur Raumkr"ummung\\ + Hochschulstra"se~12\\ + 34567 Schlauenheim} + \subject{Diplomarbeit} + \title{Digitale Raumsimulation mit dem + DSP\,56004} + \subtitle{Klein aber fein?} + \author{cand. stup. Uli Ungenau} + \date{30. Februar 2001} + \publishers{Betreut durch + Prof. Dr. rer. stup. Naseweis} + \maketitle + \end{document} +\end{lstcode} + \end{Example}% +\fi + +\begin{Explain} + Ein häufiges Missverständnis betrifft die Bedeutung der + Haupttitelseite. Irrtümlich wird oft angenommen, es handle sich dabei um den + Buchumschlag\textnote{Umschlag}\Index{Umschlag} oder Buchdeckel. Daher wird + häufig erwartet, dass die Titelseite nicht den Randvorgaben für + doppelseitige Satzspiegel gehorcht, sondern rechts und links gleich große + Ränder besitzt. Nimmt man jedoch einmal ein Buch zur Hand und klappt es auf, + trifft man sehr schnell auf mindestens eine Titelseite\textnote{Titelseiten} + unter dem Buchdeckel innerhalb des sogenannten Buchblocks. Genau diese + Titelseiten werden mit \DescRef{\ThisCommonLabelBase.cmd.maketitle} gesetzt. + + Wie beim Schmutztitel handelt es sich also auch bei der Haupttitelseite um + eine Seite innerhalb des Buchblocks, die deshalb dem Satzspiegel des + gesamten Dokuments gehorcht. Überhaupt ist ein Buchdeckel, das \emph{Cover}, + etwas, das man in einem getrennten Dokument erstellt. Schließlich hat er oft + eine sehr individuelle Gestalt. Es spricht auch nichts dagegen, hierfür ein + Grafik- oder DTP-Programm zu Hilfe zu nehmen. Ein getrenntes Dokument sollte + auch deshalb verwendet werden, weil es später auf ein anderes Druckmedium, + etwa Karton, und möglicherweise mit einem anderen Drucker ausgegeben werden + soll. + + Seit \KOMAScript~3.12 kann man die erste von + \DescRef{\ThisCommonLabelBase.cmd.maketitle} ausgegebene Titelseite + alternativ aber auch als Umschlagseite formatieren lassen. Dabei ändern sich + nur die für diese Seite verwendeten Ränder (siehe Option + \OptionValueRef{\ThisCommonLabelBase}{titlepage}{firstiscover}% + \IndexOption{titlepage~=\textKValue{firstiscover}} auf + \DescPageRef{\ThisCommonLabelBase.option.titlepage}). +\end{Explain} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{uppertitleback}\Parameter{Titelrückseitenkopf} + \Macro{lowertitleback}\Parameter{Titelrückseitenfuß} +\end{Declaration}% +Im\textnote{\KOMAScript{} vs. Standardklassen} doppelseitigen Druck bleibt bei +den Standardklassen die Rückseite des Blatts mit der Titelseite leer. Bei +{\KOMAScript} lässt sich die Rückseite der Haupttitelseite hingegen für +weitere Angaben nutzen. Dabei wird zwischen genau zwei Elementen +unterschieden, die der Anwender frei gestalten kann: dem +\PName{Titelrückseitenkopf}\Index{Titel>Rueckseite=Rückseite} und dem +\PName{Titelrückseitenfuß}. Dabei kann der Kopf bis zum Fuß reichen und +umgekehrt. \iffree{Nimmt man diese Anleitung als Beispiel, so wurde der + Haftungsausschluss mit Hilfe von \Macro{uppertitleback} + gesetzt.}{Beispielsweise hätte man die Verlagsinformationen zu diesem Buch + wahlweise mit \Macro{uppertitleback} oder \Macro{lowertitleback} setzen + können.}% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{dedication}\Parameter{Widmung} +\end{Declaration}% +{\KOMAScript} bietet eine eigene Widmungsseite. Diese Widmung\Index{Widmung} +wird zentriert und in der Voreinstellung mit etwas größerer +Schrift\textnote{Schrift} gesetzt. +\BeginIndexGroup\BeginIndex{FontElement}{dedication}% +\LabelFontElement{dedication} +Die% +\IfThisCommonLabelBase{maincls}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% +}{% + \IfThisCommonLabelBase{scrextend}{% + \ChangedAt{v3.12}{\Package{scrextend}}% + }{\InternalCommonFileUseError}% +}\important{\FontElement{dedication}} genaue Schrifteinstellung für das +Element \FontElement{dedication}, die +\autoref{tab:\ThisCommonFirstLabelBase.titlefonts}, +\autopageref{tab:\ThisCommonFirstLabelBase.titlefonts} zu entnehmen ist, kann +über die Anweisungen \DescRef{\ThisCommonLabelBase.cmd.setkomafont} und +\DescRef{\ThisCommonLabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\ThisCommonLabelBase.textmarkup}, +\DescPageRef{\ThisCommonLabelBase.cmd.setkomafont}) verändert werden.% +\EndIndexGroup + +Die Rückseite ist grundsätzlich leer. Die Widmungsseite wird zusammen mit der +restlichen Titelei mit \DescRef{\ThisCommonLabelBase.cmd.maketitle} ausgegeben +und muss daher vor dieser Anweisung definiert sein. + +\IfThisCommonFirstRun{\iftrue}{% + Ein Beispiel mit allen von \KOMAScript{} angebotenen Titelseiten finden Sie + in \autoref{sec:\ThisCommonFirstLabelBase.titlepage} auf + \PageRefxmpl{\ThisCommonFirstLabelBase.fulltitle}.% + \csname iffalse\endcsname% +}% + \begin{Example} + \phantomsection\xmpllabel{fulltitle} + Nehmen wir dieses Mal an, dass Sie einen Gedichtband schreiben, den + Sie Ihrer Partnerin oder Ihrem Partner widmen wollen. Das könnte wie folgt + aussehen: +\begin{lstcode} + \documentclass{scrbook} + \usepackage[ngerman]{babel} + \begin{document} + \extratitle{\textbf{\Huge In Liebe}} + \title{In Liebe} + \author{Prinz Eisenherz} + \date{1412} + \lowertitleback{% + Dieser Gedichtband wurde mit Hilfe von + {\KOMAScript} und {\LaTeX} gesetzt.} + \uppertitleback{% + Selbstverlach\par + Auf"|lage: 1 Exemplar} + \dedication{% + Meinem Schnuckelchen\\ + in ewiger Liebe\\ + von Deinem Hasenboppelchen.} + \maketitle + \end{document} +\end{lstcode} + Ich bitte, die Kosenamen nach eigenen Vorlieben zu ersetzen und zu + personalisieren. + \end{Example}% +\fi% +\EndIndexGroup +% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/common-typearea.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/common-typearea.tex new file mode 100644 index 0000000000..87b1c4e29e --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/common-typearea.tex @@ -0,0 +1,88 @@ +% ====================================================================== +% common-typearea.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% common-typearea.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Paragraphs that are common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absätze, die mehreren Kapiteln der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{common-typearea.tex} + [$Date: 2018-02-01 12:55:46 +0100 (Thu, 01 Feb 2018) $ + KOMA-Script guide (common paragraphs: typearea)] + + +\section{\texorpdfstring{Seitenauf"|teilung}{Seitenaufteilung}} +\seclabel{typearea} +\BeginIndexGroup +\BeginIndex{}{Seiten>Aufteilung=Auf\/teilung} + +Eine Dokumentseite besteht aus unterschiedlichen Teilen, wie den Rändern, dem +Kopf, dem Fuß, dem Textbereich, einer Marginalienspalte und den Abständen +zwischen diesen Elementen. \KOMAScript{} unterscheidet dabei auch noch +zwischen der Gesamtseite oder dem Papier und der sichtbaren Seite. Ohne +Zweifel gehört die Auf"|teilung der Seite in diese unterschiedlichen Teile zu +den Grundfähigkeiten einer +Klasse\IfThisCommonLabelBase{scrlttr2}{\OnlyAt{scrlttr2}}{}. Bei \KOMAScript{} +wird diese Arbeit an das Paket \Package{typearea} delegiert. Dieses Paket kann +auch zusammen mit anderen Klassen verwendet werden. Die \KOMAScript-Klassen +laden \Package{typearea} jedoch selbstständig. Es ist daher weder notwendig +noch sinnvoll, das Paket bei Verwendung einer \KOMAScript-Klasse auch noch +explizit per \Macro{usepackage} zu laden. Siehe hierzu auch +\autoref{sec:\ThisCommonLabelBase.options}, ab +\autopageref{sec:\ThisCommonLabelBase.options}. + +Einige Einstellungen der \KOMAScript{}-Klassen haben Auswirkungen auf die +Seitenauf"|teilung und umgekehrt. Diese Auswirkungen werden bei den +entsprechenden Einstellungen dokumentiert. + +Für die weitere Erklärung zur Wahl des Papierformats, der Auf"|teilung der Seite +in Ränder und Satzspiegel und die Wahl von ein- oder zweispaltigem Satz sei +auf die Anleitung des Pakets \Package{typearea} verwiesen. Diese ist in +\autoref{cha:typearea} ab \autopageref{cha:typearea} zu finden. + + + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/expertpart.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/expertpart.tex new file mode 100644 index 0000000000..30b3608c14 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/expertpart.tex @@ -0,0 +1,77 @@ +% ====================================================================== +% expertpart.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% expertpart.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% First part: KOMA-Script for Authors +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Erster Teil: KOMA-Script für Autoren +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\ProvidesFile{expertpart.tex}[2008/07/22 Part KOMA-Script for Experts] + +\setpartpreamble{% + \vspace*{2\baselineskip}% + \setlength{\parindent}{1em}% + + \noindent In diesem Teil sind die Informationen für die Autoren von + \LaTeX-Paketen und "~Klassen zu finden. Dies betrifft nicht nur + Anweisungen, die bei der Implementierung neuer Pakete und Klassen nützlich + sind, sondern auch Schnittstellen, die weitere Eingriffe in \KOMAScript{} + erlauben. Darüber hinaus sind in diesem Teil auch obsolete Optionen und + Anweisungen ebenso wie Hintergründe zur Implementierung von \KOMAScript{} zu + finden. + + Dieser Teil ist als Ergänzung zu den Informationen für Autoren von + Artikeln, Berichten, Büchern und Briefen in \autoref{part:forAuthors} + gedacht. Nähere Informationen und Beispiele für diese Anwender sind + jenem Teil zu entnehmen. +} + +\part{\KOMAScript{} für fortgeschrittene Anwender + und Experten\label{part:forExperts}} + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "guide.tex" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/guide-ngerman.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/guide-ngerman.tex new file mode 100644 index 0000000000..504ee20268 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/guide-ngerman.tex @@ -0,0 +1,549 @@ +% ====================================================================== +% guide-ngerman.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% guide-ngerman.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Language dependencies (ngerman) of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Sprachabhaengigkeiten (ngerman) der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ====================================================================== +% +\KOMAProvidesFile{guide-ngerman.tex} + [$Date: 2018-04-13 07:41:27 +0200 (Fri, 13 Apr 2018) $ + KOMA-Script guide language dependencies] +% +% \section{Title} +% +% \begin{macro}{\GuideSubject} +% \begin{macro}{\GuideTitle} +% \begin{macro}{\GuideSubTitle} +% \begin{macro}{\GuideAuthorHeadline} +% \begin{macro}{\GuideTranslatorHeadline} +% \begin{macro}{\GuideWarrantyHeadline} +% \begin{macro}{\GuideWarranty} +% \begin{macro}{\GuideCopyright} +% \begin{macro}{\GuideDedication} +% Language dependencies of all the title pages. +% \begin{macrocode} +\newcommand*{\GuideSubject}{Die Anleitung} +\newcommand*{\GuideTitle}{\KOMAScript}% +\newcommand*{\GuideSubTitle}{ein wandelbares \LaTeXe-Paket}% +\newcommand*{\GuideAuthorHeadline}{Autoren des \KOMAScript-Pakets}% +\newcommand*{\GuideTranslatorHeadline}{An der deutschen \"Ubersetzung dieser + Anleitung haben mitgewirkt: } +\newcommand*{\GuideWarrantyHeadline}{Rechtliche Hinweise:}% +\newcommand*{\GuideWarranty}{Der Autor dieser Anleitung ist in dieser + Eigenschaft nicht verantwortlich f\"ur die + Funktion oder Fehler der in dieser Anleitung beschriebenen Software. Bei der + Erstellung von Texten und Abbildungen wurde mit gro\ss er Sorgfalt + vorgegangen. Trotzdem k\"onnen Fehler nicht vollst\"andig ausgeschlossen + werden.\par\medskip% + Der Autor kann jedoch f\"ur fehlerhafte Angaben und deren Folgen weder + eine juristische Verantwortung noch irgendeine Haftung \"ubernehmen. F\"ur + Verbesserungsvorschl\"age und Hinweise auf Fehler ist der Autor + dankbar.\par\medskip% + In dieser Anleitung werden Warennamen ohne der Gew\"ahrleistung der freien + Verwendbarkeit und ohne besondere Kennzeichnung benutzt. Es ist jedoch davon + auszugehen, dass viele der Warennamen gleichzeitig eingetragene + Warenzeichnen oder als solche zu betrachten sind.}% +\newcommand*{\GuideCopyright}{Freie Bildschirm-Version ohne Optimierung des + Umbruchs\par\medskip% + Diese Anleitung ist als Bestandteil von \KOMAScript{} frei im Sinne der + \LaTeX{} Project Public License Version 1.3c. Eine f\"ur \KOMAScript{} g\"ultige + deutsche \"Ubersetzung liegt \KOMAScript{} in der Datei »\texttt{lppl-de.txt}« + bei. Diese Anleitung --~auch in gedruckter Form~-- darf nur zusammen mit den + \"ubrigen Bestandteilen von \KOMAScript{} weitergegeben und verteilt werden. + Eine Verteilung der Anleitung unabh\"angig von den \"ubrigen Bestandteilen von + \KOMAScript{} bedarf der ausdr\"ucklichen Genehmigung des + Autors.\par\medskip% + Eine umbruchoptimierte und erweiterte Ausgabe der \KOMAScript-Anleitung ist + in der dante-Edition von Lehmanns Media erschienen (siehe + \cite{book:komascript}).}% +\newcommand*{\GuideDedication}{F\"ur meine Frau ohne deren tagt\"agliche + Arbeit ich mir meine ehrenamtlichen Taten nicht leisten k\"onnte!}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \section{CTAN Server to be Used} +% +% \begin{macro}{\GuideCTANserver} +% Unused since 2015-09-30. +% \begin{macrocode} +%\newcommand*{\GuideCTANserver}{mirror.ctan.org} +% \end{macrocode} +% \end{macro} +% +% +% \section{Terms} +% +% Some terms, e.g. used at index notes. +% +% \begin{macro}{\GuideClass} +% \begin{macro}{\GuideClassIndexCategory} +% \begin{macro}{\GuideClassIndexCategoryExpanded} +% The term ``class''. +% \begin{macrocode} +\newcommand*{\GuideClass}{Klasse} +\newcommand*{\GuideClassIndexCategory}{Klassen} +\let\GuideClassIndexCategoryExpanded\GuideClassIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideCounter} +% \begin{macro}{\GuideCounterIndexCategory} +% \begin{macro}{\GuideCounterIndexCategoryExpanded} +% The term ``counter''. +% \begin{macrocode} +\newcommand*{\GuideCounter}{Z\"ahler} +\newcommand*{\GuideCounterIndexCategory}{Z\"ahler} +\let\GuideCounterIndexCategoryExpanded\GuideCounterIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideEnvironment} +% \begin{macro}{\GuideEnvIndexCategory} +% \begin{macro}{\GuideEnvIndexCategoryExpanded} +% The term ``environment''. +% \begin{macrocode} +\newcommand*{\GuideEnvironment}{Umgebung} +\newcommand*{\GuideEnvIndexCategory}{Umgebungen} +\let\GuideEnvIndexCategoryExpanded\GuideEnvIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideExample} +% The term ``Example'' used at a kind of heading, so it should be upper case. +% \begin{macrocode} +\newcommand*{\GuideExample}{Beispiel} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GuideFile} +% \begin{macro}{\GuideFileIndexCategory} +% \begin{macro}{\GuideFileIndexCategoryExpanded} +% The term ``file''. +% \begin{macrocode} +\newcommand*{\GuideFile}{Datei} +\newcommand*{\GuideFileIndexCategory}{Dateien} +\let\GuideFileIndexCategoryExpanded\GuideFileIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideFloatstyle} +% \begin{macro}{\GuideFloatstyleIndexCategory} +% \begin{macro}{\GuideFloatstyleIndexCategoryExpanded} +% The term ``\Package{float} style''. +% \begin{macrocode} +\newcommand*{\GuideFloatstyle}{\Package{float}-Stil} +\newcommand*{\GuideFloatstyleIndexCategory}{\Package{float}-Stile} +\newcommand*{\GuideFloatstyleIndexCategoryExpanded}{float-Stile} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideFontElement} +% \begin{macro}{\GuideFontElementIndexCategory} +% \begin{macro}{\GuideFontElementIndexCategoryExpanded} +% The term ``element''. +% \begin{macrocode} +\newcommand*{\GuideFontElement}{Element} +\newcommand*{\GuideFontElementIndexCategory}{Elemente} +\let\GuideFontElementIndexCategoryExpanded\GuideFontElementIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideLength} +% \begin{macro}{\GuideLengthIndexCategory} +% \begin{macro}{\GuideLengthIndexCategoryExpanded} +% The term ``length''. +% \begin{macrocode} +\newcommand*{\GuideLength}{L\"ange} +\newcommand*{\GuideLengthIndexCategory}{L\"angen} +\let\GuideLengthIndexCategoryExpanded\GuideLengthIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideMacro} +% \begin{macro}{\GuideMacroIndexCategory} +% \begin{macro}{\GuideMacroIndexCategoryExpanded} +% \begin{macro}{\GuideCommand} +% \begin{macro}{\GuideCommandIndexCategory} +% \begin{macro}{\GuideCommandIndexCategoryExpanded} +% The term ``command''. +% \begin{macrocode} +\newcommand*{\GuideMacro}{Befehl} +\let\GuideCommand\GuideMacro +\newcommand*{\GuideMacroIndexCategory}{Befehle} +\let\GuideCommandIndexCategory\GuideMacroIndexCategory +\let\GuideMacroIndexCategoryExpanded\GuideMacroIndexCategory +\let\GuideCommandIndexCategoryExpanded\GuideCommandIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideOption} +% \begin{macro}{\GuideOptionIndexCategory} +% \begin{macro}{\GuideOptionIndexCategoryExpanded} +% The term ``option''. +% \begin{macrocode} +\newcommand*{\GuideOption}{Option} +\newcommand*{\GuideOptionIndexCategory}{Optionen} +\let\GuideOptionIndexCategoryExpanded\GuideOptionIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuidePackage} +% \begin{macro}{\GuidePackageIndexCategory} +% \begin{macro}{\GuidePackageIndexCategoryExpanded} +% The term ``package''. +% \begin{macrocode} +\newcommand*{\GuidePackage}{Paket} +\newcommand*{\GuidePackageIndexCategory}{Pakete} +\let\GuidePackageIndexCategoryExpanded\GuidePackageIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuidePagestyle} +% \begin{macro}{\GuidePagestyleIndexCategory} +% \begin{macro}{\GuidePagestyleIndexCategoryExpanded} +% The term ``page style''. +% \begin{macrocode} +\newcommand*{\GuidePagestyle}{Seitenstil} +\newcommand*{\GuidePagestyleIndexCategory}{Seitenstile} +\let\GuidePagestyleIndexCategoryExpanded\GuidePagestyleIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuidePLength} +% \begin{macro}{\GuidePLengthIndexCategory} +% \begin{macro}{\GuidePLengthIndexCategoryExpanded} +% \begin{macro}{\GuidePseudoPrefix} +% The prefix ``pseudo'' at the term ``pseudo length'' and the term itself. +% \begin{macrocode} +\newcommand*{\GuidePseudoPrefix}{Pseudo-} +\newcommand*{\GuidePLength}{Pseudol\"ange} +\newcommand*{\GuidePLengthIndexCategory}{Pseudol\"angen} +\let\GuidePLengthIndexCategoryExpanded\GuidePLengthIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideVariable} +% \begin{macro}{\GuideVariableIndexCategory} +% \begin{macro}{\GuideVariableIndexCategoryExpanded} +% The term ``variable''. +% \begin{macrocode} +\newcommand*{\GuideVariable}{Variable} +\newcommand*{\GuideVariableIndexCategory}{Variablen} +\let\GuideVariableIndexCategoryExpanded\GuideVariableIndexCategory +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideAnd} +% The ``and'' at a list of two. +% \begin{macrocode} +\newcommand*{\GuideAnd}{ und } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GuideListAnd} +% The ``and'' at a list of more than two. +% \begin{macrocode} +\newcommand*{\GuideListAnd}{ und } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GuideLoadNonFree} +% Note, that the non free manual contains more information. +% \begin{macrocode} +\newcommand*{\GuideLoadNonFree}{% + Im \KOMAScript-Buch \cite{book:komascript} finden sich an dieser Stelle + weitere Informationen. +} +% \end{macrocode} +% \end{macro} +% +% +% \section{Index} +% +% \begin{macro}{\GuidegenIndex} +% \begin{macro}{\GuidecmdIndex} +% \begin{macro}{\GuidecmdIndexShort} +% \begin{macro}{\GuidelenIndex} +% \begin{macro}{\GuidelenIndexShort} +% \begin{macro}{\GuideelmIndex} +% \begin{macro}{\GuideelmIndexShort} +% \begin{macro}{\GuidefilIndex} +% \begin{macro}{\GuidefilIndexShort} +% \begin{macro}{\GuideoptIndex} +% \begin{macro}{\GuideoptIndexShort} +% The titles and short titles of each single index. +\newcommand*{\GuidegenIndex}{Allgemeiner Index} +\newcommand*{\GuidecmdIndex}{Befehle, Umgebungen und + Variablen} +\newcommand*{\GuidecmdIndexShort}{Index der Befehle etc.} +\newcommand*{\GuidelenIndex}{L\"angen und Z\"ahler} +\newcommand*{\GuidelenIndexShort}{Index der L\"angen etc.} +\newcommand*{\GuideelmIndex}{Elemente mit + der M\"oglichkeit zur Schriftumschaltung} +\newcommand*{\GuideelmIndexShort}{Index der Elemente} +\newcommand*{\GuidefilIndex}{Dateien, Klassen und Pakete} +\newcommand*{\GuidefilIndexShort}{Index der Dateien etc.} +\newcommand*{\GuideoptIndex}{Klassen- und + Paketoptionen} +\newcommand*{\GuideoptIndexShort}{Index der Optionen} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GuideIndexPreamble} +% The preamble text of the whole index. +\newcommand*{\GuideIndexPreamble}{% + Fett hervorgehobene Zahlen geben die Seiten der Erkl\"arung zu einem + Stichwort wieder. Normal gedruckte Zahlen verweisen hingegen auf + Seiten mit zus\"atzlichen Informationen zum jeweiligen Stichwort.% +} +% \end{macro} +% +% \begin{macro}{\GuideIndexSees} +% These are all see index entries. +\newcommand*{\GuideIndexSees}{% + \Index{Seitenmittenmarke|see{Lochermarke}}% + \Index{Falzmarke|see{Faltmarke}}% + \Index{in-page-Titel=\emph{in-page}-Titel|see{Titelkopf}}% + \Index{Index|see{Stichwortverzeichnis}}% + \Index{Register|see{Stichwortverzeichnis}}% +} +% \end{macro} +% +% \begin{macro}{\GuideIndexSeeAlsos} +% These are all see also index entries. +\newcommand*{\GuideIndexSeeAlsos}{% + \Index{Ueberschriften=Überschriften|seealso{Abschnitt, Gliederung, Kapitel}}% + \Index{Gliederung|seealso{Abschnitt, Kapitel, Überschriften}}% + \Index{Bindeanteil|seealso{Bindekorrektur}}% + \Index{Bindung|seealso{Bindekorrektur}}% +} +% \end{macro} +% +% +% \section{Bibliography} +% +% \begin{macro}{\GuideBibPreamble} +% \begin{macrocode} +\newcommand*{\GuideBibPreamble}{% + Sie finden im Folgenden eine ganze Reihe von Literaturangaben. Auf + all diese wird im Text verwiesen. In vielen F\"allen handelt es sich + um Dokumente oder ganze Verzeichnisse, die im Internet verf\"ugbar + sind. In diesen F\"allen ist statt eines Verlages eine URL angegeben. + Wird auf ein \LaTeX-Paket verwiesen, so findet der Verweis in der + Regel in der Form \glqq \url{CTAN://}\emph{Verweis}\grqq{} statt. + Der Pr\"afix \glqq \url{CTAN://}\grqq{} steht dabei f\"ur das + \TeX-Archiv eines jeden CTAN-Servers oder -Spiegels. Sie k\"onnen + den Pr\"afix beispielsweise durch + \url{http://mirror.ctan.org/} ersetzen. Bei + \LaTeX-Paketen ist au\ss erdem zu beachten, dass versucht wurde, + die Version anzugeben, auf die im Text Bezug genommen wurde. Bei + einigen Paketen war es mehr ein Ratespiel, eine einheitliche + Versionsnummer und ein Erscheinungsdatum zu finden. Auch muss die + angegebene Version nicht immer die neuste verf\"ugbare Version sein. + Wenn Sie sich ein Paket neu besorgen und installieren, sollten Sie + jedoch zun\"achst immer die aktuelle Version ausprobieren. Bevor Sie + ein Dokument oder Paket von einem Server herunterladen, sollten Sie + au\ss erdem \"uberpr\"ufen, ob es sich nicht bereits auf Ihrem + Rechner befindet. +} +% \end{macrocode} +% \end{macro} +% +% +% \section{Change Log} +% +% \begin{macro}{\GuideChangeLogPreamble} +% The preamble of the change log index. +% \begin{macrocode} +\newcommand*{\GuideChangeLogPreamble}{% + Sie finden im folgenden eine Auf\/listung aller wesentlichen \"Anderungen + der Benutzerschnittstelle im \KOMAScript-Paket der neueren Zeit. Die Liste + ist sowohl nach Versionen als auch nach Paket- und Klassennamen sortiert. Zu + jeder Version, jedem Paket und jeder Klasse ist jeweils angegeben, auf + welchen Seiten dieser Dokumentation die \"Anderungen zu finden sind. Auf den + entsprechenden Seiten finden Sie dazu passende Randmarkierungen.% +} +% \end{macrocode} +% \end{macro} +% +% +% \section{Language Extensions} +% +% Some terms should be part of the captions of the language. +% \begin{macro}{\GuideLanguageExtensions} +% This macro has to be defined, because the class will add it to the language +% at |\begin{document}| and it will also call it. +% \begin{macrocode} +\newcommand*{\GuideLanguageExtensions}{% +% \end{macrocode} +% \begin{macro}{\pageautorefname} +% The term ``page'' that will be put before the reference of a page set by +% |\autopageref|. +% \begin{macrocode} + \let\pageautorefname\pagename +% \end{macrocode} +% \end{macro} +% \begin{macro}{\subsectionautorefname} +% \begin{macro}{\subsubsectionautorefname} +% \begin{macro}{\paragraphautorefname} +% \begin{macro}{\subparagraphautorefname} +% I'll call them all ``section''. +% \begin{macrocode} + \let\subsectionautorefname=\sectionautorefname + \let\subsubsectionautorefname=\sectionautorefname + \let\paragraphautorefname=\sectionrefname + \let\subparagraphautorefname=\sectionrefname +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\changelogname} +% The name of the change log index. +% \begin{macrocode} + \def\changelogname{\"Anderungsliste}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\descriptionname} +% \begin{macro}{\contentsname} +% \begin{macrocode] + \def\descriptionname{Bezeichnung}% + \def\contentname{Inhalt}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\lengthname} +% \begin{macrocode} + \def\lengthname{L\"ange}% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +} +% \end{macrocode} +% \end{macro} +% +% +% \section{Hyphenation} +% +% This is not realy a good place to put them~-- but better late than never: +% \begin{macrocode} +\hyphenation{% + Ab-schnitts-ebe-ne + Back-slash + Brief-um-ge-bung Brief-um-ge-bun-gen + Da-tei-na-me Da-tei-na-men Da-tei-na-mens + Da-tei-na-men-er-wei-te-rung Da-tei-na-men-er-wei-te-rung-en + Ein-trags-ebe-ne Ein-trags-ebe-nen + Gleich-zei-tig + Hin-ter-grund-ebe-ne Hin-ter-grund-ebe-nen + In-halts-ver-zeich-nis-ein-trag In-halts-ver-zeich-nis-ein-trä-ge + Ka-pi-tel-ebe-ne Ka-pi-tel-ebe-nen + Pa-ket-au-to-ren + Pa-pier-rand Pa-pier-ran-des + Rand-ein-stel-lung Rand-ein-stel-lung-en + Schrift-ein-stel-lung Schrift-ein-stel-lung-en + Sei-ten-um-bruch Schrift-um-schal-tung Schrift-um-schal-tun-gen + Stan-dard-an-wei-sung Stan-dard-an-wei-sun-gen + Stan-dard-ein-stel-lung Stan-dard-ein-stel-lun-gen + Text-ebe-ne Text-ebe-nen + Unix + Zei-len-um-bruch Zei-len-um-bruchs Zei-len-um-brü-che Zei-len-um-brü-chen + } +% \end{macrocode} +% +% +% +\endinput +%%% Local Variables: +%%% mode: doctex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide.tex" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/guide.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/guide.tex new file mode 120000 index 0000000000..4e897d1e39 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/guide.tex @@ -0,0 +1 @@ +../guide.tex
\ No newline at end of file diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/htmlsetup b/macros/latex/contrib/koma-script/source-doc/ngerman/htmlsetup new file mode 100644 index 0000000000..92dd812ff4 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/htmlsetup @@ -0,0 +1,65 @@ +# ====================================================================== +# htmlsetup +# Copyright (c) Markus Kohm, 2002-2013 +# +# This file is part of the LaTeX2e KOMA-Script bundle. +# +# This work may be distributed and/or modified under the conditions of +# the LaTeX Project Public License, version 1.3c of the license. +# The latest version of this license is in +# http://www.latex-project.org/lppl.txt +# and version 1.3c or later is part of all distributions of LaTeX +# version 2005/12/01 or later and of this work. +# +# This work has the LPPL maintenance status "author-maintained". +# +# The Current Maintainer and author of this work is Markus Kohm. +# +# This work consists of all files listed in manifest.txt. +# ---------------------------------------------------------------------- +# htmlsetup +# Copyright (c) Markus Kohm, 2002-2013 +# +# Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +# Version 1.3c, verteilt und/oder veraendert werden. +# Die neuste Version dieser Lizenz ist +# http://www.latex-project.org/lppl.txt +# und Version 1.3c ist Teil aller Verteilungen von LaTeX +# Version 2005/12/01 oder spaeter und dieses Werks. +# +# Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +# (allein durch den Autor verwaltet). +# +# Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +# +# Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +# ====================================================================== + +$baselink="scrguide.pdf"; +$htmlhead="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\"> +<html> +<head><title>Index</title> +<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"> +</head> +<body> +<h1>Index der KOMA-Script-Anleitung</h1> +<p>Dies ist ein Index der in KOMA-Script definierten Elemente. Dieser Index bezieht sich auf die <a href=\"scrguide.pdf\">KOMA-Script-Anleitung</a>. Zur besseren Ãœbersicht ist der Index in mehrere Funktionsgruppen unterteilt:</p> +"; +$htmlend="<p> +<a href=\"http://validator.w3.org/check?uri=referer\"><img +src=\"http://www.w3.org/Icons/valid-html40\" +alt=\"Valid HTML 4.0 Strict\" height=\"31\" width=\"88\"></a> +</p> +</body></html>"; +%titles=( "option" => "Optionen", + "macro" => "Anweisungen", + "environment" => "Umgebungen", + "length" => "Längen", + "plength" => "Pseudolängen", + "variable" => "Variablen", + "pagestyle" => "Seitenstile", + "counter" => "Zähler", + "floatstyle" => "Stile für das float-Paket", + "fontelement" => "Elemente deren Schrift geändert werden kann" ); + +# end of file diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/introduction.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/introduction.tex new file mode 100644 index 0000000000..b5cd43b836 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/introduction.tex @@ -0,0 +1,424 @@ +% ====================================================================== +% introduction.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% introduction.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Introduction of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Einleitung der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{introduction.tex} + [$Date: 2018-02-05 10:50:56 +0100 (Mon, 05 Feb 2018) $ + KOMA-Script guide introduction] + +\chapter{Einleitung} +\labelbase{introduction} + +Dieses Kapitel enthält \iffree{unter anderem }{}wichtige Informationen über +den Aufbau \iffree{der Anleitung}{des Buches} und die Geschichte von +\KOMAScript, die Jahre vor der ersten Version beginnt. Darüber hinaus finden +Sie Informationen für den Fall, dass Sie % +\iffalse % Umbruchkorreturauslassung + \KOMAScript{} noch nicht installiert haben, oder % +\fi% +auf Fehler stoßen. + +\iffree{% +\section{Vorwort} +\seclabel{preface} + +{\KOMAScript} ist ein sehr komplexes Paket (engl. \emph{bundle}). Dies +ist schon allein darin begründet, dass es nicht nur aus einer einzigen +Klasse (engl. \emph{class}) oder einem einzigen Paket (engl. +\emph{package}), sondern einer Vielzahl derer besteht. Zwar sind die +Klassen als Gegenstücke zu den Standardklassen konzipiert (siehe +\autoref{cha:maincls}), das heißt jedoch insbesondere nicht, +dass sie nur über die Befehle, Umgebungen und Einstellmöglichkeiten +der Standardklassen verfügen oder deren Aussehen als +Standardeinstellung übernehmen. +Die Fähigkeiten von {\KOMAScript} reichen +teilweise weit über die Fähigkeiten der Standardklassen hinaus. +Manche davon sind auch als Ergänzung zu den Grundfähigkeiten des +\LaTeX-Kerns zu betrachten. + +Allein aus dem Vorgenannten ergibt sich schon zwangsläufig, dass die +Dokumentation zu {\KOMAScript} sehr umfangreich ausfällt. Hinzu kommt, +dass {\KOMAScript} in der Regel nicht gelehrt wird. Das heißt, es gibt +keinen Lehrer, der seine Schüler kennt und damit den Unterricht und +das Unterrichtsmaterial entsprechend wählen und anpassen kann. Es wäre +ein Leichtes, die Dokumentation für irgendeine Zielgruppe zu +verfassen. Die Schwierigkeit, der sich der Autor gegenüber sieht, +besteht jedoch darin, dass eine Anleitung für alle möglichen +Zielgruppen benötigt wird. Ich habe mich bemüht, eine Anleitung zu +erstellen, die für den Informatiker gleichermaßen geeignet ist wie für +die Sekretärin des Fischhändlers. Ich habe mich bemüht, obwohl es sich +dabei eigentlich um ein unmögliches Unterfangen handelt. Ergebnis sind +zahlreiche Kompromisse. Ich bitte jedoch, die Problematik bei +eventuellen Beschwerden zu berücksichtigen und bei der Verbesserung +der derzeitigen Lösung zu helfen. + +Trotz des Umfangs der Anleitung bitte ich außerdem darum, im Falle von +Problemen zunächst die Dokumentation zu konsultieren. Als erste Anlaufstelle +sei auf den mehrteiligen Index am Ende des \iffree{Dokuments}{Buches} +hingewiesen. \iffree{Zur Dokumentation gehören neben dieser Anleitung auch + alle Text-Dokumente, die Bestandteil des Pakets sind. Sie sind in + \File{manifest.txt} vollständig aufgeführt}{} +}{} + +\section{Dokumentaufbau} +\seclabel{structure} + +Diese Anleitung ist in mehrere Teile untergliedert. Es gibt einen Teil für +Anwender, einen für fortgeschrittene Anwender und Experten und einen Anhang +mit weiterführenden Informationen und Beispielen für diejenigen, die es ganz +genau wissen wollen. + +\autoref{part:forAuthors} richtet sich dabei an alle \KOMAScript-Anwender. Das +bedeutet, dass hier auch einige Informationen für \LaTeX-Neulinge zu finden +sind. Insbesondere ist dieser Teil mit vielen Beispielen angereichert, die dem +reinen Anwender zur Verdeutlichung der Erklärungen dienen sollen. Scheuen Sie +sich nicht, diese Beispiele selbst auszuprobieren und durch Abwandlung +herauszufinden, wie \KOMAScript{} funktioniert. Trotz allem ist diese +Anleitung jedoch keine Einführung in \LaTeX. \LaTeX-Neulingen seien daher +Dokumente wie \cite{l2kurz} nahegelegt. Wiedereinsteigern aus der Zeit von +\LaTeX~2.09 sei zumindest \cite{latex:usrguide} empfohlen. Auch das Studium des +einen oder anderen Buches zu \LaTeX{} wird empfohlen. Literaturempfehlungen +finden sich beispielsweise in \cite{DANTE:FAQ}. Der Umfang von +\cite{DANTE:FAQ} ist ebenfalls erheblich. Dennoch wird darum gebeten, sich +einen groben Überblick darüber zu verschaffen und es bei Problemen ebenso wie +\iffree{diese Anleitung}{dieses Buch} zu konsultieren. + +\autoref{part:forExperts} richtet sich an fortgeschrittene +\KOMAScript-Anwender. Das sind all diejenigen, die sich bereits mit \LaTeX{} +auskennen oder schon einige Zeit mit \KOMAScript{} gearbeitet haben und jetzt +etwas besser verstehen wollen, wie \KOMAScript{} funktioniert, wie es mit +anderen Paketen interagiert und wie man speziellere Aufgaben mit \KOMAScript{} +lösen kann. Dazu werden die Klassenbeschreibungen aus +\autoref{part:forAuthors} in einigen Aspekten nochmals aufgegriffen und näher +erläutert. Dazu kommt die Dokumentation von Anweisungen, die speziell für +fortgeschrittene Anwender und Experten vorgesehen sind. Ergänzt wird dies +durch die Dokumentation von Paketen, die für den Anwender normalerweise insofern +verborgen sind, als sie unter der Oberfläche der Klassen und Anwenderpakete +ihre Arbeit verrichten. Diese Pakete sind ausdrücklich auch für die Verwendung +durch andere Klassen- und Paketautoren vorgesehen. + +Der Anhang\iffree{, der nur in der Buchfassung zu finden ist,}{} richtet sich +an diejenigen, denen all diese Informationen nicht genügen. Es gibt dort zum +einen Hintergrundwissen zu Fragen der Typografie, mit denen dem +fortgeschrittenen Anwender eine Grundlage für fundierte eigene Entscheidungen +vermittelt werden soll. Darüber hinaus sind dort Beispiele für angehende +Paketautoren zu finden. Diese Beispiele sind weniger dazu gedacht, einfach +übernommen zu werden. Vielmehr sollen sie Wissen um Planung und Durchführung +von \LaTeX-Projekten sowie einige grundlegende \LaTeX-Anweisungen für +Paketautoren vermitteln. + +Die Kapitel-Einteilung der Anleitung soll ebenfalls dabei +helfen, nur die Teile lesen zu müssen, die tatsächlich von Interesse sind. Um +dies zu erreichen, sind die Informationen zu den einzelnen Klassen und Paketen +nicht über das gesamte Dokument verteilt, sondern jeweils in einem Kapitel +konzentriert. Querverweise in ein anderes Kapitel sind damit in der Regel auch +Verweise auf einen anderen Teil des Gesamtpakets. Da die drei Hauptklassen in +weiten Teilen übereinstimmen, sind sie in einem gemeinsamen Kapitel +zusammengefasst. Die Unterschiede werden deutlich hervorgehoben, soweit +sinnvoll auch durch eine entsprechende Randnotiz. Dies geschieht +beispielsweise wie hier, wenn etwas nur die Klasse +\Class{scrartcl}\OnlyAt{\Class{scrartcl}} betrifft. Nachteil dieses Vorgehens +ist, dass diejenigen, die \KOMAScript{} insgesamt kennenlernen wollen, in +einigen Kapiteln auf bereits Bekanntes stoßen werden. Vielleicht nutzen Sie +die Gelegenheit, um Ihr Wissen zu vertiefen. + +Unterschiedliche Schriftarten werden auch zur Hervorhebung unterschiedlicher +Dinge verwendet. So werden die Namen von \Package{Paketen} und \Class{Klassen} +anders angezeigt als \File{Dateinamen}. \Option{Optionen}, \Macro{Anweisungen}, +\Environment{Umgebungen}, \Variable{Variablen} und +\PLength{Pseudolängen} werden einheitlich hervorgehoben. Der +\PName{Platzhalter} für einen Parameter wird jedoch anders dargestellt als ein +konkreter \PValue{Wert} eines Parameters. So zeigt etwa +\Macro{begin}\Parameter{Umgebung}, wie eine Umgebung ganz allgemein +eingeleitet wird, wohingegen \Macro{begin}\PParameter{document} angibt, wie die +konkrete Umgebung \Environment{document} beginnt. Dabei ist dann +\PValue{document} ein konkreter Wert für den Parameter \PName{Umgebung} +der Anweisung \Macro{begin}. + +\iffalse% Umbruchkorrekturtext +Damit sollten Sie nun alles wissen, um diese Anleitung lesen und verstehen zu +können. Trotzdem könnte es sich lohnen, den Rest dieses Kapitels gelegentlich +auch zu lesen. +\fi + + +\section{Die Geschichte von \KOMAScript} +\seclabel{history} + +%\begin{Explain} + Anfang der 1990er~Jahre wurde Frank Neukam damit beauf"|tragt, ein + Vorlesungsskript zu setzen. Damals war noch \LaTeX~2.09 aktuell und + es gab keine Unterscheidung nach Klassen und Paketen, sondern alles + waren Stile (engl. \emph{styles}). Die Standarddokumentstile + erschienen ihm für ein Vorlesungsskript nicht optimal und boten auch + nicht alle Befehle und Umgebungen, die er benötigte. + + Zur selben Zeit beschäftigte sich Frank auch mit Fragen der + Typografie, insbesondere mit \cite{JTsch87}. Damit stand für ihn + fest, nicht nur irgendeinen Dokumentstil für Skripten zu erstellen, + sondern allgemein eine Stilfamilie, die den Regeln der europäischen + Typografie folgt. {\Script} war geboren. + + Der \KOMAScript-Autor traf auf {\Script} ungefähr zum Jahreswechsel + 1992/""1993. Im Gegensatz zu Frank Neukam hatte er häufig mit Dokumenten im + A5-Format zu tun. Zu jenem Zeitpunkt wurde A5 weder von den Standardstilen + noch von {\Script} unterstützt. Daher dauerte es nicht lange, bis er erste + Veränderungen an {\Script} vornahm. Diese fanden sich auch in {\ScriptII} + wieder, das im Dezember~1993 von Frank veröffentlicht wurde. + + Mitte 1994 erschien dann \LaTeXe. Die damit einhergehenden Änderungen waren + tiefgreifend. Daher blieb dem Anwender von {\ScriptII} nur die Entscheidung, + sich entweder auf den Kompatibilitätsmodus von \LaTeX{} zu beschränken oder + auf {\Script} zu verzichten. Wie viele andere wollte ich beides nicht. Also + machte der \KOMAScript-Autor sich daran, einen \Script-Nachfolger für + {\LaTeXe} zu entwickeln, der am 7.~Juli~1994 unter dem Namen {\KOMAScript} + erschienen ist. Ich will hier nicht näher auf die Wirren eingehen, die es um + die offizielle Nachfolge von {\Script} gab und warum dieser neue Name + gewählt wurde. Tatsache ist, dass auch aus Franks Sicht {\KOMAScript} der + Nachfolger von {\ScriptII} ist. Zu erwähnen ist noch, dass {\KOMAScript} + ursprünglich ohne Briefklasse erschienen war. Diese wurde im Dezember~1994 + von Axel Kielhorn beigesteuert. Noch etwas später erstellte Axel Sommerfeldt + den ersten richtigen scrguide zu {\KOMAScript}. + + Seither ist einige Zeit vergangen. {\LaTeX} hat sich kaum verändert, die + \LaTeX-Landschaft erheblich. {\KOMAScript} wurde weiterentwickelt. Es findet + nicht mehr allein im deutschsprachigen Raum Anwender, sondern in ganz + Europa, Nordamerika, Australien und Asien. Diese Anwender suchen bei + {\KOMAScript} nicht allein nach einem typografisch ansprechenden + Ergebnis. Zu beobachten ist vielmehr, dass bei {\KOMAScript} ein neuer + Schwerpunkt entstanden ist: Flexibilisierung durch Variabilisierung. Unter + diesem Schlagwort verstehe ich die Möglichkeit, in das Erscheinungsbild an + vielen Stellen eingreifen zu können. Dies führte zu vielen neuen Makros, die + mehr schlecht als recht in die ursprüngliche Dokumentation integriert wurden. + Irgendwann wurde es damit auch Zeit für eine komplett überarbeitete + Anleitung. +%\end{Explain} + + +\iffree{% +\section{Danksagung} +\seclabel{thanks} + +Mein persönlicher Dank gilt Frank Neukam, ohne dessen \Script-Familie es +vermutlich {\KOMAScript} nie gegeben hätte. Mein Dank gilt denjenigen, die an +der Entstehung von {\KOMAScript} und den Anleitungen mitgewirkt +haben. Dieses Mal danke ich Elke, Jana, Ben und Edoardo stellvertretend für +Beta-Test und Kritik. Ich hoffe, ihr macht damit noch weiter. + +Ganz besonderen Dank bin ich den Gründern und den Mitgliedern von DANTE, +Deutschsprachige Anwendervereinigung \TeX~e.V\kern-.18em., schuldig, durch die +letztlich die Verbreitung von \TeX{} und \LaTeX{} und allen Paketen +einschließlich {\KOMAScript} an einer zentralen Stelle überhaupt ermöglicht +wird. In gleicher Weise bedanke ich mich bei den aktiven Helfern auf der +Mailingliste \texttt{\TeX-D-L} (siehe \cite{DANTE:FAQ})m in der Usenet-Gruppe +\texttt{de.comp.text.tex} und den vielen \LaTeX-Foren im Internet, die mir so +manche Antwort auf Fragen zu {\KOMAScript} abnehmen. + +Mein Dank gilt aber auch allen, die mich immer wieder aufgemuntert haben, +weiter zu machen und dieses oder jenes noch besser, weniger fehlerhaft oder +schlicht zusätzlich zu implementieren. Ganz besonders bedanke ich mich noch +einmal bei dem äußerst großzügigen Spender, der mich mit dem bisher und +vermutlich für alle Zeiten größten Einzelbetrag für die bisher geleistete +Arbeit an \KOMAScript{} bedacht hat. + + +\section{Rechtliches} +\seclabel{legal} + +{\KOMAScript} steht unter der {\LaTeX} Project Public Licence. Eine nicht +offizielle deutsche Übersetzung ist Bestandteil des \KOMAScript-Pakets. In +allen Zweifelsfällen gilt im deutschsprachigen Raum der Text +\File{lppl-de.txt}, während in allen anderen Ländern der Text \File{lppl.txt} +anzuwenden ist. + +\iffree{Für die Korrektheit der Anleitung, Teile der Anleitung oder einer + anderen in diesem Paket enthaltenen Dokumentation wird keine Gewähr + übernommen.}% +{Diese gedruckte Ausgabe der Anleitung ist davon und von den in den Dateien + \File{lppl.txt} und \File{lppl-de.txt} des \KOMAScript-Pakets + festgeschriebenden rechtlichen Bedingungen ausdrücklich ausgenommen.} +}{} + +\section{Installation} +\seclabel{installation} + +Die drei wichtigsten \TeX-Distributionen, Mac\TeX, MiK\TeX{} und \TeX~Live, +stellen \KOMAScript{} über ihre jeweiligen Paketverwaltungen bereit. Es wird +empfohlen, die Installation und Aktualisierung von \KOMAScript{} darüber +vorzunehmen. Die manuelle Installation von {\KOMAScript} ohne Verwendung der +jeweiligen Paketverwaltung wird in der Datei \File{INSTALLD.txt}, die +Bestandteil jeder \KOMAScript-Verteilung ist, beschrieben. Beachten Sie dazu +auch die jeweilige Dokumentation zur installierten \TeX-Distribution. + +Daneben gibt es auf \cite{homepage} seit einiger Zeit Installationspakete von +Zwischenversionen von \KOMAScript{} für die wichtigsten Distributionen. Für +deren Installation ist die dortige Anleitung zu beachten. + + +\section{Fehlermeldungen, Fragen, Probleme} +\seclabel{errors} + +\iffree{% + Sollten Sie der Meinung sein, dass Sie einen Fehler in der Anleitung, einer + der \KOMAScript-Klassen, einem der \KOMAScript-Pakete oder einem anderen + Bestandteil von \KOMAScript{} gefunden haben, so sollten Sie wie folgt + vorgehen. Prüfen Sie zunächst, ob inzwischen eine neue Version von + \KOMAScript{} erschienen ist. Installieren Sie diese neue Version und + kontrollieren Sie, ob der Fehler oder das Problem auch dann noch vorhanden + ist. + + Wenn es sich nicht um einen Fehler in der Dokumentation handelt und der + Fehler oder das Problem nach einem Update noch immer auf"|tritt, erstellen + Sie bitte, wie in \cite{DANTE:FAQ} angegeben, ein minimales Beispiel. Gehen + Sie dazu wie unten beschrieben vor. + % Ein solches Beispiel sollte nur einen minimalen Text und nur die Pakete + % und Definitionen enthalten, die für die Verdeutlichung des Fehlers + % unbedingt notwendig sind. Auf exotische Pakete sollte möglichst ganz + % verzichtet werden. + Oft lässt sich ein Problem durch ein minimales Beispiel so weit eingrenzen, + dass bereits vom Anwender selbst festgestellt werden kann, ob es sich um + einen Anwendungsfehler handelt oder nicht. Auch ist so sehr häufig zu + erkennen, welche Pakete oder Klassen konkret das Problem verursachen und ob + es sich überhaupt um ein \KOMAScript-Problem handelt. Dies können Sie + gegebenenfalls zusätzlich überprüfen, indem Sie statt einer + \KOMAScript-Klasse einen Test mit der entsprechenden Standardklasse + vornehmen. Danach ist dann auch klar, ob der Fehlerbericht an den Autor von + \KOMAScript{} oder an den Autor eines anderen Pakets zu richten ist. Sie + sollten spätestens jetzt noch einmal gründlich die Anleitungen der + entsprechenden Paket, Klassen und \KOMAScript-Bestandteile studieren sowie + \cite{DANTE:FAQ} konsultieren. Möglicherweise existiert ja bereits eine + Lösung für Ihr Problem, so dass sich eine Fehlermeldung erübrigt. + + Wenn Sie denken, dass Sie einen noch unbekannten Fehler gefunden haben, oder + es aus anderem Grund für sinnvoll oder notwendig erachten, den + \KOMAScript-Autor zu kontaktieren, so sollten Sie dabei folgende Angaben + keinesfalls vergessen: + \begin{itemize} + \item Tritt das Problem auch auf, wenn statt einer \KOMAScript-Klasse eine + Standardklasse verwendet wird? In dem Fall liegt der Fehler höchst + wahrscheinlich nicht bei \KOMAScript. Es ist dann sinnvoller, die Frage in + einem öffentlichen Forum, einer Mailingliste oder im Usenet zu stellen. + \item Welche \KOMAScript-Version verwenden Sie? Entsprechende Informationen + finden Sie in der \File{log}-Datei des \LaTeX-Laufs jedes Dokuments, das + eine \KOMAScript-Klasse verwendet. + \item Welches Betriebssystem und welche \TeX-Distribution wird verwendet? + Diese Angaben erscheinen bei einem bestriebssystemunabhängigen Paket wie + \KOMAScript{} oder \LaTeX{} eher überflüssig. Es zeigt sich aber immer + wieder, dass sie durchaus eine Rolle spielen können. + \item Was genau ist das Problem oder der Fehler? Beschreiben Sie das Problem + oder den Fehler lieber zu ausführlich als zu knapp. Oftmals ist es + sinnvoll auch die Hintergründe zu erläutern. + \item Wie sieht ein vollständiges Minimalbeispiel aus? Ein solches + vollständiges Minimalbeispiel kann jeder leicht selbst erstellen, indem + Schritt für Schritt Inhalte und Pakete aus dem Problemdokument + auskommentiert werden. Am Ende bleibt ein Dokument, das nur die Pakete + lädt und nur die Teile enthält, die für das Problem notwendig + sind. Außerdem sollten alle geladenen Abbildungen durch + \Macro{rule}-Anweisungen entsprechender Größe ersetzt werden. Vor dem + Verschicken entfernt man nun die auskommentierten Teile, fügt als erste + Zeile die Anweisung \Macro{listfiles} ein und führt einen weiteren + \LaTeX-Lauf durch. Man erhält dann am Ende der \File{log}-Datei eine + Übersicht über die verwendeten Pakete. Das vollständige Minimalbeispiel + und die \File{log}-Datei fügen Sie ihrer Beschreibung hinzu. + \end{itemize} + Schicken Sie keine Pakete, PDF- oder PS- oder DVI-Dateien mit. Falls die + gesamte Problem- oder Fehlerbeschreibung einschließlich Minimalbeispiel und + \File{log}-Datei größer als ein paar Dutzend KByte ist, haben Sie mit + größter Wahrscheinlichkeit etwas falsch gemacht. Anderenfalls schicken Sie + Ihre Mitteilung an \href{mailto:komascript@gmx.info}{komascript@gmx.info}. + + Häufig werden Sie eine Frage zu \KOMAScript{} oder im Zusammenhang mit + \KOMAScript{} lieber öffentlich, beispielsweise in \texttt{de.comp.text.tex} + oder dem Forum auf \cite{homepage}, stellen wollen. Auch in diesem Fall + sollten Sie obige Punkte beachten, in der Regel jedoch auf die + \File{log}-Datei verzichten. Fügen Sie stattdessen nur die Liste der Pakete + und Paketversionen aus der \File{log}-Datei an. Im Falle einer Fehlermeldung + zitieren Sie diese ebenfalls aus der \File{log}-Datei.% +}{% + Der Autor hat sich große Mühe gegeben, Fehler in diesem Buch zu + vermeiden. Die Beispiele, die in diesem Buch abgedruckt sind, wurden + größtenteils während ihrer Entstehung getestet. Leider sind trotzdem weder + orthografische noch inhaltliche Fehler komplett auszuschließen. Sollten Sie + Fehler in diesem Buch finden, so melden Sie diese bitte über die + \KOMAScript-Support-Adresse, \mbox{komascript@gmx.info}, oder über + \cite{homepage} an den Autor. + + Bei Fehlern an \KOMAScript{} selbst beachten Sie bitte die Prozedur, die in + der Einleitung der freien \KOMAScript-Anleitung erklärt ist. Nur so ist + sichergestellt, dass das Problem auch reproduziert werden kann. Dies ist + für die Beseitigung eventueller Fehler eine Grundvoraussetzung.% +} + +Bitte beachten Sie, dass typografisch nicht optimale Voreinstellungen keine +Fehler darstellen. Aus Gründen der Kompatibilität werden Voreinstellungen nach +Möglichkeit auch in neuen \KOMAScript-Versionen beibehalten. Darüber hinaus +ist Typografie auch eine Frage der Sprache und Kultur. Die Voreinstellungen +von \KOMAScript{} stellen daher zwangsläufig einen Kompromiss dar. + +\iffree{% +\section{Weitere Informationen} +\seclabel{moreinfos} + +Sobald Sie im Umgang mit \KOMAScript{} geübt sind, werden Sie sich +möglicherweise Beispiele zu schwierigeren Aufgaben wünschen. Solche Beispiele +gehen über die Vermittlung von Grundwissen hinaus und sind daher\iffree{}{ + außer im Angang} nicht Bestandteil dieser Anleitung. Auf den Internetseiten +des \KOMAScript{} Documentation Projects \cite{homepage} finden Sie jedoch +weiterführende Beispiele. Diese sind für fortgeschrittene \LaTeX-Anwender +konzipiert. Für Anfänger sind sie wenig oder nicht geeignet. +}{} + +\endinput +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "../guide.tex" +%%% End: + +% LocalWords: Installationspakete Zwischenversionen Wiedereinsteigern +% LocalWords: Kompatibilitätsmodus diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/linkalias.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/linkalias.tex new file mode 120000 index 0000000000..dd3b49476e --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/linkalias.tex @@ -0,0 +1 @@ +../linkalias.tex
\ No newline at end of file diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/preface.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/preface.tex new file mode 100644 index 0000000000..8143c645f8 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/preface.tex @@ -0,0 +1,124 @@ +% ====================================================================== +% preface.tex +% Copyright (c) Markus Kohm, 2008-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% preface.tex +% Copyright (c) Markus Kohm, 2008-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== + +\KOMAProvidesFile{typearea.tex} + [$Date: 2018-03-12 09:45:33 +0100 (Mon, 12 Mar 2018) $ + Vorwort zu Version 3.25] + +\addchap{Vorwort zu \KOMAScript~3.25} + +Die Anleitung zu \KOMAScript~3.25 profitiert wieder einmal davon, dass nahezu +zeitgleich mit dieser Version auch eine überarbeitete Neuauflage der +Print-Ausgabe \cite{book:komascript} und der eBook-Ausgabe +\cite{ebook:komascript} erscheinen wird. Das führte zu vielen Verbesserungen, +die sich auch auf die freie Anleitung auswirken. + +Eine dieser Verbesserungen ist die Verlinkung von Befehlen, Umgebungen, +Optionen etc. jeweils auf die entsprechende Erklärung innerhalb dieser +Anleitung. Um innerhalb der Erklärung selbst nicht dazu verleitet zu werden, +erneut an den Anfang der Erklärung zu springen, und so quasi Leserekursionen +zu vermeiden, wurde die Verlinkung allerdings nur dann durchgeführt, wenn sie +tatsächlich von der aktuellen Stelle weg führt. + +Viele der Verbesserungen gehen auch auf die fleißigen, freiwilligen +Korrekturleser zurück. Ihnen sei an dieser Stelle ausdrücklich gedankt. + +\iffree{Leser dieser freien Bildschirm-Version müssen allerdings weiterhin mit + gewissen Einschränkungen leben. So sind einige Informationen -- + hauptsächliche solche für fortgeschrittene Anwender oder die dazu geeignet + sind, aus einem Anwender einen fortgeschrittenen Anwender zu machen -- der + Buchfassung vorbehalten. Das führt auch dazu, dass weiterhin einige Links in + dieser Anleitung lediglich zu einer Seite führen, auf der genau diese + Tatsache erwähnt ist. Darüber hinaus ist die freie Version nur eingeschränkt + zum Ausdruck geeignet. Der Fokus liegt vielmehr auf der Verwendung am + Bildschirm parallel zur Arbeit an einem Dokument. Sie hat auch weiterhin + keinen optimierten Umbruch, sondern ist quasi ein erster Entwurf, bei dem + sowohl der Absatz- als auch der Seitenumbruch in einigen Fällen durchaus + dürftig ist. Entsprechende Optimierungen sind den Buchausgaben + vorbehalten.}{} + +Nicht nur zur Anleitung erfahre ich inzwischen eher wenig Kritik. Auch zu den +Klassen und Paketen gibt es kaum noch Nachfragen nach neuen Möglichkeiten. Für +mich selbst bedeutet das, dass das Wissen um die Wünsche der Anwender +stagniert. Schon seit einigen Jahren habe ich daher hauptsächlich Dinge +implementiert, von denen ich annahm, dass sie nützlich sein könnten. Die +Rückmeldungen, die ich zu diesen neuen Möglichkeiten erhalten habe, +beschränken sich aber überwiegend auf Kritik daran, dass uralte \emph{Hacks}, +die sich auf undokumentierte Eigenschaften von \KOMAScript{} stützen, in +einigen Fällen nicht mehr funktionieren. Freude darüber, dass derart unsaubere +Notlösungen nicht mehr notwendig sind, wurde hingegen kaum geäußert. Daher +habe ich beschlossen, Erweiterungen und Verbesserungen an \KOMAScript{} mehr +und mehr auf solche Dinge zu beschränken, die von Anwendern explizit +nachgefragt werden. Oder sollte es gar sein, dass \KOMAScript{} nach bald +25~Jahren schlicht einen Stand erreicht hat, in dem es alle Wünsche erfüllt? + +Die rückläufige Entwicklung bei Fehlermeldungen ist leider ebenfalls nicht nur +erfreulich. Inzwischen ist häufig zu beobachten, dass diejenigen, die ein +Problem entdecken, dieses nicht mehr unmittelbar an mich melden, sondern sich +lediglich in irgendwelchen Internet-Foren darüber auslassen. Oftmals finden +sich in diesen Foren dann mehr oder weniger geschickte Notlösungen. Das ist +zwar grundsätzlich erfreulich, führt aber leider in der Regel dazu, dass das +Problem nie gemeldet und daher auch nie wirklich beseitigt wird. Dass solche +Notlösungen irgendwann selbst zu einem Problem werden können, versteht sich +von selbst und wurde bereits im vorherigen Absatz erwähnt. + +Vereinzelt finden sich dankenswerter Weise Dritte, die mich auf solche Themen +hinweisen. Dies betrifft aber nur einzelne Beiträge in sehr wenigen Foren. Ein +direkter Kontakt zu demjenigen, bei dem das Problem aufgetreten ist, ist dann +meist nicht möglich, obwohl er teilweise wünschenswert wäre. + +Daher sei noch einmal ausdrücklich darum gebeten, mir vermeintliche Bugs +wahlweise in Deutsch oder Englisch unmittelbar zu melden. Dabei ist +sprachliche Perfektion weniger wichtig. Die Meldung sollte halbwegs +verständlich und das Problem nachvollziehbar sein. Ein möglichst kurzes +Code-Beispiel ist in der Regel unabhängig von der darin verwendeten Sprache zu +verstehen. Im direkten Kontakt sind mir bei Bedarf auch Rückfragen +möglich. Bitte verlassen Sie sich nicht darauf, dass irgendwer das Problem +schon irgendwann melden wird. Gehen Sie davon aus, dass es nur behoben wird, +wenn Sie es selbst melden. Näheres zu Fehlermeldungen ist im ersten Kapitel +\iffree{der Anleitung}{des Buches} zu finden. + +\bigskip\noindent +Markus Kohm, Neckarhausen bei Regen im März 2018 +\endinput + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide.tex" +%%% End: + diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scraddr.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scraddr.tex new file mode 100644 index 0000000000..9b74b665e6 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scraddr.tex @@ -0,0 +1,282 @@ +% ====================================================================== +% scraddr.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scraddr.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scraddr of the KOMA-Script guide +% Maintained by Jens-Uwe Morawski (with help from Markus Kohm) +% +% ---------------------------------------------------------------------- +% +% Kapitel über scraddr in der KOMA-Script-Anleitung +% Verwaltet von Jens-Uwe Morawski (mit Unterstützung von Markus Kohm) +% +% ====================================================================== + +\KOMAProvidesFile{scraddr.tex} + [$Date: 2018-02-05 10:50:56 +0100 (Mon, 05 Feb 2018) $ + KOMA-Script guide (chapter: scraddr)] + +\chapter{Adressdateien mit \Package{scraddr} erschließen}% +\labelbase{scraddr}% +\BeginIndexGroup +\BeginIndex{Package}{scraddr} + +Das Paket \Package{scraddr} ist eine kleine Beigabe zur Briefklasse und zum +Briefpaket von \KOMAScript. Ziel ist, die Benutzung von Adressdateien zu +vereinfachen und ihre Anwendung flexibler zu gestalten. + +\section{Befehle} +\seclabel{overview} + +Im Grunde stellt das Paket nur einen Lademechanismus für Adressdateien bereit, +die aus \DescRef{\LabelBase.cmd.adrentry}- und neueren +\DescRef{\LabelBase.cmd.addrentry}-Einträgen bestehen, wie sie in +\autoref{cha:scrlttr2} ab \DescPageRef{scrlttr2.cmd.adrentry} beschrieben +sind. + + +\begin{Declaration} +\Macro{InputAddressFile}\Parameter{Dateiname} +\end{Declaration}% +Der Befehl \Macro{InputAddressFile} ist der zentrale Ladebefehl +von \Package{scraddr}. +Er erwartet als obligatorisches Argument den +Namen der einzulesenden Adressdatei.\Index{Adressdatei} +Wird diese Datei nicht gefunden, wird ein Fehler ausgegeben. + +Für jeden Eintrag dieser Adressdatei wird eine Reihe von Makros generiert, +die es ermöglichen, auf die Daten der Adressdatei zuzugreifen. Es soll an +dieser Stelle nicht verschwiegen werden, dass dies bei großen Adressdateien +sehr viel \TeX-Speicher kostet. +% +\EndIndexGroup + +\begin{Declaration}% + \Macro{adrentry}\Parameter{Name}\Parameter{Vorname}\Parameter{Adresse} + \Parameter{Tel.}\Parameter{F1}\Parameter{F2} + \Parameter{Kommentar}\Parameter{Kürzel} + \Macro{addrentry}\Parameter{Name}\Parameter{Vorname}\Parameter{Adresse} + \Parameter{Tel.}\Parameter{F1}\Parameter{F2} + \Parameter{F3}\Parameter{F4} + \Parameter{Kürzel} + \Macro{adrchar}\Parameter{Anfangsbuchstaben} + \Macro{addrchar}\Parameter{Anfangsbuchstaben} +\end{Declaration}% +Der Aufbau der Adresseinträge in der Adressdatei wurde in +\autoref{sec:scrlttr2.addressFile} ab +\DescPageRef{scrlttr2.cmd.adrentry} ausführlich besprochen. Die +ebenfalls dort erwähnte Unterteilung der Adressdatei mit Hilfe von +\Macro{adrchar} oder \Macro{addrchar} hat für \Package{scraddr} keine +Bedeutung und wird vom Paket ignoriert.% +\EndIndexGroup + +\begin{Declaration} + \Macro{Name}\Parameter{Kürzel} + \Macro{FirstName}\Parameter{Kürzel} + \Macro{LastName}\Parameter{Kürzel} + \Macro{Address}\Parameter{Kürzel} + \Macro{Telephone}\Parameter{Kürzel} + \Macro{FreeI}\Parameter{Kürzel} + \Macro{FreeII}\Parameter{Kürzel} + \Macro{Comment}\Parameter{Kürzel} + \Macro{FreeIII}\Parameter{Kürzel} + \Macro{FreeIV}\Parameter{Kürzel} +\end{Declaration}% +Die englischen Namen der Zugriffsbefehle folgen den Bezeichnungen der +Argumente von \DescRef{\LabelBase.cmd.adrentry} und +\DescRef{\LabelBase.cmd.addrentry}. Die Auswahl des Adresseintrags erfolgt +anhand des Kürzels im letzten Argument eines Eintrags, das heißt Argument +Nummer 8 für \DescRef{\LabelBase.cmd.adrentry}-Einträge beziehungsweise +Argument Nummer 9 für \DescRef{\LabelBase.cmd.addrentry}-Einträge. Das +bedeutet auch, dass dieses Argument nicht leer sein darf. Um eine sichere +Funktionsweise zu garantieren, empfiehlt es sich, das Kürzel nur als Folge von +Buchstaben aufzubauen, wobei jedoch keine Umlaute benutzt werden dürfen. + +Weiterhin ist zu beachten, dass bei mehrmaligem Auf"|treten +eines Kürzels in den Einträgen die Angaben beim +letzten Auf"|treten die gültigen sind.% +% +\EndIndexGroup + + +\section{Anwendung}\seclabel{usage} + +\BeginIndexGroup +\BeginIndex[indexother]{Cmd}{addrentry}% +\BeginIndex[indexother]{Cmd}{adrentry}% +Um das Paket benutzen zu können, ist eine gültige +Adressdatei zu erstellen. +Diese, hier \File{lotr.adr} genannt, könnte beispielsweise +folgendermaßen aussehen: +\begin{lstcode} + \addrentry{Beutlin}{Frodo}% + {Der Bühl\\ Beutelsend/Hobbingen im Auenland}{}% + {Bilbo Beutlin}{Rauchen von Pfeifenkraut}% + {der Ringträger}{Bilbos Erbe}{FRODO} + \adrentry{Gamdschie}{Samweis}% + {Beutelhaldenweg 3\\Hobbingen im Auenland}{}% + {Rosie Kattun}{Knullen}% + {des Ringträgers treuester Gefährte}{SAM} + \adrentry{Bombadil}{Tom}% + {Im Alten Wald}{}% + {Goldbeere}{trällern von Nonsensliedern}% + {Meister von Wald, Wasser und Berg}{TOM} +\end{lstcode} + +Das vierte Argument, die Telefonnummer, wurde hier leer gelassen, +da es in Auenland keine Telefone gibt. Wie zu sehen ist, sind also auch leere +Angaben möglich. Dagegen ist es nicht erlaubt, ein Argument einfach komplett +weg zu lassen. + +\BeginIndexGroup +\BeginIndex[indexother]{Cmd}{InputAddressFile} +Mit dem oben beschriebenen Ladebefehl lesen wir die Adressdatei +in unser Briefdokument ein: +\begin{lstcode} + \InputAddressFile{lotr} +\end{lstcode} +\EndIndexGroup + +\BeginIndexGroup +\BeginIndex[indexother]{Cmd}{Name}% +\BeginIndex[indexother]{Cmd}{Address}% +\BeginIndex[indexother]{Cmd}{FirstName}% +\BeginIndex[indexother]{Cmd}{LastName}% +\BeginIndex[indexother]{Cmd}{FreeI}% +\BeginIndex[indexother]{Cmd}{FreeII}% +\BeginIndex[indexother]{Cmd}{FreeIII}% +\BeginIndex[indexother]{Cmd}{FreeIV}% +\BeginIndex[indexother]{Cmd}{Comment}% +Mit Hilfe der vorgestellten Makros können wir dann einen Brief +an den alten \textsc{Tom Bombadil} schreiben, in dem wir ihn +fragen, ob er sich noch an zwei Gefährten aus alter Zeit +erinnern kann. +\begin{lstcode} + \begin{letter}{\Name{TOM}\\\Address{TOM}} + \opening{Lieber \FirstName{TOM} \LastName{TOM},} + + oder \FreeIII{TOM}, wie Dich Deine geliebte \FreeI{TOM} + nennt. Kannst Du Dich noch an einen Herrn + \LastName{FRODO}, genauer gesagt \Name{FRODO}, denn es gab + ja auch noch den Herrn \FreeI{FRODO}, erinnern. Er war + \Comment{FRODO} im dritten Zeitalter und \FreeIV{FRODO}. + Begleitet wurde er von \Name{SAM}, \Comment{SAM}. + + Beider Vorlieben waren sehr weltlich. Der + \FirstName{FRODO} genoss das \FreeII{FRODO}, sein Gefährte + schätzte eine gute Mahlzeit mit \FreeII{SAM}. + + Weißt du noch? Mithrandir hat Dir bestimmt viel von ihnen + erzählt. + \closing{"`O Frühling und Sommerzeit + und danach wieder Frühling!\\ + O Wind auf dem Wasserfall + und Lachen des Laubes!"'} + \end{letter} +\end{lstcode} +Die in diesem Beispiel in \DescRef{scrlttr2.cmd.opening} verwendete +Zusammensetzung aus \Macro{FirstName}\Parameter{Kürzel} und +\Macro{LastName}\Parameter{Kürzel} kann auch direkt mittels +\Macro{Name}\Parameter{Kürzel} erhalten werden. + +Das fünf"|te und sechste Argument von \DescRef{\LabelBase.cmd.adrentry} und +\DescRef{\LabelBase.cmd.addrentry} steht zur freien Verfügung. Mit den Makros +\Macro{FreeI} und \Macro{FreeII} kann auf diese Inhalte zugegriffen werden. Im +vorliegenden Fall wurde das fünf"|te Argument für die Person benutzt, die der +Person des Eintrags am nächsten steht. Das sechste Argument enthält im +Beispiel die besondere Vorliebe der jeweiligen Person. Das siebente Argument +ist ebenfalls ein freier Eintrag. Der Zugriff erfolgt per \Macro{Comment} oder +\Macro{FreeIII}. Der Zugriff auf das vierte freie Argument mittels +\Macro{FreeIV} ist nur für \DescRef{\LabelBase.cmd.addrentry}-Einträge gültig. +Bei \DescRef{\LabelBase.cmd.adrentry}-Einträgen ist seine Verwendung nicht +zulässig. Näheres hierzu findet sich im nächsten Abschnitt. +% +\EndIndexGroup +\EndIndexGroup + + +\section{Paketoptionen für Warnungen} + +Wie im vorherigen Abschnitt erwähnt, ist die Benutzung des Zugriffsbefehls +\Macro{FreeIV} bei \DescRef{\LabelBase.cmd.adrentry}-Einträgen nicht +zulässig. Wie \Package{scraddr} darauf reagiert, ist allerdings durch +Paketoptionen konfigurierbar. Bitte beachten Sie\textnote{Achtung!}, dass +dieses Paket die erweiterte Optionenschnittstelle mit +\DescRef{maincls.cmd.KOMAoptions} und \DescRef{maincls.cmd.KOMAoption} nicht +unterstützt. Die Optionen sind also entweder als globale Optionen bei +\DescRef{maincls.cmd.documentclass} oder als lokale Optionen bei +\DescRef{maincls.cmd.usepackage} anzugeben. + + +\begin{Declaration} +\Option{adrFreeIVempty} +\Option{adrFreeIVshow} +\Option{adrFreeIVwarn} +\Option{adrFreeIVstop} +\end{Declaration} +Diese vier Optionen erlauben die Auswahl aus vier verschiedenen Reaktionen +zwischen \emph{Ignorieren} bis \emph{Abbruch} falls bei einem +\DescRef{\LabelBase.cmd.adrentry}-Eintrag der Zugriffsbefehl \Macro{FreeIV} +verwendet wird: +% +\begin{labeling}[~--]{\Option{adrFreeIVempty}} +\item[\Option{adrFreeIVempty}] + Der Befehl \Macro{FreeIV} wird einfach ignoriert. +\item[\Option{adrFreeIVshow}] + Es wird die Warnung: »(entry FreeIV undefined at \PName{Kürzel})«, + in den Text geschrieben. +\item[\Option{adrFreeIVwarn}] + In der Log-Datei erscheint eine Warnung. +\item[\Option{adrFreeIVstop}] + Der \LaTeX{}-Lauf wird mit einer Fehlermeldung unterbrochen. +\end{labeling} +Wird für das Paket keine Option angegeben, so ist \Option{adrFreeIVshow} +voreingestellt.% +\EndIndexGroup +% +\EndIndexGroup +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "../guide" +%%% End: + +% LocalWords: Zugriffsbefehle Briefpaket Briefklasse Adresseintrags +% LocalWords: Ladebefehl Auenland diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex new file mode 100644 index 0000000000..f6fb67659e --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex @@ -0,0 +1,1937 @@ +% ====================================================================== +% scrbase.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrbase.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Package scrbase for Package and Class Authors +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Paket scrbase für Paket- und Klassenautoren +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{scrbase.tex} + [$Date: 2018-08-27 08:53:35 +0200 (Mon, 27 Aug 2018) $ + KOMA-Script package scrbase] + +\chapter{Grundlegende Funktionen im Paket \Package{scrbase}} +\labelbase{scrbase} +\BeginIndexGroup +\BeginIndex{Package}{scrbase}% + +Das Paket \Package{scrbase} stellt einige grundlegende Funktionen bereit, die +sich an Autoren von Paketen und Klassen richten. Dabei kann es nicht nur für +Wrapper-Klassen genutzt werden, die ihrerseits eine \KOMAScript-Klasse +laden. Auch Autoren von Klassen, die ansonsten nichts mit \KOMAScript{} zu tun +haben, können von der Funktionalität von \Package{scrbase} profitieren. + +\section{Laden des Pakets} +\seclabel{loadit} + +Während Anwender ein Paket mit Hilfe von \Macro{usepackage} laden, verwenden +Paket- und Klassenautoren +\Macro{RequirePackage}\IndexCmd{RequirePackage}. Autoren von Wrapper-Paketen +nutzen auch +\Macro{RequirePackageWithOptions}\IndexCmd{RequirePackageWithOptions}. Bei +Verwendung von \Macro{RequirePackage} können wie bei +\Macro{usepackage}\IndexCmd{usepackage} Optionen angegeben +werden. Demgegenüber erhält das Paket bei \Macro{RequirePackageWithOptions} +alle Optionen, mit denen zuvor das Wrapper-Paket geladen wurde. Näheres zu +diesen Anweisungen ist \cite{latex:clsguide} zu entnehmen. + +Das Paket \Package{scrbase} benötigt intern die Funktionalität des Pakets +\Package{keyval}\IndexPackage{keyval}\important{\Package{keyval}}. Diese kann +auch vom Paket \Package{xkeyval} zur Verfügung gestellt werden. Bei Bedarf +lädt \Package{scrbase} selbst \Package{keyval}. + +Das Paket \Package{keyval} erlaubt es, Schlüssel zu definieren und diesen +Werten zuzuweisen. Auch die Optionen, die \Package{scrbase} bereitstellt, +verwenden die \Package{keyval}-Syntax: \OptionVName{\PName{Schlüssel}}{Wert}% +\important{\OptionVName{\PName{Schlüssel}}{Wert}}. + + +\section{Schlüssel als Eigenschaften von Familien und deren Mitgliedern} +\seclabel{keyvalue} + +Wie bereits in \autoref{sec:scrbase.loadit} erwähnt, setzt \Package{scrbase} +bei Schlüsseln und deren Werten auf das Paket \Package{keyval}. Allerdings +erweitert es dessen Funktionalität. Während bei \Package{keyval} ein Schlüssel +einer Familie gehört, kennt \Package{scrbase} zu jeder Familie auch noch +Familienmitglieder. Ein Schlüssel kann dann sowohl einer Familie als auch +einem oder mehreren Familienmitgliedern gehören. Außerdem kann ein Wert einem +Schlüssel eines Familienmitglieds, einem Schlüssel einer Familie oder einem +Schlüssel aller Familienmitglieder zugewiesen werden. + +\begin{Declaration} + \Macro{DefineFamily}\Parameter{Familienname} + \Macro{DefineFamilyMember}\OParameter{Mitglied}\Parameter{Familienname} +\end{Declaration} +\Package{scrbase} muss aus verschiedenen Gründen die Mitglieder einer Familie +kennen. Daher ist es notwendig, eine neue Familie zunächst mit +\Macro{DefineFamily} zu definieren und so eine leere Mitgliederliste zu +erzeugen. Ist die Familie bereits definiert, so geschieht schlicht nichts. Es +wird also auch nicht eine bereits existierende Mitgliederliste überschrieben. + +Ein neues Mitglied wird der Familie dann mit der Anweisung +\Macro{DefineFamilyMember} bekannt gegeben. Existiert die Familie nicht, so +führt dies zu einer Fehlermeldung. Existiert das Mitglied bereits, so +geschieht nichts. Wird kein Mitglied angegeben, so bleibt das Mitglied nicht +etwa leer, sondern es wird +»\texttt{.}\Macro{@currname}\texttt{.}\Macro{@currext}« angenommen. Während +des Ladens einer Klasse oder eines Pakets sind \Macro{@currname} und +\Macro{@currext} zusammen der Dateiname. + +Theoretisch wäre es möglich, mit einem leeren optionalen Argument +\PName{Mitglied} auch ein Mitglied ohne Name zu definieren. Dies würde jedoch +der Familie selbst entsprechen. Es wird empfohlen, als \PName{Familienname} nur +Buchstaben und Ziffern zu verwenden und das \PName{Mitglied} immer mit einem +anderen Zeichen, vorzugsweise einem Punkt, zu beginnen. Anderenfalls könnte +es passieren, dass sich Mitglieder einer Familie mit Mitgliedern anderer +Familien überdecken. + +\Package{scrbase} definiert selbst bereits die Familie »\PValue{KOMA}« und +fügt ihr das Mitglied »\PValue{.scrbase.sty}« hinzu. Grundsätzlich sind die +Familien »\PValue{KOMA}« und »\PValue{KOMAarg}« \KOMAScript{} vorbehalten. Es +wird empfohlen, für eigene Pakete den Namen des Gesamtpakets als Familie und +den Namen einzelner Pakete im Gesamtpaket als Mitglied zu verwenden. +% +\begin{Example} + Angenommen, Sie schreiben ein neues Gesamtpaket »Fleischermeister«. Darin + befinden sich die Pakete \File{Salami.sty}, \File{Mettwurst.sty} und + \File{Krakauer.sty}. Daher entscheiden Sie sich für den Familienname + »\PValue{Fleischermeister}« und fügen in jedem der Pakete die Zeilen +% Umbruchoptimierung: listings +\begin{lstcode}[aboveskip=0pt plus \dp\strutbox] + \DefineFamily{Fleischermeister} + \DefineFamilyMember{Fleischermeister} +\end{lstcode} + ein. Dadurch wird beim Laden der drei genannten Pakete der Familie + »\PValue{Fleischermeister}« je nach Paket eines der drei Mitglieder + »\PValue{.Salami.sty}«, »\PValue{.Mettwurst.sty}« und + »\PValue{.Krakauer.sty}« zugefügt. Am Ende sind dann alle drei Mitglieder + definiert. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DefineFamilyKey}\OParameter{Mitglied}\Parameter{Familie}% + \Parameter{Schlüssel} + \OParameter{Säumniswert}\Parameter{Aktion} + \Macro{FamilyKeyState} + \Macro{FamilyKeyStateUnknown} + \Macro{FamilyKeyStateProcessed} + \Macro{FamilyKeyStateUnknownValue} + \Macro{FamilyKeyStateNeedValue} +\end{Declaration} +Mit dieser Anweisung wird ein \PName{Schlüssel} definiert. Ist ein +\PName{Mitglied} angegeben, so ist der \PName{Schlüssel} eine Eigenschaft +dieses Mitglieds der angegebenen \PName{Familie}. Ist\textnote{Hinweis} +\OParameter{Mitglied} nicht angegeben, so wird wieder das Mitglied +»\texttt{.}\Macro{@currname}\texttt{.}\Macro{@currext}« angenommen. Ist das +\PName{Mitglied} hingegen leer, so wird ein Familienschlüssel anstelle eines +Mitgliederschlüssels definiert. + +Wird später dem \PName{Schlüssel} ein Wert zugewiesen, so wird \PName{Aktion} +ausgeführt, wobei der Wert als Parameter übergeben wird. Innerhalb von +\PName{Aktion} steht also »\lstinline{#1}« für den übergebenen Wert. Wurde +kein Wert übergeben, so wird stattdessen der \PName{Säumniswert} +eingesetzt. Falls kein \PName{Säumniswert} angegeben wird, kann später der +\PName{Schlüssel} nur mit Wertübergabe verwendet werden. + +%\begin{Explain} + \phantomsection\label{explain:scrbase.macro.DefineFamilyKey}% + Letztlich führt +\begin{lstcode}[escapeinside=»«] + \DefineFamilyKey[»\PName{Mitglied}«]{»\PName{Familie}«}{»\PName{Schlüssel}«} + [»\PName{Säumniswert}«]{»\PName{Aktion}«} +\end{lstcode} + zu dem Aufruf +\begin{lstcode}[moretexcs={define@key},escapeinside=»«] + \define@key{»\PName{Familie\,Mitglied}«}{»\PName{Schlüssel}«} + [»\PName{Säumniswert}«]{»\PName{erweiterte Aktion}«} +\end{lstcode} + wobei \Macro{define@key} im \Package{keyval}-Paket\IndexPackage{keyval} + definiert ist (siehe \cite{package:keyval}). Allerdings kommen zu dem Aufruf + von \Macro{define@key} noch einige zusätzliche Vorkehrungen und auch die + \PName{Aktion} wird um zusätzliche Vorkehrungen erweitert. +%\end{Explain} + +Erfolg\ChangedAt{v3.12}{\Package{scrbase}} oder Misserfolg der Ausführung der +\PName{Aktion} werden über +\Macro{FamilyKeyState} %\important{\Macro{FamilyKeyState}} % einige davon sind + % schlicht zu breit! +an \Package{scrbase} zurückgemeldet, damit dieses je nach Bedarf und +Verwendung des Schlüssels weitere Maßnahmen ergreifen kann. Dies kann +beispielsweise eine Fehlermeldung aber auch nur die Signalisierung einer +unbekannten Option sein. + +Der Zustand \Macro{FamilyKeyState} ist in der Voreinstellung identisch mit dem +Zustand \Macro{FamilyKeyStateUnknown}. Das bedeutet, dass es nicht sicher ist, +ob der Schlüssel korrekt verarbeitet werden konnte. Findet \Package{scrbase} +nach Ausführung der \PName{Aktion} noch immer diesen Zustand vor, so wird ein +Hinweis in die \File{log}-Datei geschrieben und im weiteren der Zustand +\Macro{FamilyKeyStateProcessed} angenommen. + +Der Zustand +\Macro{FamilyKeyStateProcessed} %\important{\Macro{FamilyKeyStateProcessed}} +signalisiert, dass der Schlüssel und die Wertzuweisung an den Schlüssel +vollständig abgeschlossen wurde und alles in Ordnung ist. Auf den Zustand kann +einfach durch Aufruf von \Macro{FamilyKeyStateProcessed} selbst umgeschaltet +werden. + +Der Zustand +\Macro{FamilyKeyStateUnknownValue} %\important{\Macro{FamilyKeyStateUnknownValue}} +signalisiert, dass der Schlüssel zwar verarbeitet wurde, ihm jedoch ein Wert +zugewiesen werden sollte, der nicht erlaubt ist. Diesen Zustand meldet +beispielsweise \hyperref[cha:typearea]{\Package{typearea}}, wenn versucht +wird, an Option \DescRef{typearea.option.twoside} den Wert \PValue{unbekannt} +zuzuweisen. Die Umschaltung auf den Zustand erfolgt einfach durch Aufruf von +\Macro{FamilyKeyStateUnknownValue} selbst. + +Der Zustand +\Macro{FamilyKeyStateNeedValue} %\important{\Macro{FamilyKeyStateNeedValue}} +signalisiert, dass der Schlüssel nicht verarbeitet werden konnte, weil er +zwingend einen Wert erwartet, er aber ohne Wertzuweisung aufgerufen +wurde. Dieser Zustand wird automatisch gesetzt, wenn ein Schlüssel, der keinen +\PName{Säumniswert} besitzt, ohne Wertzuweisung verwendet wird. Theoretisch +wäre aber auch eine explizite Umschaltung darauf durch Aufruf von +\Macro{FamilyKeyStateNeedValue} selbst möglich. + +Des Weiteren können zusätzliche Fehlerzustände definiert werden, indem man +\Macro{FamilyKeyState} auf eine kurze Meldung umdefiniert. In der Regel +sollten jedoch die vier vordefinierten Zustände verwendet werden. + +\begin{Example} + Nehmen wir an, jedes der drei Pakete aus dem letzten Beispiel soll einen + Schlüssel \PValue{Aufschnitt} erhalten. Wird dieser aufgerufen, so soll in + jedem der Pakete entsprechend dem Aufrufwert ein Schalter gesetzt + werden. Für das Paket \Package{Salami} könnte das beispielsweise so + aussehen: +\begin{lstcode} + \newif\if@Salami@Aufschnitt + \DefineFamilyKey{Fleischermeister}% + {Aufschnitt}[true]{% + \expandafter\let + \expandafter\if@Salami@Aufschnitt + \csname if#1\endcsname + \FamilyKeyStateProcessed + } +\end{lstcode} + Als Wert ist daher beim Aufruf \PValue{true} oder \PValue{false} + erlaubt. Ein Test auf unerlaubte Werte existiert in diesem Beispiel + nicht. Stattdessen wird immer zurückgemeldet, dass der Schlüssel vollständig + und korrekt verarbeitet wurde. Wird der Schlüssel später verwendet, so muss + entweder einer der erlaubten Werte zugewiesen oder ein Aufruf ohne + Wertzuweisung verwendet werden. In letzterem Fall kommt der Säumniswert + \PName{true} zum Einsatz. + + Für die anderen beiden Pakete kann das fast identisch definiert + werden. Lediglich die Zeichenfolge »\texttt{Salami}« ist jeweils zu + ersetzen. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{RelaxFamilyKey}\OParameter{Mitglied}\Parameter{Familie} + \Parameter{Schlüssel} +\end{Declaration} +Wurde\ChangedAt{v3.15}{\Package{scrbase}} \PName{Schlüssel} zuvor als +\PName{Mitglied} der \PName{Familie} definiert, so wird diese Definition +quasi aufgehoben. Der \PName{Schlüssel} ist dann für dieses \PName{Mitglied} +der \PName{Familie} nicht mehr definiert. Die Verwendung für einen +\PName{Schlüssel}, der für dieses \PName{Mitglied} der \PName{Familie} gar +nicht definiert ist, ist ebenfalls zulässig. + +Ist kein \PName{Mitglied} angegeben, so wird genau wie bei Anweisung +\DescRef{\LabelBase.cmd.DefineFamilyKey} wieder das Mitglied +»\texttt{.}\Macro{@currname}\texttt{.}\Macro{@currext}« angenommen. Allerdings +wird \Macro{RelaxFamilyKey} selten während des Ladens eines Pakets, +sondern häufiger zur Laufzeit verwendet. Daher ist \PName{Mitglied} in der +Regel auch explizit anzugeben.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyProcessOptions}\OParameter{Mitglied}\Parameter{Familie} +\end{Declaration} +Grundsätzlich ist die Erweiterung der Schlüssel von Familien auf Familien und +Familienmitglieder dazu gedacht, dass Schlüssel beziehungsweise die +Wertzuweisung an Schlüssel als ganz normale Klassen- oder Paketoptionen +verwendet werden können. Diese Anweisung stellt daher eine Erweiterung von +\Macro{ProcessOptions*}\IndexCmd{ProcessOptions*}% +\important{\Macro{ProcessOption*}} aus dem \LaTeX-Kern dar (siehe +\cite{latex:clsguide}). Dabei verarbeitet die Anweisung nicht nur Optionen, +die mit \Macro{DeclareOption}\IndexCmd{DeclareOption}% +\important{\Macro{DeclareOption}} definiert wurden. Es werden auch alle +Schlüssel eines angegebenen Familienmitglieds abgearbeitet. Wird das optionale +Argument \PName{Mitglied} nicht angegeben, so wird wieder das Mitglied +»\texttt{.}\Macro{@currname}\texttt{.}\Macro{@currext}« verwendet. + +Eine Besonderheit sind Schlüssel, die nicht einem Familienmitglied, sondern +der Familie selbst zugeordnet sind, bei der also das Mitglied leer geblieben +ist. Diese werden ebenfalls gesetzt und zwar noch bevor der Schlüssel des +Mitglieds gesetzt wird. +\begin{Example} + Wenn in den Paketen aus den zurückliegenden Beispielen nach der Definition + der Schlüssel die Zeile +\begin{lstcode} + \FamilyProcessOptions{Fleischermeister} +\end{lstcode} + ergänzt wird, so kann der Anwender bereits beim Laden der Pakete mit + \Macro{usepackage} die Eigenschaft \Option{Aufschnitt} als Option + angeben. Wird die Option global, also bei \Macro{documentclass}, angegeben, + so wird die Eigenschaft automatisch bei allen drei Paketen gesetzt, wenn + alle drei Pakete einzeln geladen werden. +\end{Example} +Es\textnote{Achtung!} wird darauf hingewiesen, dass bei Paketen globale +Optionen vor den lokal dem Paket zugewiesenen Optionen ausgeführt +werden. Während bei der Abarbeitung der globalen Optionen unbekannte Werte für +Optionen dazu führen, dass darüber lediglich in der \File{log}-Datei +informiert und die Option ansonsten ignoriert wird, führt dies bei lokalen +Optionen zu einer Fehlermeldung. + +Man kann \Macro{FamilyProcessOptions} wahlweise als Erweiterung von +\Macro{ProcessOption*} oder als Erweiterung des +\PName{Schlüssel=Wert}-Mechanismus von \Package{keyval} verstehen. Letztlich +werden mit Hilfe von \Macro{FamilyProcessOptions} aus +\PName{Schlüssel=Wert}-Paaren Optionen. + +Wie\textnote{Achtung!} auch \Macro{ProcessOptions} darf +\Macro{FamilyProcessOptions} nicht während der Ausführung von Optionen +verwendet werden. Es ist also insbesondere auch nicht erlaubt, innerhalb der +Ausführung von Optionen Pakete zu laden.%, die selbst +%\Macro{FamilyProcessOptions} verwenden.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{BeforeFamilyProcessOptions}\OParameter{Mitglied}\Parameter{Familie}% + \Parameter{Code}% +\end{Declaration} +Insbesondere\ChangedAt{v3.18}{\Package{scrbase}} Autoren von Wrapper-Klassen +wünschen manchmal, in ein Paket oder eine Klasse noch vor der Verarbeitung der +Optionen eines zukünftig geladenen Pakets oder einer zukünftig geladenen +Klasse mit \DescRef{\LabelBase.cmd.FamilyProcessOptions} eingreifen zu +können. Dies ist mit \Macro{BeforeFamilyProcessOptions} möglich. Das Paket +\Package{scrbase} bietet dafür einen sogenannten Haken\Index{Haken} +(engl. \emph{hook}). Diesem kann man mit \Macro{BeforeFamilyProcessOptions} +neuen \PName{Code} hinzufügen. Die Parameter \PName{Mitglied} und +\PName{Familie} entsprechen dabei denen von +\Macro{FammilyProcessOptions}. Allerdings kann man auch den Haken von +Familien-Mitgliedern \PName{Code} hinzufügen, wenn bisher die \PName{Familie} +oder das \PName{Mitglied} noch gar nicht definiert ist. + +Der Haken eines Familien-Mitglieds wird übrigens nach dessen Ausführung +automatisch gelöscht. Verwendet man hingegen ein leeres \PName{Mitglied}, so +wird dieser Haken\Index{Haken} für alle Mitglieder der \PName{Familie} +ausgeführt und bleibt auch über die Ausführung hinaus erhalten. + +\begin{Example} + Sie schreiben ein Paket \Package{Rauchwurst}, das selbst \Package{Mettwurst} + lädt. Allerdings wollen Sie nicht, dass für dieses Paket die Option + \Option{Aufschnitt} gesetzt werden kann. Daher deaktivieren sie die Option + vor dem Laden des Pakets über \Macro{BeforeFamilyProcessOptions}. +\begin{lstcode} + \RequirePackage{scrbase} + \BeforeFamilyProcessOptions[.Mettwurst.sty]% + {Fleischermeister}{% + \RelaxFamilyKey[.Mettwurst.sty]% + {Fleischermeister}{Aufschnitt}% + } + \RequirePackageWithOptions{Mettwurst} +\end{lstcode} + Versucht nun jemand Ihr Paket mit Option + \Option{Aufschnitt} zu laden, so meldet das Paket \Package{Mettwurst}, dass + diese Option nicht bekannt ist. Wird die Option \Option{Aufschnitt} als + globale Option angegeben, so ignoriert Paket \Package{Mettwurst} + diese. Voreinstellungen innerhalb des Pakets \Package{Mettwurst}, die + beispielsweise mit \DescRef{\LabelBase.cmd.FamilyExecuteOptions} noch vor + \DescRef{\LabelBase.cmd.FamilyProcessOptions} erfolgen könnten, wären + allerdings davon unabhängig. Aber natürlich kann man eigene + Voreinstellungen von \Package{Rauchwurst} aus ebenfalls per + \Macro{BeforeFamilyProcessOptions} in \Package{Mettwurst} einschleusen.% +\end{Example} +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyExecuteOptions}\OParameter{Mitglied}\Parameter{Familie}% + \Parameter{Optionenliste} +\end{Declaration} +Diese Anweisung stellt eine Erweiterung von +\Macro{ExecuteOptions} aus dem \LaTeX-Kern dar (siehe +\cite{latex:clsguide}). Dabei verarbeitet die Anweisung nicht nur Optionen, +die mit \Macro{DeclareOption} definiert wurden. Es werden auch alle Schlüssel +eines angegebenen Familienmitglieds abgearbeitet. Wird das optionale Argument +\PName{Mitglied} nicht angegeben, so wird wieder das Mitglied +»\texttt{.}\Macro{@currname}\texttt{.}\Macro{@currext}« verwendet. + +Eine Besonderheit sind Schlüssel, die nicht einem Familienmitglied, sondern +der Familie selbst zugeordnet sind, bei der also das Mitglied leer geblieben +ist. Diese werden ebenfalls gesetzt, und zwar noch bevor der Schlüssel des +Mitglieds gesetzt wird. +\begin{Example} + Angenommen, die Option \Option{Aufschnitt} soll in den zurückliegenden + Beispielen bereits als Voreinstellung gesetzt werden, so müssen die Pakete + nur um den Aufruf +\begin{lstcode} + \FamilyExecuteOptions{Fleischermeister} + {Aufschnitt} +\end{lstcode} + ergänzt werden. +\end{Example} + +Wird\ChangedAt{v3.20}{\Package{scrbase}} \Macro{FamilyExecuteOptions} mit +einer nicht definierten Option in der \PName{Optionenliste} aufgerufen, so +wird normalerweise ein Fehler ausgegeben. Eine Ausnahme von dieser Regel ist, +wenn für das \PName{Mitglied} eine Option namens +\Option{@else@}\important{\Option{@else@}} definiert wurde. In diesem Fall +wird statt der unbekannten Option eben diese Option \Option{@else@} +verwendet. Innerhalb von \KOMAScript{} wird das beispielsweise genutzt, um +die Stil-Option bei der Definition von Gliederungsbefehlen vor allen anderen +auszuwerten. + +Diese Anweisung darf auch innerhalb der Ausführung von Optionen verwendet +werden.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyOptions}\Parameter{Familie}\Parameter{Optionenliste}% +\end{Declaration} +Im Gegensatz zu normalen Optionen, die mit \Macro{DeclareOption} definiert +wurden, können die \PName{Schlüssel} auch noch nach dem Laden der Klasse oder +des Pakets gesetzt werden. Dazu verwendet der Anwender +\Macro{FamilyOptions}. Die \PName{Optionenliste} hat dabei die Form: +%\begin{flushleft}\begin{tabular}{l} + \PName{Schlüssel}\texttt{=}\PName{Wert}\texttt{,}\linebreak[1]% + \PName{Schlüssel}\texttt{=}\PName{Wert} \dots{} +%\end{tabular}\vskip\dp\strutbox\end{flushleft} +wobei für \PName{Schlüssel}, für die ein Säumniswert definiert ist, die +Wertzuweisung natürlich auch entfallen kann. + +Durch die Anweisung werden die \PName{Schlüssel} aller Mitglieder der +angegebenen \PName{Familie} gesetzt. Existiert ein \PName{Schlüssel} auch als +Eigenschaft der Familie selbst, so wird dieser Familien-Schlüssel zuerst +gesetzt. Danach folgen die Mitglieder-Schlüssel in der Reihenfolge, in der die +Mitglieder definiert wurden. Existiert ein angegebener \PName{Schlüssel} weder +für die Familie noch für ein Mitglied der Familie, so wird von +\Macro{FamilyOptions} ein Fehler ausgegeben. Dies geschieht ebenfalls, wenn +zwar für einige Mitglieder ein Schlüssel existiert, jedoch jedes dieser +Mitglieder über \DescRef{\LabelBase.cmd.FamilyKeyState} einen Fehler +zurückmeldet. +\begin{Example} + Sie ergänzen das Fleischermeister-Projekt um ein weiteres Paket + \Package{Wurstsalat}. Wird dieses Paket verwendet, so sollen alle + Wurstpakete zunächst einmal Aufschnitt produzieren: +\begin{lstcode} + \ProvidesPackage{Wurstsalat}% + [2008/05/06 nonsense package] + \RequirePackage{scrbase} + \DefineFamily{Fleischermeister} + \DefineFamilyMember{Fleischermeister} + \FamilyProcessOptions{Fleischermeister}\relax + \FamilyOptions{Fleischermeister}{Aufschnitt} +\end{lstcode} + Sollte noch kein Wurstpaket geladen sein, so würde nun eine Fehlermeldung + wegen der nicht definierten Option »\Option{Aufschnitt}« ausgegeben. Das + kann vermieden werden, indem vor der letzten Zeile für das Paket selbst + ebenfalls ein entsprechender Schlüssel definiert wird: +\begin{lstcode} + \DefineFamilyKey{Fleischermeister}% + {Aufschnitt}[true]{}% +\end{lstcode} + Allerdings produzieren so Wurstpakete, die nach Paket + \Package{Wurstsalat} geladen werden, keinen Aufschnitt. Dies kann man + ebenfalls ändern: +\begin{lstcode} + \AtBeginDocument{% + \DefineFamilyKey[.Wurstsalat.sty]% + {Fleischermeister}% + {Aufschnitt}[true]{}% + } + \DefineFamilyKey{Fleischermeister}% + {Aufschnitt}[true]{% + \AtBeginDocument{% + \FamilyOptions{Fleischermeister}% + {Aufschnitt=#1}% + }% + }% +\end{lstcode} + Somit wird zunächst während \Macro{begin}\PParameter{document} die Option so + definiert, dass sie für das Paket \Package{Wurstsalat} keine Funktion mehr + ausübt. Da nach dem Laden von \Package{Wurstsalat}, innerhalb von + \Macro{begin}\PParameter{document} die beiden Anweisungen \Macro{@currname} + und \Macro{@currext} nicht mehr den Dateinamen des Pakets enthalten, muss + zwingend das optionale Argument von \DescRef{\LabelBase.cmd.DefineFamilyKey} + verwendet werden. + + Bis zu dieser Umdefinierung der Option wird jedoch eine Definition + verwendet, die während \Macro{begin}\PParameter{document} die Option erneut + für die Familie und all ihre Mitglieder ausführt und damit auch für andere + Wurstpakete setzt. Die Verzögerung der Ausführung von \Macro{FamilyOptions} + ist hier entscheidend. Zum einen werden nur so später geladene Wurstpakete + erfasst. Zum anderen wird dadurch sichergestellt, dass die eigene Option + \Option{Aufschnitt} bereits umdefiniert wurde. Dadurch wird eine endlose + Rekursion vermieden.% +\end{Example}% +% +\EndIndexGroup +\vskip-\ht\strutbox% Umbruchkorrektur wegen Beispiel am Ende + + +\begin{Declaration} + \Macro{FamilyOption}\Parameter{Familie}% + \Parameter{Option}\Parameter{Werteliste}% +\end{Declaration} +Neben Optionen, die sich gegenseitig ausschließende Werte besitzen, kann es +auch Optionen geben, die gleichzeitig mehrere Werte annehmen können. Für diese +wäre es bei Verwendung von \DescRef{\LabelBase.cmd.FamilyOptions} notwendig, +der Option mehrfach einen Wert zuzuweisen und dabei die Option selbst mehrfach +anzugeben. Stattdessen kann man einfach mit \Macro{FamilyOption} einer +einzigen \PName{Option} eine ganze \PName{Werteliste} zuweisen. Die +\PName{Werteliste} ist dabei eine durch Komma separierte Liste von Werten: +%\begin{flushleft}\begin{tabular}{l} + \PName{Wert}\texttt{,}\PName{Wert} \dots{} +%\end{tabular}\end{flushleft} +In diesem Zusammenhang sei darauf hingewiesen, dass die Verwendung eines +Kommas in einem Wert möglich ist, wenn man den Wert in geschweifte Klammern +setzt. Die weitere Funktionsweise ist der vorhergehenden Erklärung zu +\DescRef{\LabelBase.cmd.FamilyOptions} zu entnehmen. +\begin{Example} + Das Paket \Package{Wurstsalat} soll eine Option bekommen, über die man + weitere Zutaten bestimmen kann. Für jede Zutat wird dabei wieder ein + Schalter gesetzt. +\begin{lstcode} + \newif\if@salatmit@Zwiebeln + \newif\if@salatmit@Gurken + \newif\if@salatmit@Peperoni + \DefineFamilyKey{Fleischermeister}{SalatZusatz}{% + \csname @salatmit@#1true\endcsname + } +\end{lstcode} + Es wurden hier die drei Zutaten »Zwiebeln«, »Gurken« und »Peperoni« + definiert. Eine Fehlerbehandlung für den Fall, dass der Anwender unbekannte + Zutaten fordert, existiert nicht. + + Für einen Salat mit Zwiebeln und Gurken kann der Anwender +\begin{lstcode} + \FamilyOptions{Fleischermeister}{% + SalatZusatz=Zwiebeln,SalatZusatz=Gurken} +\end{lstcode} + oder einfach +\begin{lstcode} + \FamilyOption{Fleischermeister}% + {SalatZusatz}{Zwiebeln,Gurken} +\end{lstcode} + verwenden. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AtEndOfFamilyOptions}\Parameter{Aktion}% + \Macro{AtEndOfFamilyOptions*}\Parameter{Aktion}% +\end{Declaration} +Manchmal\ChangedAt{v3.12}{\Package{scrbase}} ist es vorteilhafter, wenn nicht +jede Wertzuweisung an eine Option unmittelbar eine \PName{Aktion} auslöst, +sondern dies erst geschieht, wenn alle Wertzuweisungen innerhalb eines Aufrufs +von +\DescRef{\LabelBase.cmd.FamilyProcessOptions}\IndexCmd{FamilyProcessOptions} +oder +\DescRef{\LabelBase.cmd.FamilyExecuteOptions}\IndexCmd{FamilyExecuteOptions} +beziehungsweise \DescRef{\LabelBase.cmd.FamilyOptions}\IndexCmd{FamilyOptions} +oder \DescRef{\LabelBase.cmd.FamilyOption}\IndexCmd{FamilyOptions} +abgeschlossen sind. Genau das ist mit Hilfe von \Macro{AtEndOfFamilyOptions} +und dessen Sternvariante\ChangedAt{v3.23}{\Package{scrbase}} möglich. Die +Rückmeldung von Fehlerzuständen ist über diese Anweisung jedoch ebenso wenig +möglich wie die Verwendung dieser Anweisung außerhalb der Ausführung von +Optionen. + +Die beiden Variante unterscheiden sich im Falle von verschachtelt definierten +Optionen, wenn also die Ausführung einer Option den Aufruf einer oder mehrerer +anderen Option bedingt. In diesem Fall werden alle per +\Macro{AtEndOfFamilyOptions} festgelegten Aktionen ausgeführt, sobald der +innerste Optionenaufruf endet. Dagegen werden die per +\Macro{AtEndOfFamilyOptions*} festgelegten Aktionen erst mit dem Ende des +äußersten Optionenaufrufs ausgeführt. Die Reihenfolge\textnote{Achtung!} der +Aktionen ist dabei jedoch ausdrücklich unbestimmt! Weder ist sichergestellt, +dass zuerst angeforderte Aktionen auch zuerst ausgeführt werden, noch die +umgekehrte Reihenfolge.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyBoolKey}\OParameter{Mitglied}\Parameter{Familie} + \Parameter{Schlüssel}\Parameter{Schaltername} + \Macro{FamilySetBool}\Parameter{Familie} + \Parameter{Schlüssel}\Parameter{Schaltername} + \Parameter{Wert} +\end{Declaration} +In den vorherigen Beispielen wurden schon mehrfach Schalter gesetzt. Im +Beispiel der Option \Option{Aufschnitt} war es dabei notwendig, dass der +Anwender als Wert \PValue{true} oder \PValue{false} angibt. Es existierte +keine Fehlerbehandlung, falls der Anwender einen falschen Wert verwendet. Da +solche booleschen Schalter ein häufiger Anwendungsfall sind, kann man sie bei +\Package{scrbase} einfach mit \Macro{FamilyBoolKey} definieren. Dabei sind die +Argumente \PName{Mitglied}, \PName{Familie} und \PName{Schlüssel} die gleichen +wie bei \DescRef{\LabelBase.cmd.DefineFamilyKey} (siehe +\DescPageRef{scrbase.cmd.DefineFamilyKey}). Das Argument \PName{Schaltername} +ist der Name eines Schalter ohne den Präfix \Macro{if}. Existiert dieser +Schalter noch nicht, so wird er automatisch definiert und mit \PName{false} +voreingestellt. Intern verwendet \Macro{FamilyBoolKey} dann +\Macro{FamilySetBool} als \PName{Aktion} für +\DescRef{\LabelBase.cmd.DefineFamilyKey}. Der Säumniswert für eine solche +Option ist immer \PValue{true}. + +\Macro{FamilySetBool} wiederum versteht als \PName{Wert} neben \PValue{true} +auch die Werte \PValue{on} und \PValue{yes} zum Einschalten und neben +\PValue{false} auch die Werte \PValue{off} und \PValue{no} zum +Ausschalten. Wird ein unbekannter Wert übergeben, so wird die Anweisung +\DescRef{\LabelBase.cmd.FamilyUnknownKeyValue} mit den Argumenten +\PName{Familie}, \PName{Schlüssel} und \PName{Wert} aufgerufen und so +\DescRef{\LabelBase.cmd.FamilyKeyState} entsprechend gesetzt. Dadurch wird +dann gegebenenfalls eine Meldung über eine unbekannte Wertzuweisung ausgegeben +(siehe auch \DescPageRef{\LabelBase.cmd.FamilyUnknownKeyValue} und +\DescPageRef{\LabelBase.cmd.FamilyKeyState}). +\begin{Example} + Der Schlüssel \Option{Aufschnitt} soll in den Wurstpaketen etwas robuster + definiert werden. Außerdem sollen alle Wurstpakete denselben Schalter + verwenden, so dass entweder alle Wurstpakete Aufschnitt produzieren oder + keines. +\begin{lstcode} + \FamilyBoolKey{Fleischermeister}{Aufschnitt}% + {@Aufschnitt} +\end{lstcode} + Ein Test, ob Aufschnitt produziert wird, sähe dann so aus: +\begin{lstcode} + \if@Aufschnitt + ... + \else + ... + \fi +\end{lstcode} + Dies wäre in allen drei Wurstpaketen identisch. Damit könnte man + prinzipiell die Eigenschaft »Aufschnitt« auch als Eigenschaft der Familie + definieren: +\begin{lstcode}[moretexcs={define@key}] + \@ifundefined{if@Aufschnitt}{% + \expandafter\newif + \csname if@Aufschnitt\endcsname + }{}% + \DefineFamilyKey[]{Fleischermeister}% + {Aufschnitt}[true]{% + \FamilySetBool{Fleischermeister}% + {Aufschnitt}% + {@Aufschnitt}% + {#1}% + } +\end{lstcode} + oder einfacher +\begin{lstcode} + \FamilyBoolKey[]{Fleischermeister}% + {Aufschnitt}% + {@Aufschnitt} +\end{lstcode} + unter Ausnutzung des Hinweises bezüglich leerer Mitglieder + \iftrue% Umbruchkorrekturtext + im Gegensatz zum Weglassen des optionalen Arguments + \fi% + auf \autopageref{explain:scrbase.macro.DefineFamilyKey}, der nicht nur für + \DescRef{\LabelBase.cmd.DefineFamilyKey}, sondern entsprechend auch für + \Macro{FamilyBoolKey} gilt. + + Da \DescRef{\LabelBase.cmd.FamilyKeyState} bereits von \Macro{FamilySetBool} + gesetzt wird, kann innerhalb der Definition der Option mit Hilfe von + \DescRef{\LabelBase.cmd.DefineFamilyKey} der Status gegebenenfalls auch + abgefragt werden. So könnte man im ersten Fall beispielsweise nach + \Macro{FamilySetBool} einen Test der Art: +\begin{lstcode} + \ifx\FamilyKeyState\FamilyKeyStateProcessed + ... + \else + ... + \fi +\end{lstcode} + ergänzen, um zusätzliche Aktionen in Abhängigkeit davon, ob + \Macro{FamilySetBool} erfolgreich war oder nicht, + auszuführen. Es\textnote{Achtung!} ist zu beachten, dass an dieser Stelle + unbedingt ein Test mit Hilfe von \Macro{ifx} vorzunehmen ist. Expandierende + Tests wie \Macro{ifstr} sind hier zu vermeiden. Sie können abhängig vom + aktuellen Status und dem Vergleichszustand zu unterschiedlichen + Fehlermeldungen und auch zu falschen Ergebnissen führen.% +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyNumericalKey}\OParameter{Mitglied}\Parameter{Familie} + \Parameter{Schlüssel} + \OParameter{Säumniswert}\Parameter{Makroname}% + \Parameter{Werteliste} + \Macro{FamilySetNumerical}\Parameter{Familie}\Parameter{Schlüssel} + \Parameter{Makroname}\Parameter{Werteliste}% + \Parameter{Wert} +\end{Declaration} +Während Schalter nur zwei Werte annehmen können, gibt es auch Schlüssel, die +mehrere Werte kennen. So kann beispielsweise eine Ausrichtung nicht nur +entweder links oder nicht links, sondern auch links, mittig oder rechts +sein. Intern unterscheidet man solche Einstellungen dann gerne mit Hilfe von +\Macro{ifcase}\IndexCmd{ifcase}. Diese \TeX-Anweisung erwartet wiederum einen +nummerischen Wert. Daher heißt bei \Package{scrbase} die Anweisung, mit der +man via \PName{Schlüssel} einem Makro eine Definition zuweisen kann, +entsprechend \Macro{FamilyNumericalKey}. + +Die \PName{Werteliste} hat dabei die Form: +%\begin{flushleft}\vskip\dp\strutbox\begin{tabular}{l} + \Parameter{Wert}\Parameter{Definition}\texttt{,}\linebreak[1]% + \Parameter{Wert}\Parameter{Definition}~\dots{} +%\end{tabular}\vskip\dp\strutbox\end{flushleft} +Über diese \PName{Werteliste} werden so nicht nur die erlaubten Werte für den +\PName{Schlüssel} angegeben. Für jeden erlaubten \PName{Wert} wird auch +gleich angegeben, wie bei Verwendung desselben das Makro +\Macro{\PName{Makroname}} definiert werden soll. Üblicherweise werden als +\PName{Definition} schlicht Zahlenwerte angegeben. Es sind zwar auch andere +Angaben möglich, derzeit gibt es aber die Einschränkung, dass +\PName{Definition} voll expandierbar sein muss und bei der Zuweisung auch +expandiert wird. +\begin{Example} + Die Wurst für den Wurstsalat kann unterschiedlich geschnitten werden. So + wäre es denkbar, dass der Aufschnitt einfach ungeschnitten bleibt oder in + grobe oder feine Streifen geschnitten werden soll. Diese Information soll in + der Anweisung \Macro{Schnitt} gespeichert werden. +\begin{lstcode} + \FamilyNumericalKey{Fleischermeister}% + {SalatSchnitt}{Schnitt}{% + {Kein}{Kein},{Nein}{Kein},% + {Grob}{Grob},% + {Fein}{Fein}% + } +\end{lstcode} + Dass nicht geschnitten werden soll, kann in diesem Fall vom Anwender sowohl + mit +\begin{lstcode} + \FamilyOptions{Fleischermeister}{SalatSchnitt=Kein} +\end{lstcode} + als auch mit +\begin{lstcode} + \FamilyOptions{Fleischermeister}{SalatSchnitt=Nein} +\end{lstcode} + angegeben werden. In beiden Fällen würde \Macro{Schnitt} mit dem Inhalt + \PValue{Kein} definiert. Es kann durchaus sinnvoll sein, dem Anwender wie in + diesem Beispiel mehrere Werte für denselben Zweck anzubieten. + + Nun ist es sehr wahrscheinlich, dass die Schnittart nicht ausgegeben, + sondern später ausgewertet werden soll. In diesem Fall sind die textuellen + Definitionen aber eher unpraktisch. Definiert man den Schlüssel hingegen als +\begin{lstcode} + \FamilyNumericalKey{Fleischermeister}% + {SalatSchnitt}{Schnitt}{% + {Kein}{0},{Nein}{0},% + {Grob}{1},% + {Fein}{2}% + } +\end{lstcode} + so kann später einfach in der Form +\begin{lstcode} + \ifcase\Schnitt + % ungeschnitten + \or + % grob geschnitten + \else + % fein geschnitten + \fi +\end{lstcode} + unterschieden werden. +\end{Example} + +Intern wird von \Macro{FamilyNumericalKey} dann +\DescRef{\LabelBase.cmd.DefineFamilyKey} mit der Anweisung +\Macro{FamilySetNumerical} verwendet. Wird an einen solchen Schlüssel ein +unbekannter Wert übergeben, so wird von \Macro{FamilySetNumerical} Anweisung +\DescRef{\LabelBase.cmd.FamilyUnknownKeyValue} mit den Argumenten +\PName{Familie}, \PName{Schlüssel} und \PName{Wert} aufgerufen. Dies führt zu +einer Fehlersignalisierung in \DescRef{\LabelBase.cmd.FamilyKeyState} mit +Hilfe des Status \DescRef{\LabelBase.cmd.FamilyKeyStateUnknownValue} und +beispielsweise bei der Verwendung als lokale Option zu einer +Fehlermeldung. Ebenso wird beim Aufruf von \Macro{FamilySetNumerical} auch der +Erfolg via \DescRef{\LabelBase.cmd.FamilyKeyStateProcessed} in +\DescRef{\LabelBase.cmd.FamilyKeyState} signalisiert.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyCounterKey}\OParameter{Mitglied}\Parameter{Familie} + \Parameter{Schlüssel} + \OParameter{Säumniswert}\Parameter{\LaTeX-Zähler} + \Macro{FamilySetCounter}\Parameter{Familie} + \Parameter{Schlüssel}\Parameter{\LaTeX-Zähler} + \Parameter{Wert} +\end{Declaration} +Während\ChangedAt{v3.12}{\Package{scrbase}} bei +\DescRef{\LabelBase.cmd.FamilyNumericalKey} ein Makro aufgrund eines +symbolischen Wertes auf einen korrespondierenden nummerischen Wert +gesetzt wurde, gibt es natürlich auch Fälle, in denen ein \PName{Schlüssel} +direkt einen \PName{\LaTeX-Zähler} repräsentiert, dem unmittelbar ein +nummerischer \PName{Wert} zugewiesen werden soll. Dazu dient die Anweisung +\Macro{FamilyCounterKey}, von der intern dann \Macro{FamilySetCounter} +aufgerufen wird. Dabei finden einige grundlegende Prüfungen des +\PName{Wert}-Arguments statt um festzustellen, ob dieses Argument für eine +Zuweisung an einen Zähler in Frage kommt. Die Zuweisung findet nur statt, wenn +diese Prüfungen gelingen. Allerdings können hier nicht alle Fehler erkannt +werden, so dass eine falsche Zuweisung auch zu einer Fehlermeldung von \TeX{} +selbst führen kann. Erkannte Fehler werden hingegen über +\DescRef{\LabelBase.cmd.FamilyKeyStateUnknownValue} signalisiert. + +Wurde\ChangedAt{v3.15}{\Package{scrbase}} kein Wert übergeben, so wird +stattdessen der \PName{Säumniswert} eingesetzt. Falls kein \PName{Säumniswert} +angegeben wird, kann später der \PName{Schlüssel} nur mit Wertübergabe +verwendet werden.% +\iffalse% Umbruchkorrekturtext +\ Anderenfalls wir mit +\DescRef{\LabelBase.cmd.FamilyKeyStateNeedValue} ein entsprechender Fehler +signalisiert und beispielsweise innerhalb \Macro{FamilyOptions} auch als +solcher gemeldet.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyCounterMacroKey}\OParameter{Mitglied}\Parameter{Familie} + \Parameter{Schlüssel} + \OParameter{Säumniswert}\Parameter{Makro} + \Macro{FamilySetCounterMacro}\Parameter{Familie} + \Parameter{Schlüssel}\Parameter{Makro} + \Parameter{Wert} +\end{Declaration} +Diese\ChangedAt{v3.12}{\Package{scrbase}} beiden Anweisungen unterscheiden +sich von den zuvor erklärten \DescRef{\LabelBase.cmd.FamilyCounterKey} und +\DescRef{\LabelBase.cmd.FamilySetCounter} nur dadurch, dass nicht ein +\LaTeX-Zähler auf einen Wert gesetzt wird, sondern ein \PName{Makro} mit +diesem Wert definiert wird. Auch dabei wird \PName{Wert} lokal einem Zähler +zugewiesen und dann dessen expandierter Wert verwendet. Es gilt daher der Wert +zum Zeitpunkt des Aufrufs der Option.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyLengthKey}\OParameter{Mitglied}\Parameter{Familie} + \Parameter{Schlüssel} + \OParameter{Säumniswert}\Parameter{Länge} + \Macro{FamilySetLength}\Parameter{Familie} + \Parameter{Schlüssel}\Parameter{Länge} + \Parameter{Wert} + \Macro{FamilyLengthMacroKey}\OParameter{Mitglied}\Parameter{Familie} + \Parameter{Schlüssel} + \OParameter{Säumniswert}\Parameter{Makro} + \Macro{FamilySetLengthMacro}\Parameter{Familie} + \Parameter{Schlüssel}\Parameter{Makro} + \Parameter{Wert} + \Macro{FamilyUseLengthMacroKey}\OParameter{Mitglied}\Parameter{Familie} + \Parameter{Schlüssel} + \OParameter{Säumniswert}\Parameter{Makro} + \Macro{FamilySetUseLengthMacro}\Parameter{Familie} + \Parameter{Schlüssel}\Parameter{Makro} + \Parameter{Wert} +\end{Declaration} +Über\ChangedAt{v3.12}{\Package{scrbase}} \Macro{FamilyLengthKey} kann ein +\PName{Schlüssel} definiert werden, der eine \PName{Länge} +repräsentiert. Dabei spielt es keine Rolle, ob eine \LaTeX-Länge, ein +\TeX-Abstand oder eine \TeX-Ausdehnung als \PName{Länge} verwendet +wird. Intern wird die \PName{Länge} über \Macro{FamilySetLength} gesetzt. +Dabei finden einige grundlegende Prüfungen des \PName{Wert}-Arguments statt um +festzustellen, ob dieses Argument für eine Zuweisung an eine \PName{Länge} in +Frage kommt. Die Zuweisung findet nur statt, wenn diese Prüfungen +gelingen. Allerdings können hier nicht alle Fehler erkannt werden, so dass +eine falsche Zuweisung auch zu einer Fehlermeldung von \TeX{} selbst führen +kann. Erkannte Fehler werden hingegen über +\DescRef{\LabelBase.cmd.FamilyKeyStateUnknownValue} signalisiert. + +Wurde\ChangedAt{v3.15}{\Package{scrbase}} kein Wert übergeben, so wird +stattdessen der \PName{Säumniswert} eingesetzt. Falls kein \PName{Säumniswert} +angegeben wird, kann später der \PName{Schlüssel} nur mit Wertübergabe +verwendet werden. + +Bei Verwendung der Anweisungen \Macro{FamilyLengthMacroKey} und +\Macro{FamilyUseLengthMacroKey} beziehungsweise \Macro{FamilySetLengthMacro} +und \Macro{FamilySetUseLengthMacro} findet die Speicherung des Wertes nicht in +einer \PName{Länge}, sondern in einem \PName{Makro} statt. Dabei wird bei +\Macro{FamilyLengthMacroKey} und \Macro{FamilySetLengthMacro} vergleichbar zu +\Macro{setlength} der aktuelle \PName{Wert} zum Zeitpunkt des Aufrufs der +beiden Anweisungen in \PName{Makro} gespeichert. Dagegen wird bei +\Macro{FamilyUseLengthMacroKey}\ChangedAt{v3.20}{\Package{scrbase}} und +\Macro{FamilySetUseLengthMacro} \PName{Wert} selbst gespeichert. Damit wird +\PName{Wert} dann bei jeder Verwendung von \PName{Makro} neu ausgewertet.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyStringKey}\OParameter{Mitglied}\Parameter{Familie} + \Parameter{Schlüssel} + \OParameter{Säumniswert}\Parameter{Makro} + \Macro{FamilyCSKey}\OParameter{Mitglied}\Parameter{Familie} + \Parameter{Schlüssel} + \OParameter{Säumniswert}\Parameter{Makronamen} +\end{Declaration} +Hier wird nun\ChangedAt{v3.08}{\Package{scrbase}} ein Schlüssel definiert, der +jeden beliebigen Wert annehmen kann. Der Wert wird in dem angegebenen +\PName{Makro} gespeichert. Wird das optionale Argument für den +\PName{Säumniswert} weggelassen, so entspricht \Macro{FamilyStringKey}: +\begin{lstcode}[escapeinside=»«] + \DefineFamilyKey[»\PName{Mitglied}«]{»\PName{Familie}«}{»\PName{Schlüssel}«} + {\def»\PName{Makro}«{#1}} +\end{lstcode} +Existiert +das optionale Argument für den \PName{Säumniswert} so entspricht die Anweisung: +\begin{lstcode}[escapeinside=»«] + \DefineFamilyKey[»\PName{Mitglied}«]{»\PName{Familie}«}{»\PName{Schlüssel}«} + [»\PName{Säumniswert}«] + {\def»\PName{Makro}«{#1}\FamilyKeyStateProcessed} +\end{lstcode} + +\begin{Example} + In der Voreinstellung sollen 250\,g Wurstsalat erzeugt werden. Die Menge + soll jedoch einfach per Option geändert werden können. Dazu wird die zu + erstellende Menge im Makro \Macro{Salatgewicht} gespeichert. Die Option, + über die das Gewicht geändert werden kann, soll ebenfalls + \PValue{Salatgewicht} heißen: +\begin{lstcode} + \newcommand*{\Salatgewicht}{250g} + \FamilyStringKey{Fleischermeister}% + {Salatgewicht}[250g]% + {\Salatgewicht} +\end{lstcode} + Soll nach einer Änderung + \iffalse% Umbruchkorrekturtext + wie +\begin{lstcode} + \FamilyOptions{Fleichermeister}{Salatgewicht=100g} +\end{lstcode} + \fi% + wieder die Standardmenge hergestellt + werden, so kann der Anwender die Option einfach ohne Gewichtsangabe + aufrufen: +\begin{lstcode} + \FamilyOptions{Fleischermeister}{Salatgewicht} +\end{lstcode} + Das ist möglich, weil die Standardmenge bei der Definition auch als + Säumniswert angegeben wurde. +\end{Example} +In diesem Fall existieren keine unbekannten Werte, da alle Werte schlicht für +eine Makrodefinition verwendet werden. Es ist jedoch zu beachten, dass in der +Wertzuweisung an den Schlüssel keine Absätze enthalten sein dürfen. + +Im\ChangedAt{v3.25}{\Package{scrbase}} Unterschied zu \Macro{FamilyStringKey} +erwartet \Macro{FamilyCSKey} kein Makro als letztes Argument, sondern +lediglich den Namen eines Makros, also beispielsweise nicht +\PParameter{\Macro{Salatgewicht}}, sondern \PParameter{Salatgewicht}.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyUnknownKeyValue}\Parameter{Familie}\Parameter{Schlüssel} + \Parameter{Wert}\Parameter{Werteliste} +\end{Declaration} +Diese Anweisung signalisiert über \DescRef{\LabelBase.cmd.FamilyKeyState} +einen Fehler aufgrund eines unbekannten oder unerlaubten Wertes. Dabei wird +als \PName{Werteliste} eine durch Komma separierte Liste von erlaubten Werten +der Form: +%\begin{flushleft}\vskip\dp\strutbox\begin{tabular}{l} + `\PName{Wert}'\texttt{,} `\PName{Wert}' \dots{} +%\end{tabular}\vskip\dp\strutbox\end{flushleft} +erwartet. Allerdings\ChangedAt{v3.12}{\Package{scrbase}} wird die +\PName{Werteliste} derzeit nicht ausgewertet. + +\begin{Example} + Für den Aufschnitt soll nun zusätzlich wählbar sein, ob er grob oder + fein geschnitten werden soll. Dabei ist grob die Voreinstellung, die auch + dann verwendet werden soll, wenn nicht angegeben wird, wie der Aufschnitt zu + schneiden ist. +\begin{lstcode} + \@ifundefined{if@Feinschnitt}{% + \expandafter + \newif\csname if@Feinschnitt\endcsname}{}% + \@ifundefined{if@Aufschnitt}{% + \expandafter + \newif\csname if@Aufschnitt\endcsname}{} + \DefineFamilyKey{Fleischermeister}% + {Aufschnitt}[true]{% + \FamilySetBool{Fleischermeister}{Aufschnitt}% + {@Aufschnitt}% + {#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \@Feinschnittfalse + \else + \ifstr{#1}{fein}{% + \@Aufschnitttrue + \@Feinschnittrue + \FamilyKeyStateProcessed + }{% + \FamilyUnknownKeyValue{Fleichermeister}% + {Aufschnitt}% + {#1}{% + `true', `on', `yes', + `false`, `off`, `no', + `fein'% + }% + }% + \fi + }% +\end{lstcode} + Zunächst wird versucht, den booleschen Schalter für Aufschnitt über + \DescRef{\LabelBase.cmd.FamilySetBool} zu setzen. Gelingt dies, wurde also + \DescRef{\LabelBase.cmd.FamilyKeyState} zu + \DescRef{\LabelBase.cmd.FamilyKeyStateProcessed} definiert, wird + der Feinschnitt abgeschaltet. Anderenfalls wird überprüft, ob anstelle + eines gültigen Wertes für einen booleschen Schalter %der Wert + \PValue{fein} übergeben wurde. In diesem Fall wird sowohl der Feinschnitt, + als auch Aufschnitt aktiviert und mit Hilfe von + \DescRef{\LabelBase.cmd.FamilyKeyStateProcessed} der Erfolgs-Status + gesetzt. Ist auch das nicht der Fall, wird der von + \DescRef{\LabelBase.cmd.FamilySetBool} signalisierte Fehler-Zustand + neu auf \DescRef{\LabelBase.cmd.FamilyKeyStateUnknownValue} gesetzt. Die + Liste der üblichen erlaubten Werte von + \DescRef{\LabelBase.cmd.FamilySetBool} wird dabei um \PValue{fein} + ergänzt. Da diese Liste jedoch inzwischen nicht mehr verwendet wird, hätte + man auf den Aufruf von \Macro{FamilyUnknownKeyValue} im Beispiel auch + einfach verzichten und damit den Fehlerstatus von + \DescRef{\LabelBase.cmd.FamilySetBool} übernehmen können. + + Die bei den Tests verwendete Anweisung \Macro{ifstr}\IndexCmd{ifstr} ist auf + \DescPageRef{scrbase.cmd.ifstr} in \autoref{sec:scrbase.if} erklärt. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{FamilyElseValues} +\end{Declaration} +In\ChangedAt{v3.12}{\Package{scrbase}} früheren\textnote{Veraltet!} Versionen +von \Package{scrbase} konnte man über die Anweisung \Macro{FamilyElseValues} +weitere erlaubte Werte für die Bearbeitung durch +\DescRef{\LabelBase.cmd.FamilyUnknownKeyValue} +\iffalse% Umbruchkorrekturtext +in der Form +\begin{flushleft}\vskip\dp\strutbox\begin{tabular}{l} + \texttt{,} `\PName{Wert}'\texttt{,} `\PName{Wert}' \dots +\end{tabular}\vskip\dp\strutbox\end{flushleft} +\fi% +ablegen, die dann ebenfalls in einer Fehlermeldung mit ausgegeben wurden. Seit +Version~3.12 gibt \DescRef{\LabelBase.cmd.FamilyUnknownKeyValue} keine +Fehlermeldungen mehr aus, sondern setzt nur noch +\DescRef{\LabelBase.cmd.FamilyKeyState} entsprechend. Damit ist die Verwendung +von \Macro{FamilyElseValue} ebenfalls überholt. Ihre Verwendung wird jedoch +erkannt und führt dann zu einer Aufforderung, den Code entsprechend +anzupassen.% +\EndIndexGroup + + +\section{Verzweigungen} +\seclabel{if} + +Das Paket \Package{scrbase} stellt eine ganze Reihe von +Verzweigungsanweisungen zur Verfügung. Dabei wird nicht auf die \TeX-Syntax +von Verzweigungen wie beispielsweise +\begin{lstcode} + \iftrue + ... + \else + ... + \fi +\end{lstcode} +gebaut, sondern es wird die \LaTeX-Syntax mit Argumenten eingesetzt, wie man +sie auch von \LaTeX-Anweisungen wie \Macro{IfFileExists}, +\Macro{@ifundefined}, \Macro{@ifpackageloaded} und vielen weiteren +kennt. Einige Paketautoren ziehen es allerdings vor, die \TeX-Syntax auch für +Anwender in die \LaTeX-Ebene zu bringen. Da es sich bei den Verzweigungen von +\Package{scrbase} um recht grundlegende Möglichkeiten handelt, ist die +Wahrscheinlichkeit gegeben, dass dabei gleichnamige Anwenderanweisungen +verwendet würden. Dies könnte selbst bei eigentlich gleicher Semantik +zu einem Problem aufgrund unterschiedlichen Syntax +führen. \Package{scrbase} geht daher auf Nummer sicher. + +\begin{Declaration} + \OptionVName{internalonly}{Wert} +\end{Declaration} +Von \Package{scrbase} werden einige Verzweigungsanweisungen +bereitgestellt. Dabei verwendet es primär die Bezeichnungen +\Macro{scr@\PName{Name}}\textnote{Paketautoren}. Es handelt sich somit +um interne Anweisungen. Diese werden auch intern von \KOMAScript{} +verwendet. Paket- und Klassenautoren können diese Anweisungen ebenfalls +verwenden, sollten sie aber nicht umdefinieren. Da einige dieser Anweisungen +auch für Benutzer nützlich sein können, werden die gleichen Anweisungen +normalerweise auch als \Macro{\PName{Name}}\textnote{Anwender} +bereitgestellt. Da eventuell andere Pakete gleichnamige Anweisungen mit +anderer Syntax bereitstellen könnten und es so zu Konflikten kommen könnte, +kann der Anwender die Definition von \Macro{\PName{Name}} verhindern. Dazu +gibt er entweder die Option ohne Wertangabe an. In diesem Fall werden nur die +internen Verzweigungsanweisungen definiert. Oder er gibt genau die +Anweisungen, die nicht definiert werden sollen, als Wert an, wobei er +»\Macro{}« durch »\texttt{/}« ersetzt. + +Paket- und Klassenautoren sollten diese Option normalerweise nicht verwenden. +Anwender können sie mit oder ohne Wertangabe entweder als globale Option bei +\DescRef{maincls.cmd.documentclass} oder per +\Macro{PassOptionsToPackage}\IndexCmd{PassOptionsToPackage} angeben. +\begin{Example} + Der Anwender will nicht, dass die Anweisungen + \DescRef{\LabelBase.cmd.ifVTeX} und + \DescRef{\LabelBase.cmd.ifundefinedorrelax} von \Package{scrbase} definiert + werden. Also verwendet er beim Laden der Klasse: +\begin{lstcode} + \documentclass[% + internalonly=/ifVTeX/ifundefinedorrelax% + ]{foo} +\end{lstcode} + Der Klassenname \Class{foo} wird hier als Platzhalter für irgendeine Klasse + verwendet. Die Anweisungen \DescRef{\LabelBase.cmd.ifVTeX} + und \DescRef{\LabelBase.cmd.ifundefinedorrelax} werden im weiteren Verlauf + dieses Abschnittes erklärt.% +\end{Example} + +Paket- und Klassenautoren sollten wie \KOMAScript{} selbst auch die internen +Namen verwenden. Zur Vollständigkeit sind in den nachfolgenden Erklärungen +aber auch die Anwenderanweisungen angegeben.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scr@ifundefinedorrelax} + \Parameter{Name}\Parameter{Dann-Teil}\Parameter{Sonst-Teil} + \Macro{ifundefinedorrelax} + \Parameter{Name}\Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Diese Anweisung funktioniert prinzipiell wie \Macro{@ifundefined} aus dem +\LaTeX-Kern (siehe \cite{latex:source2e}). Es wird also der \PName{Dann-Teil} +ausgeführt, wenn \PName{Name} der Name einer undefinierten Anweisung oder +\Macro{\PName{Name}} derzeit \Macro{relax} ist. Im Unterschied zu +\Macro{@ifundefined} wird % +\iftrue% Umbruchvarianten +weder Hash-Speicher belegt noch \Macro{\PName{Name}} % +\else% +\Macro{\PName{Name}} nicht % +\fi% +zu \Macro{relax}, wenn \Macro{\PName{Name}} zuvor undefiniert war.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifnotundefined}\Parameter{Name}% + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Ist die Anweisung mit dem angegebenen Namen bereits definiert wird der +\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Da es bei +\eTeX{} bereits ein Primitiv \Macro{ifdefined} gibt, musste leider diese +etwas unhandliche Bezeichnung gewählt werden. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scr@ifluatex} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wird\ChangedAt{v3.21}{\Package{scrbase}} mit lua\TeX{} gearbeitet, wird der +\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. +\iftrue% Umbruchkorrekturtext +Diese Unterscheidung ist nur sehr selten wirklich von Nutzen. % +\fi% +In der Regel sollte man besser auf die gewünschte Anweisung +testen. Von\textnote{Achtung!} dieser Anweisung gibt es kein +Benutzeräquivalent. Verwenden Sie stattdessen bei Bedarf das Paket +\Package{ifluatex}\important{\Package{ifluatex}} (siehe +\cite{package:ifluatex}).% +\EndIndexGroup + + +\iffalse% Es ergibt keinen Sinn, diese Anweisung noch zu dokumentieren +\begin{Declaration} + \Macro{scr@ifpdforluatex} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Bis lua\TeX~0.85 war es meist unerheblich, ob mit pdf\TeX{} oder lua\TeX{} +gearbeitet wurde. Von daher stammt diese Anweisung, die in beiden Fällen den +\PName{Dann-Teil} ausführt. Wird weder mit pdf\TeX{} noch mit lua\TeX{} +gearbeitet, so wird der \PName{Sonst-Teil} ausgeführt. +Seit Version 0.85 wurde bei lua\TeX{} die Kompatibilität bei vielen der +zusätzlichen Befehle jedoch aufgegeben. Daher ist diese Unterscheidung in der +Praxis nicht mehr von Nutzen und wird von \KOMAScript{} selbst auch nicht mehr +verwendet. Von dieser Anweisung gibt es auch kein Benutzeräquivalent.% +\EndIndexGroup +\fi + + +\begin{Declaration} + \Macro{scr@ifpdftex} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} + \Macro{ifpdftex} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wird mit pdf\TeX{} gearbeitet, wird der \PName{Dann-Teil} ausgeführt, +anderenfalls der \PName{Sonst-Teil}. Dabei ist es unerheblich, ob tatsächlich +eine PDF-Datei ausgegeben werden soll oder nicht. +\iftrue% Umbruchkorrekturtext +Diese Unterscheidung ist nur sehr selten wirklich von Nutzen. % +\fi% +In der Regel sollte man besser auf die gewünschte Anweisung testen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scr@ifVTeX} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} + \Macro{ifVTeX} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wird mit V\TeX{} gearbeitet, wird der \PName{Dann-Teil} ausgeführt, +anderenfalls der \PName{Sonst-Teil}. +\iftrue% Umbruchkorrekturtext +Diese Unterscheidung ist nur sehr selten wirklich von Nutzen. % +\fi% +In der Regel sollte man besser auf die gewünschte Anweisung testen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scr@ifpdfoutput} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} + \Macro{ifpdfoutput} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wird eine PDF-Datei erzeugt, wird der \PName{Dann-Teil} ausgeführt, +anderenfalls der \PName{Sonst-Teil}. Dabei ist es unerheblich, ob die +PDF-Datei mit Hilfe von lua\TeX{}, pdf\TeX{}, V\TeX{} oder \XeTeX{} erzeugt +wird.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scr@ifpsoutput} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} + \Macro{ifpsoutput} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wird eine PostScript-Datei erzeugt, wird der \PName{Dann-Teil} ausgeführt, +anderenfalls der \PName{Sonst-Teil}. V\TeX{} kann PostScript direkt erzeugen, +was hier erkannt wird. Wird hingegen kein V\TeX{} verwendet, ist aber ein +Schalter \Macro{if@dvips} definiert, so wird die Entscheidung darüber +getroffen. \KOMAScript{} stellt \Macro{if@dvips} in +\hyperref[cha:typearea]{\Package{typearea}}\IndexPackage{typearea}% +\IndexCmd{if@dvips} bereit.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scr@ifdvioutput} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} + \Macro{ifdvioutput} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wird eine DVI-Datei erzeugt, so wird der \PName{Dann-Teil} ausgeführt, +anderenfalls der \PName{Sonst-Teil}. Es wird immer dann davon ausgegangen, +dass eine DVI-Datei erzeugt wird, wenn keine direkte Ausgabe einer PDF- oder +Postscript-Datei erkannt werden kann.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{if@atdocument}\ \PName{Dann-Teil}\ % + \textMacro{else}\ \PName{Sonst-Teil} \textMacro{fi} +\end{Declaration} +Diese Verzweigung existiert ganz bewusst nur als interne Anweisung. Dabei +entspricht \Macro{if@atdocument} in der Dokumentpräambel \Macro{iffalse}, nach +\Macro{begin}\PParameter{document} entspricht \Macro{if@atdocument} hingegen +\Macro{iftrue}. Klassen und Paketautoren können dieses Anweisung manchmal +sinnvoll nutzen, wenn sich Anweisungen in der Dokumentpräambel anders +verhalten sollen als innerhalb des Dokuments. Es\textnote{Achtung!} ist zu +beachten, dass es sich bei dieser Anweisung um eine Verzweigung in \TeX-Syntax +und nicht in \LaTeX-Syntax handelt! +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifstr}\Parameter{Zeichenfolge}\Parameter{Zeichenfolge}% + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Die beiden Argumente \PName{Zeichenfolge} werden expandiert und dann +verglichen. Sind sie dabei gleich, so wird der \PName{Dann-Teil} ausgeführt, +anderenfalls der \PName{Sonst-Teil}. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifstrstart}\Parameter{Zeichenfolge}\Parameter{Zeichenfolge} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Die\ChangedAt{v3.12}{\Package{scrbase}} beiden Argumente \PName{Zeichenfolge} +werden expandiert und dann verglichen. Beginnt die erste Zeichenfolge, von +Leerzeichen abgesehen, mit der zweiten Zeichenfolge, so wird der +\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisdimen}\Parameter{Code}\Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in +einem \Macro{dimen}, also einem \TeX-Längenregister, resultiert, wird der +\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Die +Anweisung ist nicht voll expandierbar. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisdimension}\Parameter{Code}% + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in +etwas resultiert, das syntaktisch dem Wert einer Länge entspricht, wird der +\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Es ist zu +beachten,\textnote{Achtung!} dass derzeit unbekannte Einheiten zu einer +Fehlermeldung führen. Die Anweisung ist nicht voll expandierbar. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifdimen}\Parameter{Zeichenfolge}% + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Der \PName{Dann-Teil} wird ausgeführt, wenn die einfache Expansion der +\PName{Zeichenfolge} eine gültige Länge mit einer gültigen Längeneinheit +ist. Anderenfalls wird der \PName{Sonst-Teil} verwendet. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisdimexpr}\Parameter{Code} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in +einer \Macro{dimexpr}\IndexCmd{dimexpr}, also einem \eTeX-Längenausdruck +resultiert, wird der \PName{Dann-Teil} ausgeführt, anderenfalls der +\PName{Sonst-Teil}. Es ist zu beachten,\textnote{Achtung!} dass fehlerhafte +Ausdrücke zu Fehlermeldungen führen! Die Anweisung ist nicht voll +expandierbar. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisskip}\Parameter{Code}\Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in +einem \Macro{skip}, also einem \TeX-Abstand, resultiert, wird der +\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Die +Anweisung ist nicht voll expandierbar. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisglue}\Parameter{Code}% + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in +etwas resultiert, das syntaktisch dem Wert eines Abstandes entspricht, wird der +\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Es ist zu +beachten,\textnote{Achtung!} dass derzeit unbekannte Einheiten zu einer +Fehlermeldung führen. Die Anweisung ist nicht voll expandierbar. % +\iffalse% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisglueexpr}\Parameter{Code}% + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in +einer \Macro{glueexpr}\IndexCmd{glueexpr}, also einem +\mbox{\eTeX}-Abstandsausdruck resultiert, wird der \PName{Dann-Teil} +ausgeführt, anderenfalls der \PName{Sonst-Teil}. Es ist zu +beachten,\textnote{Achtung!} dass fehlerhafte Ausdrücke zu Fehlermeldungen +führen! Die Anweisung ist nicht voll expandierbar. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifiscounter}\Parameter{Zähler}% + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wenn\ChangedAt{v3.12}{\Package{scrbase}} \PName{Zähler} ein definierter +\LaTeX-Zähler ist, wird der \PName{Dann-Teil} ausgeführt, anderenfalls der +\PName{Sonst-Teil}. Die Anweisung ist nicht voll expandierbar. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifiscount}\Parameter{Code}\Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in +einem \Macro{count}, also einem \TeX-Zähler, resultiert, wird der +\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Die +Anweisung ist nicht voll expandierbar. Für einen Test auf einen \LaTeX-Zähler +siehe \DescRef{\LabelBase.cmd.ifiscounter}. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisinteger}\Parameter{Code}% + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in +etwas resultiert, das syntaktisch dem Wert eines Zählers entspricht, also eine +negative oder positive ganze Zahl ist, wird der \PName{Dann-Teil} ausgeführt, +anderenfalls der \PName{Sonst-Teil}. Die Anweisung ist nicht voll +expandierbar. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifnumber}\Parameter{Zeichenfolge}% + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Der \PName{Dann-Teil} wird ausgeführt, wenn die einfache Expansion der +\PName{Zeichenfolge} nur aus Ziffern besteht. In allen anderen Fällen wird der +\PName{Sonst-Teil} verwendet. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifisnumexpr}\Parameter{Code}% + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in +einer \Macro{numexpr}\IndexCmd{numexpr}, also einem \eTeX-Zahlenausdruck +resultiert, wird der \PName{Dann-Teil} ausgeführt, anderenfalls der +\PName{Sonst-Teil}. Es ist zu beachten,\textnote{Achtung!} dass fehlerhafte +Ausdrücke zu Fehlermeldungen führen! Die Anweisung ist nicht voll +expandierbar. % +\iftrue% Umbruchvaritanten +Von dieser Anweisung gibt es keine interne Variante.% +\else% +Es gibt keine interne Variante.% +\fi% +\EndIndexGroup + + +\section{Definition sprachabhängiger Bezeichner} +\seclabel{languageSupport} +\BeginIndexGroup +\BeginIndex{}{Sprachdefinition} + +\iftrue +Anfänger haben häufig Probleme damit, sprachabhängige Begriffe wie +\Macro{listfigurename}\IndexCmd{listfigurename}, in der Voreinstellung meist +»List of Figures« beziehungsweise in Deutsch: »Abbildungsverzeichnis«, zu +ändern. Werden diese beispielsweise einfach mit \Macro{renewcommand} in der +Dokumentpräambel umdefiniert, so überleben sie eine spätere Umschaltung der +Sprache nicht. Bei Verwendung von \Package{babel}\IndexCmd{babel} wird die +Umdefinierung in der Dokumentpräambel bereits von +\Macro{begin}\PParameter{document} wieder überschrieben. +\fi + +Normalerweise muss man zur Definition oder zur Änderung sprachabhängiger +Begriffe Anweisungen wie \Macro{captionsngerman} so umdefinieren, dass +zusätzlich zu den bisherigen Begriffen auch die neuen oder geänderten +definiert werden. Erschwert wird dieses Vorhaben dadurch, dass beim Laden +eines Pakets wie \Package{german}\IndexPackage{german} oder +\Package{ngerman}\IndexPackage{ngerman} diese Anweisungen von den Paketen +erneut definiert werden. Bei den genannten Paketen geschieht dies leider in +einer Form, die alle zuvor gemachten Änderungen zunichte macht. Aus diesem +Grund ist es sinnvoll, die Änderungen mit Hilfe von \Macro{AtBeginDocument} bis +\Macro{begin}\PParameter{document}, also bis nach dem Laden aller Pakete, zu +verzögern. +\iftrue +Auch der Anwender muss entweder von \Macro{AtBeginDocument} +Gebrauch machen oder aber seine Änderungen nicht in die Dokumentpräambel, +sondern hinter \Macro{begin}\PParameter{document} einfügen. +\fi + +Darüber hinaus kommt erschwerend hinzu, dass einige Pakete zusätzliche, +sprachabhängige Begriffe in \Macro{captions\PName{Sprache}} definieren, +während andere dafür \Macro{extras\PName{Sprache}} verwenden. So muss der +Anwender sich schon sehr genau auskennen, um die richtige Anweisung auf die +richtige Weise zu ergänzen. + +Das Paket \Package{scrbase} bietet dem Anwender daher für die Definition und +Änderung selbst einige zusätzliche Anweisungen, die ihn von vielen dieser +Überlegungen entlasten. Gleichzeitig erlauben diese Befehle, die +sprachabhängigen Begriffe mehrerer Dialekte oder Ausprägungen einer Sprache +gleichzeitig zu definieren oder zu ändern. + +\begin{Declaration} + \Macro{defcaptionname} + \Parameter{Sprachliste}\Parameter{Begriff}\Parameter{Inhalt} + \Macro{providecaptionname} + \Parameter{Sprachliste}\Parameter{Begriff}\Parameter{Inhalt} + \Macro{newcaptionname} + \Parameter{Sprachliste}\Parameter{Begriff}\Parameter{Inhalt} + \Macro{renewcaptionname} + \Parameter{Sprachliste}\Parameter{Begriff}\Parameter{Inhalt} + \Macro{defcaptionname*} + \Parameter{Sprachliste}\Parameter{Begriff}\Parameter{Inhalt} + \Macro{providecaptionname*} + \Parameter{Sprachliste}\Parameter{Begriff}\Parameter{Inhalt} + \Macro{newcaptionname*} + \Parameter{Sprachliste}\Parameter{Begriff}\Parameter{Inhalt} + \Macro{renewcaptionname*}% + \Parameter{Sprachliste}\Parameter{Begriff}\Parameter{Inhalt} +\end{Declaration} +Mit Hilfe dieser vier Anweisungen und ihrer Sternvarianten ist es möglich, +einem \PName{Begriff} in Abhängigkeit der Sprache einen \PName{Inhalt} +zuzuweisen. Mehrere Sprachen können durch Komma voneinander getrennt als +\PName{Sprachliste}\ChangedAt{v3.12}{\Package{scrbase}} angegeben werden. + +Der \PName{Begriff} ist immer ein Makro. Die Arbeitsweise der Anweisungen +unterscheidet sich je nachdem, ob eine Sprache und ein \PName{Begriff} +innerhalb der Sprache zum Zeitpunkt des Aufrufs bereits definiert ist. + +Ist eine Sprache nicht definiert, so tut \Macro{providecaptionname} nichts +weiter, als dies in der \File{log}-Datei zu vermerken. Dabei wird für jede +Sprache nur einmal eine entsprechende Information in die \File{log}-Datei +geschrieben. Ist die Sprache definiert, enthält aber bisher keinen +entsprechenden \PName{Begriff}, so wird er mit dem angegebenen \PName{Inhalt} +definiert. Ist der \PName{Begriff} hingegen in der Sprache bereits definiert, +so wird er nicht umdefiniert, sondern ebenfalls ein entsprechender Hinweis in +die \File{log}-Datei geschrieben. + +Ist dagegen bei \Macro{newcaptionname} +eine Sprache nicht definiert, dann wird diese neu definiert, indem eine +entsprechende Anweisung definiert wird. Für die Sprache +\PValue{ngerman} wäre das beispielsweise \Macro{captionsngerman}. Außerdem +wird darüber auch in der \File{log}-Datei informiert. Ist die Sprache +definiert, der \PName{Begriff} in dieser Sprache aber noch nicht +vorhanden, so wird er mit dem gewünschten \PName{Inhalt} definiert. Ist der +\PName{Begriff} in der Sprache bereits vorhanden, so wird eine +Fehlermeldung ausgegeben. + +Die Anweisung \Macro{renewcaptionname} verhält sich noch einmal anders. Ist +eine Sprache nicht definiert, so wird eine Fehlermeldung +ausgegeben. Ist die Sprache definiert, der \PName{Begriff} in dieser +Sprache jedoch nicht, so wird ebenfalls eine Fehlermeldung +ausgegeben. Ist der \PName{Begriff} in der Sprache definiert, so wird +er auf den gewünschten \PName{Inhalt} umdefiniert. + +Die\ChangedAt{v3.12}{\Package{scrbase}} Anweisung \Macro{defcaptionname} +definiert einen \PName{Begriff} immer, überschreibt also eventuell vorhandene +Definitionen. Wie bei \Macro{providecaptionname} braucht eine angegebene +Sprache nicht definiert zu sein. + +\KOMAScript{} selbst verwendet \Macro{providecaptionname} um die Begriffe aus +\autoref{sec:scrlttr2-experts.languages}, +\DescPageRef{scrlttr2-experts.cmd.yourrefname} zu definieren. + +\begin{Example} + Möchten Sie »Abb.« statt »Abbildung« in den Abbildungsunterschriften, so + erreichen Sie dies mit: +\begin{lstcode} + \renewcaptionname{ngerman}{\figurename}{Abb.} +\end{lstcode} + + Soll dieselbe Änderung nicht nur für \PValue{ngerman}, sondern + auch für die Sprachen \PValue{naustrian} und \PValue{nswissgerman}, also für + Österreichisch und Schweizer Deutsch gelten, so ist + es nicht notwendig zwei weitere Anweisungen: +\begin{lstcode} + \renewcaptionname{naustrian}{\figurename}{Abb.} + \renewcaptionname{nswissgerman}{\figurename}{Abb.} +\end{lstcode} + hinzuzufügen. Stattdessen kann einfach, die \PName{Sprachliste} erweitert + werden: +\begin{lstcode} + \renewcaptionname{ngerman,naustrian,nswissgerman}% + {\figurename}{Abb.} +\end{lstcode} + In gleicher Weise können auch \PValue{german}, \PValue{austrian} und + \PValue{swissgerman}, also Deutsch, Österreichisch und Schweizer Deutsch + nach der veralteten Rechtschreibung, hinzugefügt werden. +\end{Example} +\begin{Explain} + Die Sprachen \PValue{swissgerman} und \PValue{nswissgerman} werden übrigens + von älteren Versionen von \Package{babel} noch nicht unterstützt. Sie sind + erst seit Dezember~2013 Bestandteil des deutschen Sprachpakets für + \Package{babel}. Für die Anweisungen \Macro{defcaptionname}, + \Macro{newcaptionname} und \Macro{providecaptionname} spielt dies kaum eine + Rolle, da diese auch Begriffe für nicht existierende Sprachen definieren + können. Da mit \Macro{renewcaptionname} jedoch nur existierende Begriffe von + existierenden Sprachen umdefiniert werden können, resultiert die + Umdefinierung für \Option{nswissgerman} und \Option{swissgerman} bei + Verwendung einer älteren Version von \Package{babel} in einer entsprechenden + Fehlermeldung. +\end{Explain} + +Seit \KOMAScript~3.12\ChangedAt{v3.12}{\Package{scrbase}} ist es auch nicht +mehr erforderlich, die Definierung oder Umdefinierung mit Hilfe von +\Macro{AtBeginDocument} bis \Macro{begin}\PParameter{document} zu +verzögern. Stattdessen erledigt \Package{scrbase} dies selbst, falls die +Anweisungen in der Dokumentpräambel aufgerufen werden. Außerdem prüft +\Package{scrbase} nun auch, ob ein umzudefinierender Begriff statt in +\Macro{captions\PName{Sprache}} in \Macro{extras\PName{Sprache}} zu definieren +ist. Die neuen Sternvarianten der Befehle verwenden grundsätzlich +\Macro{extras\PName{Sprache}}, da dessen Definitionen in der Regel nach +\Macro{captions\PName{Sprache}} Anwendung finden. Damit funktioniert nun in +der Regel auch das Umdefinieren von sprachabhängigen Bezeichnern von Paketen +wie \Package{hyperref}, die dafür \Macro{extras\PName{Sprache}} verwenden. + +In \autoref{tab:scrbase.commonNames} ist ein Überblick über die üblicherweise +von Klassen und Sprachpaketen definierten Begriffe und deren Verwendung zu +finden.\iffree{}{ \KOMAScript{} selbst definiert noch einige weitere + Begriffe. Siehe dazu \autoref{sec:scrlttr2-experts.languages} ab + \DescPageRef{scrlttr2-experts.cmd.yourrefname}.} + +\begin{desclist} + \renewcommand*{\abovecaptionskipcorrection}{-\normalbaselineskip}% + \desccaption[{% + Überblick über übliche sprachabhängige Begriffe% + }]{% + Überblick über sprachabhängige Begriffe in den üblichen + Sprachpaketen\label{tab:scrbase.commonNames}% + }{% + Überblick über übliche sprachabhängige Begriffe + (\emph{Fortsetzung})% + }% + \entry{\Macro{abstractname}}{% + Überschrift für die Zusammenfassung% + \IndexCmd{abstractname}% + }% + \entry{\Macro{alsoname}}{% + »Siehe auch« bei ergänzenden Verweisen im Stichwortverzeichnis% + \IndexCmd{alsoname}% + }% + \entry{\Macro{appendixname}}{% + »Anhang« in der Kapitelüberschrift eines Anhangs% + \IndexCmd{appendixname}% + }% + \entry{\Macro{bibname}}{% + Überschrift für das Literaturverzeichnis% + \IndexCmd{bibname}% + }% + \entry{\Macro{ccname}}{% + Spitzmarke für den Verteiler in Briefen% + \IndexCmd{ccname}% + }% + \entry{\Macro{chaptername}}{% + »Kapitel« in der Kapitelüberschrift% + \IndexCmd{chaptername}% + }% + \entry{\Macro{contentsname}}{% + Überschrift für das Inhaltsverzeichnis% + \IndexCmd{contentsname}% + }% + \entry{\Macro{enclname}}{% + Spitzmarke für die Anlagen bei Briefen% + \IndexCmd{enclname}% + }% + \entry{\Macro{figurename}}{% + Spitzmarke in der Abbildungsunterschrift% + \IndexCmd{figurename}% + }% + \entry{\Macro{glossaryname}}{% + Überschrift für das Glossar% + \IndexCmd{glossaryname}% + }% + \entry{\Macro{headtoname}}{% + »An« im Briefkopf% + \IndexCmd{headtoname}% + }% + \entry{\Macro{indexname}}{% + Überschrift für das Stichwortverzeichnis% + \IndexCmd{indexname}% + }% + \entry{\Macro{listfigurename}}{% + Überschrift für das Abbildungsverzeichnis% + \IndexCmd{listfigurename}% + }% + \entry{\Macro{listtablename}}{% + Überschrift für das Tabellenverzeichnis% + \IndexCmd{listtablename}% + }% + \entry{\Macro{pagename}}{% + »Seite« in der Seitennummer von Briefen% + \IndexCmd{pagename}% + }% + \entry{\Macro{partname}}{% + »Teil« in der Teileüberschrift% + \IndexCmd{partname}% + }% + \entry{\Macro{prefacename}}{% + Überschrift für das Vorwort% + \IndexCmd{prefacename}% + }% + \entry{\Macro{proofname}}{% + Spitzmarke bei Beweisen% + \IndexCmd{proofname}% + }% + \entry{\Macro{refname}}{% + Überschrift für das Quellenverzeichnis% + \IndexCmd{refname}% + }% + \entry{\Macro{seename}}{% + »Siehe« bei Verweisen im Stichwortverzeichnis% + \IndexCmd{seename}% + }% + \entry{\Macro{tablename}}{% + Spitzmarke in der Tabellenunter- bzw. "~überschrift% + \IndexCmd{tablename}% + }% +\end{desclist} +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Identifikation von \KOMAScript} +\seclabel{identify} + +Obwohl -- oder gerade weil -- \Package{scrbase} ganz allgemein als Paket für +Klassen- und Paketautoren konzipiert ist, wird es natürlich von den +\KOMAScript-Klassen und den meisten \KOMAScript-Paketen verwendet. Es enthält +daher auch zwei Anweisungen, die in allen \KOMAScript-Klassen und allen +grundlegenden \KOMAScript-Paketen vorhanden sind. + + +\begin{Declaration} + \Macro{KOMAScript} +\end{Declaration} +Diese Anweisung setzt schlicht die Wortmarke »\KOMAScript« in serifenloser +Schrift und mit leichter Sperrung des in Versalien gesetzten +Teils. \Macro{KOMAScript} wird übrigens bei Bedarf von allen +\KOMAScript-Klassen und "~Paketen definiert. Die Definition erfolgt mit +\Macro{DeclareRobustCommand}. Da auch Pakete, die nicht zu \KOMAScript{} +gehören, diese Wortmarke definieren können, sollte man die Anweisung jedoch +nicht als Indiz für die Verwendung eines \KOMAScript-Pakets verstehen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{KOMAScriptVersion} +\end{Declaration} +Bei \KOMAScript{} ist in dieser Anweisung die Hauptversion von \KOMAScript{} +in der Form »\PName{Datum} \PName{Version} \texttt{KOMA-Script}« +abgelegt. Diese Hauptversion ist für alle \KOMAScript-Klassen und alle +\KOMAScript-Pakete, die von den Klassen verwendet werden, gleich. Daher kann +sie auch nach dem Laden von \Package{scrbase} abgefragt werden. Diese +Anleitung wurde beispielsweise mit der \KOMAScript-Version +»\KOMAScriptVersion« erstellt. Das Vorhandensein dieser Anweisung ist ein +starkes Indiz dafür, dass zumindest ein \KOMAScript-Paket verwendet wird.% +\EndIndexGroup + + +\section{Erweiterungen des \LaTeX-Kerns} +\seclabel{latexkernel} + +In einigen Fällen stellt der \LaTeX-Kern selbst Anweisungen zur Verfügung, +lässt aber ganz ähnliche Anweisungen, die ebenfalls häufiger benötigt werden +oder eigentlich nahe liegen, vermissen. Einige wenige solcher Anweisungen +für Klassen- und Paketautoren stellt \Package{scrbase} zur Verfügung. + +\begin{Declaration} + \Macro{ClassInfoNoLine}\Parameter{Klassenname}\Parameter{Information} + \Macro{PackageInfoNoLine}\Parameter{Paketname}\Parameter{Information} +\end{Declaration}% +Der \LaTeX-Kern bietet dem Klassen- und Paketautor zwar Anweisungen wie +\Macro{PackageInfo} und \Macro{ClassInfo}, um Informationen mit aktueller +Zeilennummer in die Log-Datei zu schreiben. Er bietet neben +\Macro{PackageWarning} und \Macro{ClassWarning}, die Warnungen mit aktueller +Zeilennummer ausgeben, auch die beiden Anweisungen +\Macro{PackageWarningNoLine} und \Macro{ClassWarningNoLine}, um Warnungen ohne +Zeilennummer auszugeben. Die naheliegenden Anweisungen +\Macro{ClassInfoNoLine} und \Macro{PackageInfoNoLine}, um auch Informationen +ohne Zeilennummer in die Log-Datei zu schreiben, fehlen jedoch. Diese werden +von \Package{scrbase} bereit gestellt. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{l@addto@macro}\Parameter{Anweisung}\Parameter{Erweiterung}% +\end{Declaration}% +Der \LaTeX-Kern bietet mit \Macro{g@addto@macro} eine interne Anweisung, um +die Definition eines Makro \PName{Anweisung} global um den Code +\PName{Erweiterung} zu erweitern. Das funktioniert in dieser Form nur für +Makros ohne Argumente. Dennoch könnte man diese Anweisung in einigen Fällen +auch in einer Form benötigen, die lokal zur aktuellen Gruppe arbeitet. Diese +wird mit \Macro{l@addto@macro} von \Package{scrbase} bereit gestellt. Eine +Alternative stellt hier die Verwendung des Pakets +\Package{etoolbox}\IndexPackage{etoolbox} oder +\Package{xpatch}\IndexPackage{xpatch} dar, das eine ganze Reihe solcher +Anweisungen für unterschiedliche Zwecke bietet (siehe +\cite{package:etoolbox} beziehungsweise \cite{package:xpatch}). +% +\EndIndexGroup + + +\section{Erweiterungen der mathematischen Fähigkeiten von \eTeX} +\seclabel{etex} + +Das für \LaTeX{} inzwischen verwendete und von \KOMAScript{} vorausgesetzte +\eTeX{} besitzt mit \Macro{numexpr}\IndexCmd{numexpr} erweiterte Möglichkeiten +zur Berechnung einfacher Ausdrücke mit \TeX-Zählern und ganzen Zahlen. Als +Operationen werden dabei die vier Grundrechenarten und Klammern +unterstützt. Bei der Division wird korrekt gerundet. Manchmal sind weitere +Operationen nützlich. + +\begin{Declaration} + \Macro{XdivY}\Parameter{Dividend}\Parameter{Divisor} + \Macro{XmodY}\Parameter{Dividend}\Parameter{Divisor} +\end{Declaration}% +\BeginIndex{Cmd}{XdivY}% +\BeginIndex{Cmd}{XmodY}% +Die\ChangedAt{v3.05a}{\Package{scrbase}} Anweisung \Macro{XdivY} liefert den +Wert des ganzzahligen Quotienten, die Anweisung \Macro{XmodY} den Wert des +Rests der Division mit Rest. Diese Art der Division ist nach der Gleichung +\[ +\textit{Dividend} = \textit{Divisor} \cdot +\textit{Quotient} + \textit{Rest} +\] +% +definiert, wobei \textit{Dividend}, \textit{Divisor} und \textit{Rest} ganze +Zahlen und \textit{Rest} außerdem größer oder gleich 0 und kleiner als +\textit{Divisor} ist. Der \textit{Divisor} ist eine natürliche Zahl (ohne die +0). + +Der Wert kann jeweils zur Zuweisung an einen Zähler oder direkt innerhalb +eines Ausdrucks mit \Macro{numexpr}\IndexCmd{numexpr} verwendet werden. Zur +Ausgabe als arabische Zahl ist \Macro{the} voranzustellen.% +% +\EndIndexGroup +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "../guide.tex" +%%% End: + +% LocalWords: Paketoptionen Familienmitglieder Familienmitglieds Säumniswert +% LocalWords: Fleischermeister FamilyProcessOptions ProcessOption keyval Cmd +% LocalWords: documentclass ProcessOptions FamilyExecuteOptions currname +% LocalWords: Optionenliste ExecuteOptions DeclareOption currext Wurstsalat +% LocalWords: FamilyOptions FamilyKeyState Wurstpakete nonsense package true +% LocalWords: Wurstpaket FamilyOption salatmit SalatZusatz scrbase false +% LocalWords: AtEndOfFamilyOptions FamilyBoolKey FamilySetBool Schaltername +% LocalWords: FamilyLengthKey FamilySetLength FamilyLengthMacroKey +% LocalWords: FamilySetLengthMacro Wertübergabe Gliederungsbefehlen +% LocalWords: Sternvariante Anwenderanweisungen Signalisierung Paketautoren +% LocalWords: Familienschlüssel Mitgliederschlüssels Vergleichszustand +% LocalWords: Benutzeräquivalent Dokumentpräambel voranzustellen diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrbookreportarticle-experts.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrbookreportarticle-experts.tex new file mode 100644 index 0000000000..410c320f04 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrbookreportarticle-experts.tex @@ -0,0 +1,1968 @@ +% ====================================================================== +% scrbookreportarticle-experts.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrbookreportarticle-experts.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrbook, scrreprt, and scrartcl of the KOMA-Script guide +% expert part +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel über scrbook, scrreprt und scrartcl im Experten-Teil der +% KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrbookreportarticle-experts.tex}% + [$Date: 2018-10-14 20:31:51 +0200 (Sun, 14 Oct 2018) $ + KOMA-Script guide (chapter: scrbook, scrreprt, scrartcl for + experts)] + +\chapter[{Zusätzliche Informationen zu den Hauptklassen und + \Package{scrextend}}]{Zusätzliche + Informationen zu den Hauptklassen + \Class{scrbook}, \Class{scrreprt} und + \Class{scrartcl} sowie dem + Paket \Package{scrextend}} +\labelbase{maincls-experts} + +\BeginIndexGroup \BeginIndex{Class}{scrartcl} \BeginIndex{Class}{scrbook} +\BeginIndex{Class}{scrreprt} \BeginIndex{Package}{scrextend} In diesem Kapitel +finden Sie zusätzliche Informationen zu den \KOMAScript-Klassen +\Class{scrbook}, \Class{scrreprt} und \Class{scrartcl} und einigen +Anweisungen, die auch in \Package{scrextend} vorhanden sind. \iffree{Einige + Teile des Kapitels sind dabei dem \KOMAScript-Buch \cite{book:komascript} + vorbehalten. Dies sollte kein Problem sein, denn der}{Der} normale Anwender, +der die Klassen einfach nur verwenden will, wird diese Informationen eher +selten benötigen. Ein Teil der Informationen richtet sich an Anwender, die +ausgefallene Aufgaben lösen oder eigene Klassen schreiben wollen, die auf +einer \KOMAScript-Klasse basieren. Anderes existiert nur aus Gründen der +Kompatibilität zu den Standardklassen\iffree{ oder früheren Versionen von + \KOMAScript}{}.\iffree{}{ Teile, die nur aus Gründen der + Kompatibilität zu früheren Versionen von \KOMAScript{} existieren, sind in + serifenloser Schrift gesetzt und sollten nicht mehr verwendet werden.} + +\LoadNonFree{scrbookreportarticle-experts}{0} + +\section{Ergänzungen zu Benutzeranweisungen} +\seclabel{addInfos} + +\LoadNonFree{scrbookreportarticle-experts}{1} + + +\section{Zusammenspiel von \KOMAScript{} und anderen Paketen} +\seclabel{coexistence} + +\LoadNonFree{scrbookreportarticle-experts}{2} + + +\section{Anweisungen für Experten} +\seclabel{experts} + +In diesem Abschnitt werden Anweisungen beschrieben, die für den normalen +Anwender kaum oder gar nicht von Interesse sind. Experten bieten diese +Anweisungen zusätzliche Möglichkeiten. Da die Beschreibungen für Experten +gedacht sind, sind sie kürzer gefasst. + + +% \subsection{Identifikation} +% \seclabel{identification} + +\begin{Declaration} + \Macro{KOMAClassName} + \Macro{ClassName} +\end{Declaration} +In \Macro{KOMAClassName} ist der Name der aktuell verwendeten +\KOMAScript-Klasse abgelegt. Will man also wissen, ob eine oder welche +\KOMAScript-Klasse verwendet wird, so kann man einfach auf diese Anweisung +testen. Demgegenüber gibt \Macro{ClassName} Auskunft, welche Standardklasse +durch diese \KOMAScript-Klasse ersetzt wird. + +Es\textnote{Achtung!} sei in diesem Zusammenhang darauf hingewiesen, dass +dagegen die Existenz von +\DescRef{scrbase.cmd.KOMAScript}\IndexCmd{KOMAScript} nicht als Indiz für die +Verwendung einer \KOMAScript-Klasse dienen kann. Zum einen definieren alle +\KOMAScript-Pakete diese Anweisung, zum anderen können auch andere Pakete es +für sinnvoll erachten, das \KOMAScript-Piktogramm unter diesem Namen zu +definieren.% +\EndIndexGroup + + +% \subsection{Einträge ins Inhaltsverzeichnis} +% \seclabel{toc} + +\begin{Declaration} + \Macro{addtocentrydefault}\Parameter{Ebene}\Parameter{Nummer}% + \Parameter{Überschrift} +\end{Declaration} +Die\ChangedAt{v3.08}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} \KOMAScript-Klassen verwenden +\Macro{addcontentsline}\IndexCmd{addcontentsline}% +\important{\Macro{addcontentsline}} nicht direkt, um Einträge ins +Inhaltsverzeichnis vorzunehmen. Stattdessen wird \Macro{addtocentrydefault} +mit ganz ähnlichen Argumenten aufgerufen. Die Anweisung kann sowohl für +nummerierte als auch für nicht nummerierte Einträge verwendet werden. Dabei +gibt \PName{Ebene} die Gliederungsebene in Textform an, also \PValue{part}, +\PValue{chapter}, \PValue{section}, \PValue{subsection}, +\PValue{subsubsection}, \PValue{paragraph} oder \PValue{subparagraph}. Die +formatierte Gliederungsnummer wird über das zweite Argument \PName{Nummer} +übergeben. Dieses Argument darf auch leer sein. Der Text des Eintrags wird mit +\PName{Überschrift} angegeben. Zerbrechliche Befehle in +diesem Argument sind mit +\Macro{protect}\IndexCmd{protect}\important{\Macro{protect}} zu schützen. + +Für das Argument \PName{Nummer} gilt noch eine Besonderheit. Ist das Argument +leer, so signalisiert dies, dass ein nicht nummerierter Eintrag erzeugt werden +soll. In der Voreinstellung wird dies mit +\begin{quote}\small\raggedright + \Macro{addcontentsline}\PParameter{toc}\Parameter{Ebene}% + \PParameter{\%\\ + \quad\Macro{protect}\DescRef{tocbasic.cmd.nonumberline} + \PName{Überschrift}\%\\ + } +\end{quote} +erreicht. Ist das Argument jedoch nicht leer, so soll ein nummerierter Eintrag +erzeugt werden und \PName{Nummer} ist die vorformatierte Gliederungsnummer. In +der Voreinstellung verwendet \KOMAScript{} dann: +\begin{quote}\small\raggedright + \Macro{addcontentsline}\PParameter{toc}\Parameter{Ebene}% + \PParameter{\%\\ + \quad\Macro{protect}\DescRef{tocbasic.cmd.numberline}\Parameter{Nummer}% + \PName{Überschrift}\%\\ + } +\end{quote} +\iffalse zur Erzeugung dieses Eintrags.\fi + +Paketautoren und Autoren von Wrapper-Klassen können diese Anweisung +umdefinieren, um Einfluss auf die Einträge zu nehmen. So\textnote{Beispiel} +wäre beispielsweise denkbar, mit +\begin{lstcode} + \renewcommand{\addtocentrydefault}[3]{% + \ifstr{#3}{}{% + }{% + \ifstr{#2}{}{% + \addcontentsline{toc}{#1}{\protect\nonumberline#3}% + }{% + \addcontentsline{toc}{#1}{\protect\numberline{#2}#3}% + }% + }% + }% +\end{lstcode} +dafür\IndexCmd{ifstr} zu sorgen, dass Einträge mit leerer \PName{Überschrift} +erst gar nicht vorgenommen werden. Eine solche Änderung ist in der Praxis +jedoch nicht notwendig, da die Unterdrückung leerer Einträge bereits auf +andere Weise in die \KOMAScript-Klassen eingebaut ist. Siehe hierzu auch die +Erklärung zu den Gliederungsbefehlen in \autoref{sec:maincls.structure} ab +\DescPageRef{maincls.cmd.part}.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{addparttocentry}\Parameter{Nummer}\Parameter{Überschrift} + \Macro{addchaptertocentry}\Parameter{Nummer}\Parameter{Überschrift} + \Macro{addsectiontocentry}\Parameter{Nummer}\Parameter{Überschrift} + \Macro{addsubsectiontocentry}\Parameter{Nummer}\Parameter{Überschrift} + \Macro{addsubsubsectiontocentry}\Parameter{Nummer}\Parameter{Überschrift} + \Macro{addparagraphtocentry}\Parameter{Nummer}\Parameter{Überschrift} + \Macro{addsubparagraphtocentry}\Parameter{Nummer}\Parameter{Überschrift} +\end{Declaration}% +Auch \ChangedAt{v3.08}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} die oben dokumentierte Anweisung +\DescRef{\LabelBase.cmd.addtocentrydefault}\IndexCmd{addtocentrydefault}% +\important{\DescRef{\LabelBase.cmd.addtocentrydefault}} wird von den +\KOMAScript-Klassen nur dann direkt aufgerufen, wenn für die angegebene +\PName{Ebene} keine direkte Anweisung definiert oder diese +\Macro{relax}\IndexCmd{relax}\important{\Macro{relax}} ist. In der +Voreinstellung sind die angegebenen Anweisungen alle so definiert, dass sie +ihre \PName{Ebene} und die Argumente direkt an +\DescRef{\LabelBase.cmd.addtocentrydefault} weitergeben.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{raggedchapterentry} +\end{Declaration} +Bei früheren\ChangedAt{v3.21}{\Class{scrbook}\and \Class{scrreprt}} Version +von \KOMAScript{} gab es die Möglichkeit, das Makro \Macro{raggedchapterentry} +als \Macro{raggedright} zu definieren, um den Text der Kapiteleinträge ins +Inhaltsverzeichnis im linksbündigen Flattersatz zu setzen. Offiziell existiert +diese Möglichkeit seit \KOMAScript-Version~3.21 nicht mehr. + +Tatsächlich ist aber die Eigenschaft \PValue{raggedentrytext} für den +Eintrags-Stil \PValue{tocline} im Paket +\hyperref[cha:tocbasic]{\Package{tocbasic}}\IndexPackage{tocbasic} so +implementiert, dass sie das Makro \Macro{ragged\PName{Eintragsebene}entry} +entweder auf \Macro{relax} oder auf \Macro{raggedright} setzt. Bei der +Auswertung der Eigenschaft wird dann getestet, ob das entsprechende Makro +entweder \Macro{raggedright} ist oder als \Macro{raggedright} definiert +ist. In beiden Fällen wird Flattersatz verwendet. In allen anderen Fällen wird +kein Flattersatz verwendet. + +Da schon früher dokumentiert war, dass \Macro{raggedchapterentry} nicht +als etwas anderes als \Macro{raggedright} definiert werden sollte, ist damit +Kompatibilität zum dokumentierten Verhalten früherer Versionen erreicht. Wie +in früheren Versionen gewarnt, führen andere Definitionen von +\Macro{raggedchapterentry} -- nun aber auch von \Macro{raggedsectionentry} und +entsprechend für die anderen Eintragsebenen -- möglicherweise zu unerwarteten +Ergebnissen. + +Empfohlen wird, eventuell gewünschten Flattersatz für Verzeichniseinträge +stattdessen über die genannte Eigenschaft des Verzeichniseintragsstils +\PValue{tocline} zu wählen.% +\EndIndexGroup + + +% \subsection{Schrifteinstellungen} +% \seclabel{fonts} + +\begin{Declaration} + \Macro{@fontsizefilebase} + \Macro{changefontsizes}\Parameter{Schriftgröße} +\end{Declaration} +Der\iffree{ in \autoref{sec:maincls-experts.addInfos}}{} auf +\DescPageRef{maincls-experts.option.fontsize} für die Schriftgrößendateien +angegebene Präfix \File{scrsize}, ist lediglich die Voreinstellung für das +interne Makro \Macro{@fontsizefilebase}\IndexCmd{@fontsizefilebase}, die +verwendet wird, wenn das Makro beim Laden der Klasse oder des Pakets +\Package{scrextend} noch nicht definiert ist. Autoren von Wrapper-Klassen +können dieses Makro abweichend definieren, um andere Schriftgrößendateien zu +verwenden. Ebenso\textnote{Tipp!} können Autoren von Wrapper-Klassen die +\emph{fallback}-Lösung der berechneten Schriftgrößen dadurch ändern oder +abschalten, dass sie das Makro +\Macro{changefontsizes}\important{\Macro{changefontsizes}}, das als Argument +die gewünschte \PName{Schriftgröße} erwartet, umdefinieren. Das +Makro\textnote{Achtung!} \Macro{changefontsizes} ist jedoch nicht als +Anweisung für den Aufruf durch Anwender konzipiert.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{newkomafont}\OParameter{Warnung}\Parameter{Element} + \Parameter{Voreinstellung} + \Macro{aliaskomafont}\Parameter{Aliasname}\Parameter{Element} +\end{Declaration} +Experten können mit \Macro{newkomafont} eine \PName{Voreinstellung} für die +Schrift eines \PName{Element}s definieren. Anschließend kann diese +Voreinstellung mit den Anweisungen \DescRef{maincls.cmd.setkomafont} und +\DescRef{maincls.cmd.addtokomafont} (siehe \autoref{sec:maincls.textmarkup}, +\DescPageRef{maincls.cmd.setkomafont}) verändert werden. Natürlich wird diese +Schrift damit noch lange nicht verwendet. Der Experte muss selbst Sorge dafür +tragen, dass er an den entsprechenden Stellen die Anweisung +\DescRef{maincls.cmd.usekomafont}% +\important{\DescRef{maincls.cmd.usekomafont}}\IndexCmd{usekomafont} (siehe +\DescPageRef{maincls.cmd.usekomafont}) für dieses Element in seinen +Definitionen einbaut. Der Aufruf von \Macro{newkomafont} für ein bereits +existierendes Element führt zu Fehlermeldungen. + +Das optionale Argument \PName{Warnung} definiert eine Warnmeldung. Diese wird +bei den \KOMAScript-Klassen per \Macro{ClassWarning} oder beim Paket +\Package{scrextend} per \Macro{PackageWarning} immer dann ausgegeben, wenn die +Voreinstellung für das Element verändert wird. Als Urheber der +Warnung wird das Paket +\Package{scrkbase}\IndexPackage{scrkbase}\important{\Package{scrkbase}} +angegeben. + +Mit \Macro{aliaskomafont} kann für ein bereits existierendes \PName{Element} +ein \PName{Aliasname} definiert werden. \KOMAScript{} informiert den Benutzer +in der \File{log}-Datei über den Namen des tatsächlichen Elements, wenn dieser +den \PName{Aliasname} verwendet. \PName{Aliasname}n\textnote{Tipp!} können +beispielsweise dann eingesetzt werden, wenn der Entwickler sich später einen +besseren Namen für ein Element überlegt und der alte Name aus +Kompatibilitätsgründen weiter verwendbar bleiben soll. Außerdem kann damit die +Benutzerfreundlichkeit erhöht werden, indem einem Element all die Namen als +Alias zugeordnet werden, die unterschiedliche Benutzer intuitiv wählen +würden. \KOMAScript{} selbst macht von dieser Möglichkeit regen Gebrauch. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{addtokomafontrelaxlist}\Parameter{Makro} + \Macro{addtokomafontonearglist}\Parameter{Makro} + \Macro{addtokomafontgobblelist}\Parameter{Makro} +\end{Declaration} +Wie bereits in \autoref{part:forAuthors} der Anleitung erklärt, dürfen in den +Schrifteinstellungen der Elemente nur Befehle zur Wahl der Größe, Familie, +Codierung, Strichstärke, Form und Farbe enthalten sein. Dabei erfolgt schon +die Änderung der Farbe bei \LaTeX{} nicht transparent und kann damit +unerwünschte Effekte hervorrufen, wenn man \DescRef{maincls.cmd.usekomafont} +an ungünstiger Stelle verwendet. + +Nun neigen Anwender dazu, in die Schrifteinstellungen auch ganz andere, +teilweise sehr kritische Dinge zu packen, beispielsweise ein +\Macro{MakeUppercase} ganz am Ende der Einstellung. Bei der internen +Verwendung der Schrifteinstellungen wurde daher möglichst so vorgegangen, dass +viele dieser eigentlich verbotenen Einstellungen trotzdem keinen Schaden +anrichten und es meist sogar funktioniert, wenn der letzte Befehl in der +Schrifteinstellung ein Argument erwartet, also beispielsweise \Macro{textbf} +anstelle von \Macro{bfseries} verwendet wird. Eine Garantie gibt es dafür +jedoch nicht. + +In Einzelfällen war es innerhalb von \KOMAScript{} notwendig, die Umschaltung +wirklich auf Schrifteinstellungen zu beschränken. Dies erfolgt dann +beispielsweise mit +\DescRef{maincls.cmd.usefontofkomafont}\IndexCmd{usefontofkomafont}% +\IndexCmd{usesizeofkomafont}\IndexCmd{useencodingofkomafont}% +\IndexCmd{usefamilyofkomafont}\IndexCmd{useseriesofkomafont}% +\IndexCmd{useshapeofkomafont} statt \DescRef{maincls.cmd.usekomafont} (siehe +\autoref{sec:maincls.textmarkup}, +\DescPageRef{maincls.cmd.usefontofkomafont}). + +Die Anweisung \DescRef{maincls.cmd.usefontofkomafont} und ihre Geschwister +haben allerdings ihre Grenzen. Daher darf die vermeintliche Schrifteinstellung +eines Elements keinesfalls ein voll expandierbares Argument erwarten. Genau +das ist aber beispielsweise bei \Macro{MakeUppercase} der +Fall. Daher\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} verwaltet \KOMAScript{} eine interne Liste von Makros, die +innerhalb von \DescRef{maincls.cmd.usefontofkomafont} und ihren Geschwistern +zu \Macro{relax} werden sollen. In der Voreinstellung ist das seit +\KOMAScript~3.24\ChangedAt{v3.24}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} nur noch \Macro{normalcolor}. + +Es ist zu beachten, dass das angegebene \PName{Makro} wirklich stur auf +\Macro{relax} gesetzt wird. Irgendwelche Argumente innerhalb der +Schrifteinstellung werden also gegebenenfalls lokal ausgeführt. Daher dürfen +Anweisungen wie \Macro{setlength} keinesfalls zu dieser Liste hinzugefügt +werden. Für alle Fehler, die durch die Verwendung von +\Macro{addtokomafontrelaxlist} entstehen, ist der Anwender selbst +verantwortlich. Außerdem sollte diese Möglichkeit nicht als Legitimation dafür +missverstanden werden, den Schrifteinstellungen alle möglichen Anweisungen +hinzuzufügen! + +Für\ChangedAt{v3.24}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Befehle, deren erstes Argument noch ohne zusätzliche +Gruppe ausgeführt werden soll, gibt es +\Macro{addtokomafontonearglist}. Das angegebene \PName{Makro} wird dabei auf +\Macro{@firstofone} gesetzt. In der Voreinstellung wird dies für +\Macro{MakeUppercase} und \Macro{MakeLowercase} verwendet. + +Soll\ChangedAt{v3.19}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} hingegen ein \PName{Makro} innerhalb von +\DescRef{maincls.cmd.usefontofkomafont} und ihren Geschwistern zusammen mit +seinem ersten Argument ignoriert werden, so ist stattdessen +\Macro{addtokomafontgobblelist} zu verwenden. Ein Beispiel dafür ist die +Anweisung \Macro{color}, die einschließlich des Namens der Farbe ignoriert +werden muss und deshalb bereits in der Voreinstellung Teil dieser Liste ist. + +Es ist zu beachten, dass sich die hier genannten Voreinstellungen in +zukünftigen Versionen ändern können. Wenn Sie bestimmte Befehle in einer der +Liste zwingend benötigen, sollte Sie diese also selbst explizit hinzufügen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{IfExistskomafont}\Parameter{Element}\Parameter{Dann-Code}% + \Parameter{Sonst-Code} + \Macro{IfIsAliaskomafont}\Parameter{Element}\Parameter{Dann-Code}% + \Parameter{Sonst-Code} +\end{Declaration} +Da\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Class{scrlttr2}} die Schrift mancher Elemente erst ab +bestimmten Versionen von \KOMAScript{} geändert werden kann, ist es manchmal +sinnvoll, vorher testen zu können, ob ein \PName{Element} mit dieser +Möglichkeit überhaupt existiert. Die Anweisung \Macro{IfExistskomafont} führt +den \PName{Dann-Code} genau dann aus, wenn das \PName{Element} über +\DescRef{\LabelBase.cmd.newkomafont} oder +\DescRef{\LabelBase.cmd.aliaskomafont} definiert wurde und daher auch mit +\DescRef{maincls.cmd.setkomafont} oder \DescRef{maincls.cmd.addtokomafont} +geändert und mit den \Macro{use\dots komafont}-Anweisungen abgefragt werden +kann. Anderenfalls wird der \PName{Sonst-Code} ausgeführt. + +Im Unterschied dazu führt +\Macro{IfIsAliaskomafont}\ChangedAt{v3.25}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}\and \Class{scrlttr2}} den +\PName{Dann-Code} nur aus, wenn \PName{Element} über +\DescRef{\LabelBase.cmd.aliaskomafont} als Alias für ein anderes Element +definiert wurde. Sowohl für nicht definierte Elemente als auch für mit +\DescRef{\LabelBase.cmd.newkomafont} definierte Elemente wird hingegen der +\PName{Sonst-Code} ausgeführt.% +\EndIndexGroup + + +% \subsection{Absatzmarkierung} +% \seclabel{parskip} + +\begin{Declaration} + \Macro{setparsizes}\Parameter{Einzug}\Parameter{Abstand} + \Parameter{Endzeilenleerraum} +\end{Declaration} +\KOMAScript{} bietet mit dieser Anweisung die Möglichkeit, sowohl den +Absatzeinzug als auch den Absatzabstand und den Freiraum am Ende der letzten +Zeile des Absatzes einzustellen. Diese Anweisung ist immer dann zu verwenden, +wenn die Änderungen auch bei Einstellung +\OptionValueRef{\LabelBase}{parskip}{relative} beachtet werden +sollen. \KOMAScript{}\textnote{Beispiel} selbst verwendet sie beispielsweise +in der Form +\begin{lstcode} + \setparsizes{0pt}{0pt}{0pt plus 1fil} +\end{lstcode} +um sowohl den Einzug als auch den Abstand abzuschalten und am Ende des +Absatzes beliebigen Freiraum zu erlauben. Eine solche Maßnahme ist sinnvoll, +wenn ein Absatz nur aus einer Box besteht, die ohne Abstand nach oben oder +unten gesetzt werden soll und die gesamte Spaltenbreite einnimmt. Soll +demgegenüber die Box nur die gesamte Breite einnehmen, jedoch mit der +aktuellen Einstellung bezüglich des Absatzabstandes gesetzt werden, so ist +\begin{lstcode} + \setlength{\parfillskip}{0pt plus 1fil} +\end{lstcode} +vorzuziehen. + +Eine\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Neuberechnung\IndexCmd{activateareas} oder Reaktivierung +der Einstellungen für den Satzspiegel und die Ränder (siehe +\autoref{cha:typearea}) führt seit \KOMAScript~3.17 übrigens immer auch zu +einer Neueinstellung der via \Macro{setparsizes} gesetzten Werte, falls die +Werte nicht zwischenzeitlich geändert wurden. Dies sollte ein Grund mehr sein, +nicht an \KOMAScript{} vorbei die Einstellungen zu ändern. Die Neuberechnung +wird bei einer Kompatibilitätseinstellung zu einer früheren Version (siehe +\autoref{sec:maincls.compatibilityOptions}, +\DescPageRef{maincls.option.version}, Option +\DescRef{maincls.option.version}% +\IndexOption{version}\important{\OptionValueRef{maincls}{version}{3.17}}) +deaktiviert.% +% +\EndIndexGroup + +% \subsection{Zähler} +% \seclabel{counter} + +\LoadNonFree{scrbookreportarticle-experts}{3} + +% \subsection{Gliederung} +% \seclabel{sections} + +\begin{Declaration} + \Macro{DeclareSectionCommand}\OParameter{Einstellungen}\Parameter{Name} + \Macro{DeclareNewSectionCommand}\OParameter{Einstellungen}\Parameter{Name} + \Macro{RedeclareSectionCommand}\OParameter{Einstellungen}\Parameter{Name} + \Macro{ProvideSectionCommand}\OParameter{Einstellungen}\Parameter{Name} +\end{Declaration} +Diese\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Anweisungen dienen dazu, einen neuen Gliederungsbefehl +\Macro{\PName{Name}} zu definieren beziehungsweise einen vorhandenen +Gliederungsbefehl \Macro{\PName{Name}} zu verändern. Dazu werden über das +optionale Argument \PName{Einstellungen} vorgenommen. Die +\PName{Einstellungen} sind dabei eine durch Komma separierte Liste von +\PName{Schlüssel}=\PName{Wert}-Zuweisungen. Neben den vom Stil der Überschrift +unabhängigen Eigenschaften, die +\autoref{tab:maincls-experts.declaresection.keys}, +\autopageref{tab:maincls-experts.declaresection.keys} zu entnehmen sind, gibt +es auch Eigenschaften, die vom jeweiligen Stil abhängig sind. Derzeit stehen +die folgenden Stile zur Verfügung: +\begin{description}\setkomafont{descriptionlabel}{} +\item[\PValue{chapter}] \ChangedAt{v3.18}{\Class{scrbook}\and + \Class{scrreprt}}ist der Stil\textnote{Gliederungsstil + \PValue{chapter}}\Index{Gliederung>Stil>~\PValue{chapter}} für + Kapitelüberschriften. Dieser Stil wird in der Voreinstellung für + \DescRef{maincls.cmd.chapter}\IndexCmd{chapter} und indirekt für + \DescRef{maincls.cmd.addchap}\IndexCmd{addchap} verwendet. Neue + Überschriften in diesem Stil können definiert werden, haben dann aber nicht + automatisch auch eine \Macro{add\dots}-Variante. Für die Konfiguration der + vorhandenen oder neuer Überschriften stehen zusätzlich die Eigenschaften aus + \autoref{tab:maincls-experts.declarechapterstyle.keys}, + \autopageref{tab:maincls-experts.declarechapterstyle.keys} zur + Verfügung. Die\textnote{Achtung!} Anweisung \DescRef{maincls.cmd.addchap} + wird ebenso wie die Sternformen automatisch zusammen mit + \DescRef{maincls.cmd.chapter} umkonfiguriert und kann nicht unabhängig davon + verändert werden. Es ist zu beachten, dass dieser Stil von + \Class{scrartcl}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} nicht + bereitgestellt wird. +\item[\PValue{part}] \ChangedAt{v3.18}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}}ist der + Stil\textnote{Gliederungsstil + \PValue{part}}\Index{Gliederung>Stil>~\PValue{part}} für + Teileüberschriften. Dieser Stil wird in der Voreinstellung für + \DescRef{maincls.cmd.part}\IndexCmd{part} und indirekt für + \DescRef{maincls.cmd.addpart}\IndexCmd{addpart} verwendet. Neue + Überschriften in diesem Stil können definiert werden, haben dann aber nicht + automatisch auch eine \Macro{add\dots}-Variante. Für die Konfiguration der + vorhandenen oder neuer Überschriften stehen zusätzlich die Eigenschaften aus + \autoref{tab:maincls-experts.declarepartstyle.keys}, + \autopageref{tab:maincls-experts.declarepartstyle.keys} zur + Verfügung. Die\textnote{Achtung!} Anweisung \DescRef{maincls.cmd.addpart} + wird ebenso wie die Sternformen automatisch zusammen mit + \DescRef{maincls.cmd.part} umkonfiguriert und kann nicht unabhängig davon + verändert werden. +\item[\PValue{section}] ist der Stil\textnote{Gliederungsstil + \PValue{section}}\Index{Gliederung>Stil>~\PValue{section}} für + Abschnittsüberschriften und tieferer Ebenen. Dieser Stil wird derzeit sowohl + für \DescRef{maincls.cmd.section}\IndexCmd{section}, + \DescRef{maincls.cmd.subsection}\IndexCmd{subsection}, + \DescRef{maincls.cmd.subsubsection}\IndexCmd{subsubsection} als auch + \DescRef{maincls.cmd.paragraph}\IndexCmd{paragraph} und + \DescRef{maincls.cmd.subparagraph}\IndexCmd{subparagraph} verwendet. Neue + Überschriften in diesem Stil können definiert werden. Für die Konfiguration + der vorhandenen oder neuer Überschriften stehen zusätzlich die Eigenschaften + aus \autoref{tab:maincls-experts.declaresectionstyle.keys}, + \autopageref{tab:maincls-experts.declaresectionstyle.keys} zur + Verfügung. Bei\ChangedAt{v3.24}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} der Neudefinition sind die \PName{Schlüssel} + \PValue{style}, \PValue{afterskip}, \PValue{beforeskip} und \PValue{level} + zwingend. Die \PName{Schlüssel} + \PValue{afterindent}\ChangedAt{v3.26}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}}, \PValue{font}, \PValue{indent} und + \PValue{runin} sind empfohlen. \PValue{tocindent} und \PValue{tocnumwidth} + können abhängig vom Namen der Gliederungsebene ebenfalls zwingend sein. Das + gilt auch, falls ein Befehl, der bisher kein Gliederungsbefehl war, mit + \Macro{RedeclareSectionCommand} zu einem Gliederungsbefehl umdefiniert + wird. Die\textnote{Achtung!} Anweisung \Macro{addsec} wird ebenso wie die + Sternformen zusammen mit \DescRef{maincls.cmd.section} umkonfiguriert und + kann nicht unabhängig davon verändert werden. +\end{description} +Bei der Definition eines Gliederungsbefehls wird ein gleichnamiges Element +angelegt, falls es noch nicht existiert. Bei \PValue{chapter} und +\PValue{part} werden ebenso Elemente für die Präfixzeile erzeugt. Die +Schrifteinstellung der Elemente kann mit \DescRef{maincls.cmd.setkomafont} und +\DescRef{maincls.cmd.addtokomafont} (siehe \autoref{sec:maincls.textmarkup}, +\DescPageRef{maincls.cmd.setkomafont}) geändert werden. + +\begin{table} + \caption[{Stil unabhängige Eigenschaften bei der Deklaration von + Gliederungsbefehlen}]{Mögliche vom Stil der Überschrift unabhängige + \PName{Schlüssel} und \PName{Werte} für die \PName{Eigenschaften} bei der + Deklaration von Gliederungsbefehlen}% + \label{tab:maincls-experts.declaresection.keys}% + \begin{tabularx}{\linewidth}{llX} + \toprule + \PName{Schlüssel} + & \PName{Wert} + & Bedeutung \\ + \midrule + \PValue{counterwithin} + & \PName{Zählername} + & Der zur Gliederungsebene gehörende Zähler soll vom als Wert angegebenen + Zähler abhängig sein. Wird \PName{Zählername} über \Macro{stepcounter} + oder \Macro{refstepcounter} erhöht, so wird der zur Gliederungsebene + gehörende Zähler auf 0 zurückgesetzt. Darüber hinaus wird + \Macro{the\PName{Zählername}}, gefolgt von einem Punkt in der Ausgabe + des zur Gliederungsebene gehörenden Zählers vorangestellt.\\ + \PValue{counterwithout}% + \ChangedAt{v3.19}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{Zählername} + & Hebt eine früher vorgenommene \PValue{counterwithin}-Einstellung auf und + ist daher nur bei Änderung vorhandener Gliederungsbefehle sinnvoll.\\ + \PValue{expandtopt} + & \PName{Schalter} + & Ist dieser Schalter aktiv, so werden alle in den \PName{Einstellungen} + nachfolgend angegebenen Werte für Längen vollständig expandiert, + ausgewertet und in \texttt{pt} umgerechnet gespeichert. Ist der + Schalter nicht aktiv, so werden alle nachfolgend angegebenen + Werte für Längen nur testweise expandiert und ausgewertet, aber + lediglich expandiert gespeichert. Es werden die Werte für einfache + Schalter aus \autoref{tab:truefalseswitch}, + \autopageref{tab:truefalseswitch} verstanden.\\ + \PValue{level} + & \PName{Ganzzahl} + & Nummerischer Wert der Gliederungsebene (siehe Zähler + \DescRef{maincls.counter.secnumdepth}, \autoref{sec:maincls.structure}, + \DescPageRef{maincls.counter.secnumdepth}); der Wert sollte eindeutig + sein und ist für neue Ebenen zwingend.\\ + \PValue{style} + & \PName{Name} + & Legt den Stil der Überschrift fest und ist für neue Ebenen zwingend.\\ + \PValue{tocstyle}% + \ChangedAt{v3.20}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{Name} + & Legt den Stil des zur Überschrift gehörenden Verzeichniseintrags fest. + Es können alle bisher definierten Verzeichniseintragsstile (siehe + \autoref{sec:tocbasic.tocstyle}) verwendet werden. Ein leerer + \PName{Name} verhindert die Umdefinierung des Befehls + \Macro{l@\dots} für die Verzeichniseinträge.\\ + \PValue{toc\PName{Option}}% + \ChangedAt{v3.20}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{Wert} + & Weitere Optionen in Abhängigkeit vom via \Option{tocstyle} gewählten + Verzeichniseintragsstil. Siehe dazu \autoref{sec:tocbasic.tocstyle} ab + \autopageref{sec:tocbasic.tocstyle}. Für die von + \hyperref[cha:tocbasic]{\Package{tocbasic}} vordefinierten + Verzeichniseintragsstile finden sich die als \PName{Option} verwendbaren + Attribute in \autoref{tab:tocbasic.tocstyle.attributes}, ab + \autopageref{tab:tocbasic.tocstyle.attributes}.\\ + % \PValue{tocindent} + % & \PName{Länge} + % & Der horizontale Einzug des zum Gliederungsbefehls gehörenden + % Eintrags ins Inhaltsverzeichnis, falls ein solcher abhängig von + % \DescRef{maincls.counter.tocdepth} (siehe \autoref{sec:maincls.toc}, + % \DescPageRef{maincls.counter.tocdepth}) erzeugt wird.\\ + % \PValue{toclevel} + % & \PName{Ganzzahl} + % & Die Ebene des zum Gliederungsbefehl gehörenden Eintrags ins + % Inhaltsverzeichnis, falls diese von \PValue{level} abweichen soll + % (siehe auch \DescRef{maincls.counter.tocdepth} in + % \autoref{sec:maincls.toc}, \DescPageRef{maincls.counter.tocdepth}). \\ + % PValue{tocnumwidth} + % & \PName{Länge} + % & Die Breite, die für die Gliederungsnummer im zum Gliederungsbefehl + % gehörenden Eintrag ins Inhaltsverzeichnis reserviert wird.\\ + \bottomrule + \end{tabularx} +\end{table} + +\begin{table} + \caption[{Eigenschaften des Stils \PValue{section} bei der Deklaration von + Gliederungsbefehlen}]{Zusätzliche \PName{Schlüssel} und \PName{Werte} für + die \PName{Eigenschaften} bei der Deklaration von Gliederungsbefehlen des + Stils \PValue{section}\Index{Gliederung>Stil>~\PValue{section}}}% + \label{tab:maincls-experts.declaresectionstyle.keys}% + \begin{tabularx}{\linewidth}{llX} + \toprule + \PName{Schlüssel} & \PName{Wert} & Bedeutung \\ + \midrule + \PValue{afterindent}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{Schalter} + & Es wird bestimmt, ob auf die erste Zeile nach einer freistehenden + Überschrift (siehe \PValue{runin}) der aktuelle Absatzeinzug angewendet + wird. Bei der Voreinstellung \PValue{bysign} bestimmt das Vorzeichen von + \PValue{beforeskip} das Verhalten. Ein negativer Wert für + \PValue{beforeskip} bewirkt dann, dass der Absatzeinzug entfällt. Mit + den Werten für einfache Schalter (siehe \autoref{tab:truefalseswitch}, + \autopageref{tab:truefalseswitch}) kann die Anwendung des aktuellen + Absatzeinzugs explizit aktiviert oder deaktiviert werden.\\ + \PValue{afterskip} + & \PName{Länge} + & Im Fall einer Spitzmarke (siehe \PValue{runin}) ist der Betrag der + \PName{Länge} der horizontale Abstand nach der Überschrift. Es + wird in diesem Fall also immer ein positiver Abstand eingefügt. Im Fall + einer freistehenden Überschrift ist \PName{Länge} der vertikale Abstand + nach der Überschrift. Ist \OptionValue{runin}{bysign}, so + führt ein positiver Wert zu einer freistehenden Überschrift, während + ein negativer Wert oder Null zu einer Spitzmarke führt.\\ + \PValue{beforeskip} + & \PName{Länge} + & Gibt den vertikalen Abstand vor der Überschrift an. Ist + \OptionValue{afterindent}{bysign}, so wird für den Abstand der Betrag + von \PName{Länge} verwendet, es wird also trotzdem ein positiver + Abstand eingefügt. Negative Werte bedeuten in diesem Fall, dass ein + Absatzeinzug nach der Überschrift entfällt.\\ + \PValue{font} + & \PName{Befehle} + & Die Schrifteinstellungen, die zusätzlich zum Element + \DescRef{maincls.fontelement.disposition} bei der Ausgabe der + Überschrift verwendet werden sollen. Hier sind alle \PName{Befehle} + erlaubt, die auch über \DescRef{maincls.cmd.setkomafont} und + \DescRef{maincls.cmd.addtokomafont} für das Element des + Gliederungsbefehls erlaubt sind.\\ + \PValue{indent} + & \PName{Länge} + & Einzug vom linken Rand vor der Ausgabe der Nummer und des Textes + der Überschrift.\\ + \PValue{runin}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{Schalter} + & Es wird bestimmt, ob die Überschrift als Spitzmarke\iffree{ (am + Zeilenanfang)}{} oder freistehend gesetzt wird. \iffree{}{Bei einer + Spitzmarke schließt sich der nachfolgende Text direkt an die + Überschrift an, während bei einer freistehenden Überschrift erst noch + ein Absatz und ein vertikaler Abstand (siehe \PValue{afterskip}) + folgt. }% + Bei der Voreinstellung \PValue{bysign} bestimmt das Vorzeichen von + \PValue{afterskip} das Verhalten. Ein positiver Wert für + \PValue{afterskip} bewirkt dann eine freistehende Überschrift. + Darüber hinaus kann mit den Werten für einfache Schalter (siehe + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}) + eine Spitzmarke explizit aktiviert oder deaktiviert werden.\\ + \bottomrule + \end{tabularx} +\end{table} + +\begin{table} + \caption[{Eigenschaften des Stils \PValue{chapter} bei der Konfiguration von + Gliederungsbefehlen}]{Zusätzliche \PName{Schlüssel} und \PName{Werte} für + die \PName{Eigenschaften} bei der Konfiguration von Gliederungsbefehlen des + Stils \PValue{chapter}\Index{Gliederung>Stil>~\PValue{chapter}}}% + \label{tab:maincls-experts.declarechapterstyle.keys}% + \begin{tabularx}{\linewidth}{llX} + \toprule + \PName{Schlüssel} & \PName{Wert} & Bedeutung \\ + \midrule + \PValue{afterindent}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}}% + & \PName{Schalter} + & Es wird bestimmt, ob auf die erste Zeile nach der Überschrift der + aktuelle Absatzeinzug angewendet wird. Bei der Voreinstellung + \PValue{bysign} bestimmt das Vorzeichen von \PValue{beforeskip} das + Verhalten. Ein negativer Wert für \PValue{beforeskip} bewirkt dann, dass + der Absatzeinzug entfällt. Mit den Werten für einfache Schalter (siehe + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}) kann + die Anwendung des aktuellen Absatzeinzugs explizit aktiviert oder + deaktiviert werden.\\ + \PValue{afterskip}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}}% + & \PName{Länge} + & Gibt den vertikalen Abstand nach der Überschrift an.\\ + \PValue{beforeskip} + & \PName{Länge} + & Gibt den vertikalen Abstand vor der Überschrift an. Ist + \OptionValue{afterindent}{bysign}, so wird für den Abstand der Betrag + von \PName{Länge} verwendet, es wird also trotzdem ein positiver + Abstand eingefügt. Negative Werte bedeuten in diesem Fall, dass ein + Absatzeinzug nach der Überschrift entfällt.\\ + \PValue{font} + & \PName{Befehle} + & Die Schrifteinstellungen, die zusätzlich zum Element + \DescRef{maincls.fontelement.disposition} bei der Ausgabe der + Überschrift verwendet werden sollen. Hier sind alle \PName{Befehle} + erlaubt, die auch über \DescRef{maincls.cmd.setkomafont} und + \DescRef{maincls.cmd.addtokomafont} für das Element des + Gliederungsbefehls erlaubt sind.\\ + \PValue{innerskip} + & \PName{Länge} + & Der vertikale Abstand zwischen Präfixzeile und Text der + Überschrift, falls eine Präfixzeile verwendet wird.\\ + \PValue{pagestyle} + & \PName{Seitenstil} + & Der Name des Seitenstils, der für die Seite mit der Überschrift + verwendet werden soll. Es findet keine Überprüfung statt, ob der + angegebene \PName{Seitenstil} gültig ist. Fehlerhafte Angaben führen + daher zu Fehlermeldungen bei Verwendung des Gliederungsbefehls.\\ + \PValue{prefixfont} + & \PName{Befehle} + & Die Schrifteinstellungen, die zusätzlich zum Element + \DescRef{maincls.fontelement.disposition} und dem Element des + Gliederungsbefehls bei der Ausgabe einer Präfixzeile in der Überschrift + verwendet werden sollen. Hier sind alle \PName{Befehle} erlaubt, die + auch über \DescRef{maincls.cmd.setkomafont} und + \DescRef{maincls.cmd.addtokomafont}für das Element der Präfixzeile des + Gliederungsbefehls erlaubt sind.\\ + \bottomrule + \end{tabularx} +\end{table} + +\begin{table} + \caption[{Eigenschaften des Stils \PValue{part} bei der Konfiguration von + Gliederungsbefehlen}]{Zusätzliche \PName{Schlüssel} und \PName{Werte} für + die \PName{Eigenschaften} bei der Konfiguration von Gliederungsbefehlen des + Stils \PValue{part}\Index{Gliederung>Stil>~\PValue{part}}}% + \label{tab:maincls-experts.declarepartstyle.keys}% + \begin{tabularx}{\linewidth}{llX} + \toprule + \PName{Schlüssel} + & \PName{Wert} + & Bedeutung \\ + \midrule + \PValue{afterindent}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{Schalter} + & Es wird bestimmt, ob auf die erste Zeile nach der + Überschrift der aktuelle Absatzeinzug angewendet + wird. Bei der Einstellung \PValue{bysign} bestimmt das Vorzeichen von + \PValue{beforeskip} das Verhalten. Ein negativer Wert für + \PValue{beforeskip} bewirkt dann, dass der Absatzeinzug entfällt. Mit + den Werten für einfache Schalter (siehe \autoref{tab:truefalseswitch}, + \autopageref{tab:truefalseswitch}) kann die Anwendung des aktuellen + Absatzeinzugs explizit aktiviert oder deaktiviert werden. Aus + Kompatibilitätsgründen ist die Voreinstellung + für \Class{scrartcl} \PValue{false}, für \Class{scrbook} und + \Class{scrreprt} \PValue{true}.\\ + \PValue{afterskip} + & \PName{Länge} + & Der Betrag gibt den vertikalen Abstand nach der Überschrift an.\\ + \PValue{beforeskip} + & \PName{Länge} + & Gibt den vertikalen Abstand vor der Überschrift an. Ist + \OptionValue{afterindent}{bysign}, so wird für den Abstand der Betrag + von \PName{Länge} verwendet, es wird also trotzdem ein positiver + Abstand eingefügt. Negative Werte bedeuten in diesem Fall, dass ein + Absatzeinzug nach der Überschrift entfällt.\\ + \PValue{font} + & \PName{Befehle} + & Die Schrifteinstellungen, die zusätzlich zum Element + \DescRef{maincls.fontelement.disposition} bei der Ausgabe der + Überschrift verwendet werden sollen. Hier sind alle \PName{Befehle} + erlaubt, die auch über \DescRef{maincls.cmd.setkomafont} und + \DescRef{maincls.cmd.addtokomafont} für das Element des + Gliederungsbefehls erlaubt sind.\\ + \PValue{innerskip} + & \PName{Länge} + & %\OnlyAt{\Class{scrbook}\and \Class{scrreprt}}% + Der vertikale Abstand zwischen Präfixzeile und Text der Überschrift bei + \Class{scrbook} und \Class{scrreprt}.\\ + \PValue{pagestyle} + & \PName{Seitenstil} + & %\OnlyAt{\Class{scrbook}\and \Class{scrreprt}}% + Der Name des Seitenstils, der für die Seite mit der Überschrift + verwendet werden soll. Es findet keine Überprüfung statt, ob der + angegebene \PName{Seitenstil} gültig ist. Fehlerhafte Angaben führen + daher zu Fehlermeldungen bei Verwendung des Gliederungsbefehls. Diese + Möglichkeit existiert nur bei \Class{scrbook} und \Class{scrreprt}. \\ + \PValue{prefixfont} + & \PName{Befehle} + & Die Schrifteinstellungen, die zusätzlich zum Element + \DescRef{maincls.fontelement.disposition} und dem Element des + Gliederungsbefehls bei der Ausgabe einer Präfixzeile in der Überschrift + verwendet werden sollen. Hier sind alle \PName{Befehle} erlaubt, die + auch über \DescRef{maincls.cmd.setkomafont} und + \DescRef{maincls.cmd.addtokomafont} für das Element der Präfixzeile des + Gliederungsbefehls erlaubt sind.\\ + \bottomrule + \end{tabularx} +\end{table} + +\Macro{DeclareNewSectionCommand} dient der Definition eines neuen +Gliederungsbefehls. Ist derselbe \PName{Name} von \TeX{} bereits anderweitig +belegt, so wird ein Fehler ausgegeben und es findet keine Umdefinierung +statt. + +\Macro{ProvideSectionSommand} verhält sich ähnlich, gibt aber keine +Fehlermeldung aus. + +\Macro{RedeclareSectionCommand} kann hingegen nur verwendet werden, um eine +existierende Anweisung zu einem Gliederungsbefehl mit den angegebenen +\PName{Eigenschaften} zu ändern. Dabei wird nicht überprüft, ob +\Macro{\PName{Name}} bereits zuvor ein Gliederungsbefehl war. Es muss nur ein +von \TeX{} bereits belegter \PName{Name} sein. + +Bei \Macro{DeclareSectionCommand} findet keinerlei Überprüfung statt, ob +\PName{Name} von \TeX{} bereits anderweitig belegt ist. Stattdessen wird der +Gliederungsbefehl \Macro{\PName{Name}} unbedingt entsprechend der angegebenen +\PName{Eigenschaften} definiert. + +Zu jeder Gliederungsanweisung gehört außerdem ein Zähler: \PName{Name}, der +bei Bedarf von allen vier Befehlen mit \Macro{newcounter} neu angelegt +wird. Dasselbe gilt für die Ausgabe des Zählers: \Macro{the\PName{Name}}, die +Formatierung des Zählers: \Macro{\PName{Name}format}, die Anweisung zur +Erstellung eines Kolumnentitels: \Macro{\PName{Name}mark}, die dabei +verwendete Formatierung des Zählers: \Macro{\PName{Name}markformat}, die oben +erwähnten Elemente: \FontElement{\PName{Name}} und gegebenenfalls +\FontElement{\PName{Name}prefix}, die nummerische Gliederungsebene: +\Macro{\PName{Name}numdepth}. Die Anweisung \Macro{\PName{Name}mark} wird +gegebenenfalls so vordefiniert, dass kein Kolumnentitel erzeugt wird. Die +Ausgabe des Zählers, \Macro{\PName{the}mark}, wird als arabische Zahl +vordefiniert. Wird über den \PName{Schlüssel} \PValue{counterwithin} der +Zähler als von einem anderen Zähler abhängig definiert, so wird in der Ausgabe +dieser andere Zähler mit einem Punkt getrennt vorangestellt. + +Neben\ChangedAt[2016/03]{v3.20}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} dem Gliederungsbefehl selbst wird auch ein Befehl für +einen Eintrag ins Inhaltsverzeichnis definiert. Dafür wird auf das Paket +\hyperref[cha:tocbasic]{\Package{tocbasic}}% +\important{\hyperref[cha:tocbasic]{\Package{tocbasic}}}\IndexPackage{tocbasic} +zurückgegriffen. Der Stil des Verzeichniseintrags wird über die Eigenschaft +\PValue{tocstyle} festgelegt. Wird hier mit \OptionValue{tocstyle}{} oder +\OptionValue{tocstyle}{\{\}} ein leerer \PName{Name} angegeben, so erfolgt +keine Umdefinierung des Befehls für den Verzeichniseintrag. Das ist +beispielsweise dann wichtig, wenn Sie ein zusätzliches Paket zur Modifikation +des Inhaltsverzeichnisses verwenden. Fehlt die Eigenschaft \PValue{tocstyle}, +so wird bei der Umdefinierung der bisherige Stil erneut verwendet. + +Unterschiedliche\ChangedAt[2016/03]{v3.20}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} Stile für Verzeichniseinträge haben +unterschiedliche zusätzliche Eigenschaften. Diese können, mit dem Präfix +\PValue{toc} versehen, direkt mit angegeben werden. So kann beispielsweise die +Ebene des Verzeichniseintrags, die bei allen von den \KOMAScript-Klassen und +\hyperref[cha:tocbasic]{\Package{tocbasic}} definierten Stilen als Eigenschaft +\PValue{level} bekannt ist, mit \PValue{toclevel} gesetzt werden, der Einzug +des Eintrags, \PValue{indent}, über \PValue{tocindent} und die für die Nummer +reservierte Breite, \PValue{numwidth}, mit \PValue{tocnumwidth}. Für weitere +Eigenschaften der Verzeichniseinträge siehe \autoref{sec:tocbasic.tocstyle} ab +Seite \autopageref{sec:tocbasic.tocstyle}. + +\begin{Example} + Aus unerfindlichen Gründen sollen die Überschriften von + \DescRef{maincls.cmd.paragraph} nicht mehr als Spitzmarken, sondern als + Überschriften ähnlich \DescRef{maincls.cmd.subsubsection} umdefiniert + werden. Dabei soll über der Überschrift ein kleiner Abstand von 10\,pt und + unter der Überschrift kein zusätzlicher Abstand eingefügt werden. Das wäre + bereits mit +\begin{lstcode} + \RedeclareSectionCommand[% + beforeskip=-10pt,% + afterskip=1sp% + ]{paragraph} +\end{lstcode} + möglich. Durch den negativen Wert bei \PValue{beforeskip} wird der vertikale + Abstand über der Überschrift erzeugt und gleichzeitig der Einzug des ersten + Abschnitts nach der Überschrift abgeschaltet. Obwohl eigentlich nach der + Überschrift kein vertikaler Abstand gewünscht wird, wurde als Wert hier + 1\,sp angegeben. Der Grund ist einfach: Einen Wert von 0\,pt betrachtet + \LaTeX{} an dieser Stelle nicht als positiven Wert und erzeugt damit eine + Überschrift in der Form einer Spitzmarke. Der kleinste positive Wert ist + 1\,sp. + + In der Regel ist es für den vertikalen Ausgleich (siehe + \DescRef{maincls.cmd.flushbottom}, \autoref{sec:maincls.typearea}, + \DescPageRef{maincls.cmd.flushbottom}) besser, wenn man die Abstände + mit etwas Spielraum, dem sogenannten Leim, versieht: +\begin{lstcode} + \RedeclareSectionCommand[% + beforeskip=-10pt plus -2pt minus -1pt,% + afterskip=1sp plus -1sp minus 1sp% + ]{paragraph} +\end{lstcode} + Dabei ist zu beachten, dass natürlich auch der Leim bei der Anwendung als + vertikaler Abstand das Vorzeichen wechselt, also bei \PValue{beforeskip} im + Beispiel negativ angegeben wird. Gleichzeitig wurde die Gelegenheit genutzt, + über den Leim bei \PValue{afterskip} dafür zu sorgen, dass der Abstand dort + gegebenenfalls tatsächlich bis auf 0 schrumpft. +\end{Example} + +Dass im Beispiel nur die Schlüssel \PValue{beforeskip} und \PValue{afterskip} +verwendet werden mussten, liegt daran, dass seit \KOMAScript{} 3.15 +\DescRef{maincls.cmd.paragraph} intern bereits mit +\Macro{DeclareSectionCommand} definiert wird und daher die übrigen +Einstellungen unverändert übernommen werden können. Die Originaldefinition von +\DescRef{maincls.cmd.paragraph} entspricht bei \Class{scrartcl}: +\begin{lstcode} + \DeclareSectionCommand[% + level=4, + indent=0pt, + beforeskip=3.25ex plus 1ex minus .2ex, + afterskip=-1em, + font={}, + tocindent=7em, + tocnumwidth=4.1em, + counterwithin=subsubsection + ]{paragraph} +\end{lstcode} +Bei \Class{scrreprt} und \Class{scrbook} werden teilweise abweichende Werte +verwendet. + +Für \DescRef{maincls.cmd.chapter} sind einige Einstellungen für die +Überschriften von Option \DescRef{maincls.option.headings} (siehe +\autoref{sec:maincls.structure}, \DescPageRef{maincls.option.headings}) +abhängig. Diese abhängigen Einstellungen sind in +\autoref{tab:maincls.chapter.skips} zu finden. Eine Übersicht über alle +Voreinstellungen bietet \autoref{tab:maincls.section.defaults}. Es ist zu +beachten, dass dabei \PValue{1ex} und \Length{baselineskip} von der +voreingestellten Größe der Überschrift beziehungsweise des +Inhaltsverzeichniseintrags abhängig sind. Weitere +Voreinstellungen\ChangedAt[2016/03]{v3.20}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} für die Stile der Verzeichniseinträge +sind \autoref{sec:tocbasic.tocstyle}% +\important{\hyperref[cha:tocbasic]{\Package{tocbasic}}} ab +\autopageref{sec:tocbasic.tocstyle} zu entnehmen. + +\begin{table} + %\centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + % \caption + \begin{captionbeside} + [{Voreinstellungen für die Kapitelüberschriften von \Class{scrbook} + und \Class{scrreprt} in Abhängigkeit von Option + \DescRef{maincls.option.headings}}] + {\hskip 0pt plus .5em + Voreinstellungen für die Kapitelüberschriften von \Class{scrbook} + und \Class{scrreprt} in Abhängigkeit von Option + \DescRef{maincls.option.headings}% + \label{tab:maincls.chapter.skips}} + [l] + \begin{tabular}[t]{ll} + \multicolumn{2}{@{}l}{\bfseries Mit \OptionValueRef{maincls}{headings}{big}:}\\ + \toprule + Einstellung & voreingestellter Wert \\ + \midrule + \PValue{afterskip} + & \PValue{1.725\Length{baselineskip} plus .115\Length{baselineskip}} \\ + & \PValue{\phantom{1.725\Length{baselineskip}} + minus .192\Length{baselineskip}} \\ + \PValue{beforeskip} + & \PValue{-3.3\Length{baselineskip}-\Length{parskip}} \\ + \PValue{font} & \Macro{huge} \\ + \bottomrule\\ + \multicolumn{2}{@{}l}{\bfseries Mit \OptionValueRef{maincls}{headings}{normal}:}\\ + \toprule + Einstellung & voreingestellter Wert \\ + \midrule + \PValue{afterskip} + & \PValue{1.5\Length{baselineskip} plus .1\Length{baselineskip}} \\ + & \PValue{\phantom{1.5\Length{baselineskip}} + minus .167\Length{baselineskip}} \\ + \PValue{beforeskip} + & \PValue{-3\Length{baselineskip}-\Length{parskip}} \\ + \PValue{font} & \Macro{LARGE} \\ + \bottomrule\\ + \multicolumn{2}{@{}l}{\bfseries Mit \OptionValueRef{maincls}{headings}{small}:}\\ + \toprule + Einstellung & voreingestellter Wert \\ + \midrule + \PValue{afterskip} + & \PValue{1.35\Length{baselineskip} plus .09\Length{baselineskip}} \\ + & \PValue{\phantom{1.35\Length{baselineskip}} + minus .15\Length{baselineskip}} \\ + \PValue{beforeskip} + & \PValue{-2.8\Length{baselineskip}-\Length{parskip}} \\ + \PValue{font} & \Macro{Large} \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} + +%begin{table} +% \centering + \begin{longtable}{@{}p{\columnwidth}@{}} + \caption{Voreinstellungen für die Formatierung der Überschriften von + \Class{scrbook} und \Class{scrreprt}}% + \label{tab:maincls.section.defaults}\\ + \endfirsthead + \caption[]{Voreinstellungen für die Formatierung der Überschriften von + \Class{scrbook} und + \Class{scrreprt} \emph{(Fortsetzung)}}\\ + \addlinespace[-\normalbaselineskip] \endhead + \raggedleft\dots\\ + \endfoot \endlastfoot + \DescRef{maincls.cmd.part}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule + \PValue{afterskip} & \PValue{0pt plus 1fil} \\ + \PValue{beforeskip} & \PValue{0pt plus 1fil + \Length{baselineskip}} \\ + \PValue{font} & siehe \DescRef{maincls.fontelement.part}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{innerskip} & \PValue{20pt} \\ + \PValue{level} & -1 \\ + \PValue{prefixfont} & siehe + \DescRef{maincls.fontelement.partnumber}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{tocindent} & \PValue{0pt} \\ + \PValue{toclevel} & -1 \\ + \PValue{tocnumwidth} & \PValue{2em} \\ + \PValue{tocstyle} & \PValue{part} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.chapter}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule + \PValue{afterskip} & siehe \autoref{tab:maincls.chapter.skips} \\ + \PValue{beforeskip} & siehe \autoref{tab:maincls.chapter.skips} \\ + \PValue{font} & siehe \DescRef{maincls.fontelement.chapter}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{innerskip} & \PValue{0.5\Length{baselineskip}} \\ + \PValue{level} & 0 \\ + \PValue{prefixfont} & siehe + \DescRef{maincls.fontelement.chapterprefix}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{tocindent} & \PValue{0pt} \\ + \PValue{toclevel} & 0 \\ + \PValue{tocnumwidth} & \PValue{1.5em} \\ + \PValue{tocstyle} & \PValue{chapter} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.section}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule + \PValue{afterskip} & \PValue{2.3ex plus .2ex} \\ + \PValue{beforeskip} & \PValue{-3.5ex plus -1ex minus -.2ex} \\ + \PValue{font} & siehe \DescRef{maincls.fontelement.section}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \PValue{0pt} \\ + \PValue{level} & 1 \\ + \PValue{tocindent} & \PValue{1.5em}\\ + \PValue{toclevel} & 1 \\ + \PValue{tocnumwidth} & \PValue{2.3em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.subsection}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule\nopagebreak + \PValue{afterskip} & \PValue{1.5ex plus .2ex} \\ + \PValue{beforeskip} & \PValue{-3.25ex plus -1ex minus -.2ex} \\ + \PValue{font} & siehe + \DescRef{maincls.fontelement.subsection}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \PValue{0pt} \\ + \PValue{level} & 2 \\ + \PValue{tocindent} & \PValue{3.8em}\\ + \PValue{toclevel} & 2 \\ + \PValue{tocnumwidth} & \PValue{3.2em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.subsubsection}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule\nopagebreak + \PValue{afterskip} & \PValue{1.5ex plus .2ex} \\ + \PValue{beforeskip} & \PValue{-3.25ex plus -1ex minus -.2ex} \\ + \PValue{font} & siehe + \DescRef{maincls.fontelement.subsubsection}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \PValue{0pt} \\ + \PValue{level} & 3 \\ + \PValue{tocindent} & \PValue{7.0em}\\ + \PValue{toclevel} & 3 \\ + \PValue{tocnumwidth} & \PValue{4.1em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.paragraph}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule\nopagebreak + \PValue{afterskip} & \PValue{-1em} \\ + \PValue{beforeskip} & \PValue{3.25ex plus 1ex minus .2ex} \\ + \PValue{font} & siehe + \DescRef{maincls.fontelement.paragraph}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \PValue{0pt} \\ + \PValue{level} & 4 \\ + \PValue{tocindent} & \PValue{10em}\\ + \PValue{toclevel} & 4 \\ + \PValue{tocnumwidth} & \PValue{5em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.subparagraph}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule\nopagebreak + \PValue{afterskip} & \PValue{-1em} \\ + \PValue{beforeskip} & \PValue{3.25ex plus 1ex minus .2ex} \\ + \PValue{font} & siehe + \DescRef{maincls.fontelement.subparagraph}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \Macro{scr@parindent} \\ + \PValue{level} & 5 \\ + \PValue{tocindent} & \PValue{12em}\\ + \PValue{toclevel} & 5 \\ + \PValue{tocnumwidth} & \PValue{6em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} + \end{longtable} +%end{table} +Das in den Einstellungen für \DescRef{maincls.cmd.subparagraph} verwendete +interne Makro \Macro{scr@parindent} ist übrigens, der per Option +\DescRef{maincls.option.parskip} oder Befehl +\DescRef{maincls-experts.cmd.setparsizes} eingestellte Absatzeinzug. +\EndIndexGroup + + +\begin{Declaration} + \Macro{DeclareSectionCommands}\OParameter{Einstellungen}% + \Parameter{Namensliste} + \Macro{DeclareNewSectionCommands}\OParameter{Einstellungen}% + \Parameter{Namensliste} + \Macro{RedeclareSectionCommands}\OParameter{Einstellungen}% + \Parameter{Namensliste} + \Macro{ProvideSectionCommands}\OParameter{Einstellungen}% + \Parameter{Namensliste} +\end{Declaration} +Diese\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Anweisungen können gleich eine ganze Reihe von +Gliederungsbefehlen definieren oder ändern. Dabei ist \PName{Namensliste} eine +durch Komma separierte Liste von Namen der Gliederungsbefehle. + +Diese Anweisungen unterscheiden sich in zwei weiteren Punkten von den zuvor +erklärten Anweisungen zur Definition oder Änderung eines einzelnen +Gliederungsbefehls. Zum einen wird im Fehlerfall, also wenn eine Anweisung bei +\Macro{DeclareNewSectionCommands} bereits zuvor existierte oder bei +\Macro{RedeclareSectionCommands} noch nicht existierte, die Definition dennoch +vorgenommen. Ein entsprechender Fehler wird natürlich trotzdem gemeldet. + +Zum anderen gibt es eine weitere Einstellung, +\important{\PValue{increaselevel}}\OptionVName{increaselevel}{Ganzzahl}. +Damit ändert sich die Bedeutung von \PValue{level} und \PValue{toclevel} +(siehe \autoref{tab:maincls-experts.declaresection.keys}, +\autopageref{tab:maincls-experts.declaresection.keys}) dahingehend, dass deren +Werte lediglich als \PName{Einstellungen} des ersten Gliederungsbefehls aus +der \PName{Namensliste} dienen. Für alle weiteren Gliederungsbefehle werden die +Werte von \PValue{level} und \PValue{toclevel} um den Wert von +\PValue{increaselevel} erhöht. Wurde die Einstellung \PValue{increaselevel} +ohne Wertzuweisung verwendet, so wird der Wert 1 angenommen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{chapterheadstartvskip} + \Macro{chapterheadmidvskip} + \Macro{chapterheadendvskip} + \Macro{partheadstartvskip} + \Macro{partheadmidvskip} + \Macro{partheadendvskip} + \Macro{partheademptypage} +\end{Declaration} +Diese\important[i]{\DescRef{maincls.cmd.chapter}\\ + \DescRef{maincls.cmd.part}\\ + \DescRef{maincls.cmd.addchap}\\ + \DescRef{maincls.cmd.addpart}\\ + \DescRef{maincls.cmd.chapter*}\\ + \DescRef{maincls.cmd.part*}\\ + \DescRef{maincls.cmd.addchap*}\\ + \DescRef{maincls.cmd.addpart*}} Anweisungen werden innerhalb von +Überschriften der zuvor erklärten Stile \PValue{chapter} und \PValue{part} und +damit für die Definition der Überschriften +\DescRef{maincls.cmd.chapter}\IndexCmd{chapter}, +\DescRef{maincls.cmd.part}\IndexCmd{part}, +\DescRef{maincls.cmd.addchap}\IndexCmd{addchap}, +\DescRef{maincls.cmd.addpart}\IndexCmd{addpart} und deren Sternvarianten +\DescRef{maincls.cmd.chapter*}\IndexCmd{chapter*}, +\DescRef{maincls.cmd.part*}\IndexCmd{part*}, +\DescRef{maincls.cmd.addchap*}\IndexCmd{addchap*}, +\DescRef{maincls.cmd.addpart*}\IndexCmd{addpart*} verwendet. Dabei ist +\Macro{chapterheadstartvskip} eine Anweisung, die dafür vorgesehen ist, vor +der Kapitelüberschrift einen vertikalen Abstand einzufügen. Entsprechend ist +\Macro{chapterheadendvskip} eine Anweisung, die dafür vorgesehen ist, nach der +Kapitelüberschrift einen vertikalen Abstand +einzufügen. Bei\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}} +Kapitelüberschriften mit eigener Nummernzeile (siehe Option +\DescRef{maincls.option.chapterprefix} in \autoref{sec:maincls.structure}, +\DescPageRef{maincls.option.chapterprefix}) wird zwischen der Nummernzeile und +der eigentlichen Überschrift außerdem \Macro{chapterheadmidvskip} ausgeführt. + +Für das Einfügen der vertikalen Abstände über und unter Teile-Überschriften +sind die Anweisungen \Macro{partheadstartvskip} und \Macro{partheadendvskip} +vorgesehen. Dabei wird ein Seitenumbruch als Teil des vertikalen Abstandes +interpretiert. Ein solcher Seitenumbruch ist in der Voreinstellung sowohl bei +\Class{scrbook}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} als auch +\Class{scrreprt} in der Definition von \Macro{partheadendvskip} enthalten. Die +Anweisung \Macro{partheadmidvskip} ist für den Abstand zwischen der +Teile-Nummer und dem Text der Teile-Überschrift vorgesehen. Die Anweisung +\Macro{partheademptypage}\ChangedAt{v3.02}{\Class{scrbook}\and + \Class{scrreprt}} wird bei \Class{scrbook} und \Class{scrreprt} +gegebenenfalls für die leere Seite nach der Überschrift verwendet. + +Die Voreinstellungen der sieben Anweisungen sind seit +\KOMAScript~3.15\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} von der Einstellung von Option +\DescRef{maincls.option.headings} (siehe \autoref{sec:maincls.structure}, +\DescPageRef{maincls.option.headings}) unabhängig. Die Original-Definitionen +für die Kapitelüberschriften ab +\KOMAScript~3.17\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} entsprechen:\IndexLength{@tempskipa} +\begin{lstcode} + \newcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}} + \newcommand*{\chapterheadmidvskip}{\par\nobreak + \vskip\@tempskipa} + \newcommand*{\chapterheadendvskip}{\vskip\@tempskipa} +\end{lstcode} +Diese werden auch bei jeder Verwendung von Option +\OptionValueRef{maincls}{headings}{big}\IndexOption{headings}, +\OptionValueRef{maincls}{headings}{normal} oder +\OptionValueRef{maincls}{headings}{small} reaktiviert. Als Seiteneffekt haben +diese Optionen also gegebenenfalls nicht nur Auswirkungen auf +Kapitelüberschriften, sondern auf alle Überschriften im Stil \PValue{chapter}. + +Der Stil \PValue{chapter} setzt die interne Länge +\Length{@tempskipa}\IndexLength{@tempskipa} vor Aufruf von +\Macro{chapterheadstartvskip} automatisch auf den Wert, der sich aus der +\DescRef{\LabelBase.cmd.DeclareSectionCommand}-Einstellung% +\IndexCmd{DeclareSectionCommand} \PValue{beforeskip} ergibt. Vor dem Aufruf +von \Macro{chapterheadendvskip} geschieht entsprechendes mit dem Wert, der +sich aus der Einstellung +\PValue{afterskip} ergibt, und vor dem Aufruf von \Macro{chapterheadmidvskip} +mit dem Wert, der sich aus der Einstellung \PValue{innerskip} +ergibt. + +Da die Voreinstellungen für die Abstände von \DescRef{maincls.cmd.part} nicht +von Option \DescRef{maincls.option.headings} abhängen, werden auch die +zugehörigen Anweisungen von dieser Option nicht neu +definiert. Ihre\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Original-Definitionen entsprechen bei \Class{scrbook} und +\Class{scrreprt}: +\begin{lstcode} + \newcommand*{\partheadstartvskip}{% + \null\vskip-\baselineskip\vskip\@tempskipa + } + \newcommand*{\partheadmidvskip}{% + \par\nobreak + \vskip\@tempskipa + } + \newcommand*{\partheadendvskip}{% + \vskip\@tempskipa\newpage + } +\end{lstcode} +und bei \Class{scrartcl}: +\begin{lstcode} + \newcommand*{\partheadstartvskip}{% + \addvspace{\@tempskipa}% + } + \newcommand*{\partheadmidvskip}{% + \par\nobreak + } + \newcommand*{\partheadendvskip}{% + \vskip\@tempskipa + } +\end{lstcode} +Auch hier wird vom Stil \PValue{part} die interne Länge +\Length{@tempskipa}\IndexLength{@tempskipa}\IndexLength{@tempskipa} vor der +Verwendung der Befehle entsprechend der Einstellungen von +\DescRef{\LabelBase.cmd.DeclareSectionCommand}\IndexCmd{DeclareSectionCommand} +gesetzt. + +Wird eine der Anweisungen, die im Original \Length{@tempskipa} für den +vertikalen Abstand verwendet, umdefiniert und sollen die Abstände weiterhin +beispielsweise mit \DescRef{\LabelBase.cmd.RedeclareSectionCommand} +konfigurierbar sein, so sollte man in der neuen Definition ebenfalls +\Length{@tempskipa} verwenden. Da\ChangedAt{v3.17}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} die Abstände über, innerhalb und +unter den Überschriften einfacher mit +\DescRef{\LabelBase.cmd.RedeclareSectionCommand} eingestellt werden können, +wird generell nicht empfohlen, zu diesem Zweck stattdessen die hier +beschriebenen Anweisungen umzudefinieren. Sie sollten für tiefgreifendere +Änderungen reserviert bleiben, die nicht über +\DescRef{\LabelBase.cmd.RedeclareSectionCommand} zu erreichen sind. +Auf\textnote{Beispiel!} \cite{homepage} findet sich dazu ein Beispiel, bei +dem durch Umdefinierung von \Macro{chapterheadstartvskip} und +\Macro{chapterheadendvskip} Linien über und unter der Kapitelüberschrift +gesetzt werden.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{partlineswithprefixformat}% + \Parameter{Ebene}\Parameter{Nummer}\Parameter{Text} +\end{Declaration} +Diese\ChangedAt{v3.25}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Anweisung wird von Überschriften des Stils +\PValue{part}\textnote{Gliederungsstil + \PValue{part}}\Index{Gliederung>Stil>~\PValue{part}} verwendet. Die beiden +Argumente \PName{Nummer} und \PName{Text} sind dabei einschließlich +Einstellung der Fonts für sich bereits fertig formatiert. Letztlich regelt die +Anweisung also die Anordnung der beiden Teile der Überschrift. Bei nicht +nummerierten Überschriften ist \PName{Nummer} ein komplett leeres Argument, +enthält also auch keine Formatierungsanweisungen. + +Vordefiniert ist die Anweisung mit: +\begin{lstcode} + \newcommand{\partlineswithprefixformat}[3]{% + #2#3% + } +\end{lstcode} +bisher eher spartanisch. + +\begin{Example} + Sie wollen die Teile-Überschriften in eine hellblaue Box mit blauer + Umrandung stellen, die nur etwa drei Viertel der Breite des Textbereichs + einnimmt. Hierzu verwenden Sie +\begin{lstcode}[moretexcs={fcolorbox}] + \documentclass{scrbook} + \usepackage{xcolor} + \renewcommand*{\partlineswithprefixformat}[3]{% + \fcolorbox{blue}{blue!25}{% + \parbox{.75\linewidth}{#2#3}% + }% + } + \begin{document} + \part{Umrahmte Teile} + \end{document} +\end{lstcode} + Allerdings fällt Ihnen auf, dass die Überschrift dabei nicht wie sonst + für Teile üblich zentriert wird -- weder die Box selbst noch der Text + innerhalb der Box. + + Die Ursache für die fehlende Zentrierung der Box liegt + darin, dass aufgrund der Änderung das in Argument 3 versteckte Absatzende + nur noch den Absatz innerhalb der Box beendet, aber nicht mehr den Absatz mit + der \Macro{parbox}. Also ergänzen Sie ein \Macro{par} am Ende der Definition. + + Die Ursache der fehlenden Zentrierung innerhalb der Box ist, dass in der + \Macro{parbox}-Anweisung die Ausrichtung von + \DescRef{maincls.cmd.raggedpart} nicht automatisch gültig ist. Daher + ergänzen Sie diese Anweisung innerhalb der Box. + + Mit +\begin{lstcode}[moretexcs={fcolorbox}] + \documentclass{scrbook} + \usepackage{xcolor} + \renewcommand*{\partlineswithprefixformat}[3]{% + \fcolorbox{blue}{blue!25}{% + \parbox{.75\linewidth}{\raggedpart #2#3}% + }% + \par + } + \begin{document} + \part{Umrahmte Teile} + \end{document} +\end{lstcode} + erhalten Sie die gewünschte Formatierung. +\end{Example} + +Wie im Beispiel gezeigt, ist der Anwender bei der Umdefinierung der Anweisung +für einige Dinge selbst verantwortlich. Dazu gehört neben dem Erhalt der +voreingestellten Ausrichtung auch, dass innerhalb der Überschrift kein +Seitenumbruch, beispielsweise an zusätzlich eingefügten Absätzen oder +Abständen, erfolgen kann. Das gezeigte Beispiel ist diesbezüglich +unproblematisch. Nicht nur, dass die beiden Boxen ohnehin keinen Seitenumbruch +erlauben. \KOMAScript{} verändert außerdem \Macro{interlinepenalty} als Teil +von \PName{Text} so, dass darin kein Seitenumbruch stattfinden +darf. Gleichzeitig endet \PName{Text} immer mit einem internen Absatz, +\Macro{@@par}. + +Das Argument \PName{Ebene} wird von +\Macro{partlineswithprefixformat} in der Voreinstellung nicht verwendet und +ist auch im Beispiel nicht erforderlich. Erst wenn der Anwender mehrere +Anweisungen im Stil \PValue{part} definiert und man innerhalb der Definition +nach den Anweisungen unterscheiden will, kann dies über \PName{Ebene} +erfolgen. Dabei ist \PName{Ebene} der vom Namen der Anweisung abgeleitete Name +der Gliederungsebene. Bei \DescRef{maincls.cmd.part}, +\DescRef{maincls.cmd.part*}, \DescRef{maincls.cmd.addpart} und +\DescRef{maincls.cmd.addpart*} ist \PName{Ebene} daher einheitlich +\PValue{part}.% +\EndIndexGroup + +\begin{Declaration} + \Macro{chapterlineswithprefixformat}% + \Parameter{Ebene}\Parameter{Nummer}\Parameter{Text} + \Macro{chapterlinesformat}% + \Parameter{Ebene}\Parameter{Nummer}\Parameter{Text} +\end{Declaration} +Diese\ChangedAt{v3.19}{\Class{scrbook}\and \Class{scrreprt}} Anweisungen +werden von Überschriften des Stils \PValue{chapter}\textnote{Gliederungsstil + \PValue{chapter}}\Index{Gliederung>Stil>~\PValue{chapter}} in Abhängigkeit +von Option \DescRef{maincls.option.chapterprefix}\IndexOption{chapterprefix}% +\textnote{\DescRef{maincls.option.chapterprefix}} (siehe +\autoref{sec:maincls.structure}, \DescPageRef{maincls.option.chapterprefix}) +verwendet. Dabei gibt \Macro{chapterlineswithprefixformat} die Ausgabe bei +aktivierter Option vor. Bei deaktivierter Option +bestimmt dagegen \Macro{chapterlinesformat} die Ausgabe. + +Die beiden Argumente \PName{Nummer} und \PName{Text} sind dabei +einschließlich Einstellung der Fonts für sich bereits fertig +formatiert. Letztlich regeln die Anweisungen also die Anordnung der beiden +Teile der Überschrift. Bei nicht nummerierten Überschriften ist \PName{Nummer} +ein komplett leeres Argument, enthält also auch keine +Formatierungsanweisungen. + +Vordefiniert\textnote{Voreinstellung} sind die beiden Anweisungen mit: +% Umbruchkorrektur bei Aufeinanderfolgen von Code und Beispiel +\begin{lstcode}[belowskip=-1\dp\strutbox plus \dp\strutbox] + \newcommand{\chapterlinesformat}[3]{% + \@hangfrom{#2}{#3}% + } + \newcommand{\chapterlineswithprefixformat}[3]{% + #2#3% + } +\end{lstcode} +%bisher eher spartanisch. + +\begin{Example} + Sie wollen Überschriften im Kapitelstil gelb hinterlegen. Für + Überschriften ohne Präfixzeile definieren Sie daher in der Präambel des + Dokument: +\begin{lstcode}[moretexcs={colorbox}] + \makeatletter + \renewcommand{\chapterlinesformat}[3]{% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth + -2\fboxrule-2\fboxsep}{% + \@hangfrom{#2}#3% + }% + }% + } + \makeatother +\end{lstcode} + und für Überschriften mit Präfixzeile: +\begin{lstcode}[moretexcs={colorbox}] + \renewcommand{\chapterlineswithprefixformat}[3]{% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth + -2\fboxrule-2\fboxsep}{% + #2#3% + }% + }% + } +\end{lstcode} + Allerdings fällt Ihnen nach einiger Zeit auf, dass mit dieser Umdefinierung + die Überschriften wieder im Blocksatz gesetzt werden. Das liegt daran, dass + \Macro{parbox} sein Argument so setzt. Um dies zu korrigieren, fügen Sie die + Anweisung \DescRef{maincls.cmd.raggedchapter} (siehe + \autoref{sec:maincls.structure}, \DescPageRef{maincls.cmd.raggedchapter}), + die automatisch bereits vor \Macro{chapterlinesformat} und + \Macro{chapterlineswithprefixformat} aufgerufen wird, in die Definitionen + ein: +\begin{lstcode}[moretexcs={colorbox}] + \makeatletter + \renewcommand{\chapterlinesformat}[3]{% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth + -2\fboxrule-2\fboxsep}{% + \raggedchapter + \@hangfrom{#2}#3% + }% + }% + } + \makeatother + \renewcommand{\chapterlineswithprefixformat}[3]{% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth + -2\fboxrule-2\fboxsep}{% + \raggedchapter + #2#3% + }% + }% + } +\end{lstcode} + Es sei daran erinnert, dass die Klammerung mit den Anweisungen + \Macro{makeatletter} und \Macro{makeatother} nur in der Dokumentpräambel zu + verwenden ist. In einer eigenen Wrapper-Klasse oder einem Paket haben sie zu + entfallen. Sie werden auch nur wegen \Macro{@hangfrom} in der Definition von + \Macro{chapterlinesformat} benötigt.% +\end{Example} + +Wie im Beispiel gezeigt, ist der Anwender bei der Umdefinierung der +Anweisungen für einige Dinge selbst verantwortlich. Dazu gehört neben dem +Erhalt der voreingestellten Ausrichtung auch, dass innerhalb der Überschrift +kein Seitenumbruch, beispielsweise an zusätzlich eingefügten Absätzen oder +Abständen, erfolgen kann. Das gezeigte Beispiel ist diesbezüglich +unproblematisch. Nicht nur, dass die beiden Boxen ohnehin keinen Seitenumbruch +erlauben. \KOMAScript{} verändert außerdem \Macro{interlinepenalty} als Teil +von \PName{Text} so, dass darin kein Seitenumbruch stattfinden +darf. Gleichzeitig endet \PName{Text} immer mit einem internen Absatz, +\Macro{@@par}. + +Die Anweisung \DescRef{maincls.cmd.raggedchapter} ist übrigens nicht +Bestandteil von \PName{Text}, weil anderenfalls beispielsweise die Verwendung +von \Macro{MakeUppercase} innerhalb der Umdefinierung der beiden Anweisungen +erheblich erschwert wäre. Dennoch sei darauf hingewiesen, dass typografischen +Regeln zufolge Versalsatz mit gängigen Fonts immer der Sperrung und des +Ausgleichs bedarf. Die \LaTeX-Anweisung \Macro{MakeUppercase} leistet dies +jedoch nicht. + +Das erste Argument, \PName{Ebene}, wird von den Anweisungen in der +Voreinstellung nicht verwendet und ist auch im Beispiel nicht +erforderlich. Erst wenn der Anwender mehrere Anweisungen im Stil +\PValue{chapter} definiert und man innerhalb der Definition nach den +Anweisungen unterscheiden will, kann dies über \PName{Ebene} erfolgen. Dabei +ist \PName{Ebene} der vom Namen der Anweisung abgeleitete Name der +Gliederungsebene. Bei \DescRef{maincls.cmd.chapter}, +\DescRef{maincls.cmd.chapter*}, \DescRef{maincls.cmd.addchap} und +\DescRef{maincls.cmd.addchap*} ist \PName{Ebene} daher einheitlich +\PValue{chapter}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{sectionlinesformat}% + \Parameter{Ebene}\Parameter{Einzug}\Parameter{Nummer}\Parameter{Text} + \Macro{sectioncatchphraseformat}% + \Parameter{Ebene}\Parameter{Einzug}\Parameter{Nummer}\Parameter{Text} +\end{Declaration} +Diese\ChangedAt{v3.19}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Anweisungen werden von Überschriften des Stils +\PValue{section}\textnote{Gliederungsstil + \PValue{section}}\Index{Gliederung>Stil>~\PValue{section}} in Abhängigkeit +davon verwendet, ob die jeweilige Überschrift eine Spitzmarke erzeugt oder +eine frei stehende Überschrift. Frei stehende Überschriften werden dabei per +\Macro{sectionlinesformat} ausgegeben, während +\Macro{sectioncatchphraseformat} für Spitzmarken zuständig ist. + +In beiden Fällen gibt \PName{Einzug} den Wert eines horizontalen Einzugs +der Überschrift gegenüber dem Textbereich an. Durch Angabe eines negativen +Wertes soll es auch möglich sein, die Überschrift in den linken Rand zu +rücken. + +Die beiden Argumente \PName{Nummer} und \PName{Text} sind einschließlich +Einstellung der Fonts für sich bereits fertig formatiert. Letztlich regeln die +Anweisungen also die Anordnung der beiden Teile der Überschrift. Bei nicht +nummerierten Überschriften ist \PName{Nummer} ein komplett leeres Argument, +enthält also auch keine Formatierungsanweisungen. + +Vordefiniert sind die beiden Anweisungen als: +\begin{lstcode} +\newcommand{\sectionlinesformat}[4]{% + \@hangfrom{\hskip #2#3}{#4}% +} +\newcommand{\sectioncatchphraseformat}[4]{% + \hskip #2#3#4% +} +\end{lstcode} + +Bei Umdefinierung einer der beiden Anweisungen ist wiederum der Anwender +selbst dafür verantwortlich, Seitenumbrüche innerhalb der Ausgabe zu +verhindern. \KOMAScript{} hilft hier lediglich mit entsprechend gesetztem +\Macro{interlinepenalty}. + +\begin{Example} + Wie schon im Beispiel der Kapitelüberschriften sollen nun die frei stehenden + Überschriften der Ebenen \PValue{section} mit einer Farbe hinterlegt + werden. Die frei stehenden Überschriften tieferer Ebenen sollen nicht + verändert werden: +\begin{lstcode}[moretexcs={colorbox}] + \makeatletter + \renewcommand{\sectionlinesformat}[4]{% + \ifstr{#1}{section}{% + \hspace*{#2}% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth + -2\fboxrule-2\fboxsep-#2}{% + \raggedsection + \@hangfrom{#3}{#4}% + }% + }% + }{% + \@hangfrom{\hskip #2#3}{#4}% + }% + } + \makeatother +\end{lstcode} + Mit dem gezeigten Code wird im Falle eines Einzugs der Überschrift der + Bereich des Einzugs nicht mit gefärbt. Wird hingegen die Überschrift in den + linken Rand gestellt, so wird dieser Bereich des Randes ebenfalls farbig + hinterlegt. Durch Verschiebung der \Macro{hspace*}-Anweisung in die + \Macro{colorbox} kann dieses Verhalten verändert werden.% + \iffalse Umbruchkorrekturtext + + Erneut sei daran erinnert, dass \Macro{makeatletter} und \Macro{makeatother} + nur in der Dokumentpräambel zu verwenden sind. In einer eigenen + Wrapper-Klasse oder einem Paket haben sie zu entfallen. Sie werden auch nur + wegen \Macro{@hangfrom} in der Definition von \Macro{sectionlinesformat} + benötigt.% + \else% + + \Macro{makeatletter} und \Macro{makeatother} werden in der Dokumentpräambel + erneut wegen \Macro{@hangfrom} benötigt.% + \fi% +\end{Example} + +Das erste Argument, \PName{Ebene}, wird von den Anweisungen in der +Voreinstellung nicht verwendet. Wie das Beispiel zeigt, kann es aber sehr gut +dazu verwendet werden, nach unterschiedlichen Gliederungsebenen im gemeinsamen +Stil \PValue{section} zu unterscheiden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{SecDef}\Parameter{Sternanweisung}\Parameter{Normalanweisung} + \Macro{scr@startsection}\Parameter{Name}\Parameter{Ebene}% + \Parameter{Einzug}\Parameter{Abstand~davor}\Parameter{Abstand~danach} + \Parameter{Stilanweisungen}% + \OParameter{Kurzform}\Parameter{Überschrift} + \labelsuffix[*]% + \Macro{scr@startsection}\Parameter{Name}\Parameter{Ebene}% + \Parameter{Einzug}\Parameter{Abstand~davor} + \Parameter{Abstand~danach} + \Parameter{Stilanweisungen}% + \nobreak\texttt{*}\Parameter{Überschrift} + \labelsuffix + \Macro{At@startsection}\Parameter{Code} + \Macro{Before@ssect}\Parameter{Code} + \Macro{Before@sect}\Parameter{Code} +\end{Declaration} +Wie\ChangedAt[2014/09]{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} bereits in \autoref{sec:maincls.structure} bei der +Beschreibung zu den Gliederungsbefehlen ab +\DescPageRef{maincls.cmd.chapter} erklärt, verfügt \KOMAScript{} +bezüglich des optionalen Arguments der Gliederungsbefehle über erweiterte +Möglichkeiten. Um dies zu erreichen, war es notwendig, einige Anweisungen +des \LaTeX-Kerns zu ersetzen. Dazu gehören auch die Anweisungen +\Macro{secdef}\IndexCmd{secdef}\important{\Macro{secdef}} und +\Macro{@startsection}\IndexCmd{@startsection}% +\important{\Macro{@startsection}}. Die Bedeutung der Parameter dieser +Anweisungen ist der Anleitung zum \LaTeX-Kern \cite{latex:source2e} zu +entnehmen. + +Da diese Anweisungen jedoch auch häufig von Paketen komplett neu definiert +werden und dadurch die Funktion von \KOMAScript{} teilweise stark +beeinträchtigt werden kann, wurden die genannten \LaTeX-Kern-Anweisungen nicht +einfach nur umdefiniert, sondern es wurden zusätzlich die alternativen +Anweisungen \Macro{SecDef} und \Macro{scr@startsection} definiert. Diese +können von Paketautoren genau wie die \LaTeX-Kern-Anweisungen verwendet +werden, bieten dann aber automatisch die erweiterte Funktionalität von +\KOMAScript{}. Die beiden Anweisungen sollten jedoch nicht umdefiniert werden, +da sie sich jederzeit ändern können und dann die Funktionalität von +\KOMAScript{} durch diese Umdefinierung erneut beeinträchtigt werden +könnte. + +\KOMAScript{} selbst verwendet intern die Anweisungen +\Macro{SecDef}\important{\Macro{SecDef}\\\Macro{scr@startsection}} und +\Macro{scr@startsection} anstelle von \Macro{secdef} und \Macro{@startsection} +beispielsweise bei den mit \DescRef{\LabelBase.cmd.DeclareSectionCommand} +definierten Gliederungsbefehlen. Eine nachträgliche Umdefinierung von +\Macro{secdef} und \Macro{@startsection} hat daher keine Auswirkungen auf +diese Gliederungsbefehle. + +Als Ersatz für die Umdefinierung der Anweisungen bietet \KOMAScript{} die +Möglichkeit, zusätzlichen \PName{Code} in die Ausführung der +\KOMAScript-eigenen Erweiterungen einzufügen. Der \PName{Code} aller Aufrufe +der Anweisungen \Macro{At@startsection}\important{\Macro{At@startsection}\\ + \Macro{Before@sect}\\ + \Macro{Before@@sect}}, \Macro{Before@sect} und +\Macro{Before@@sect} wird für die einzelnen Anweisungen getrennt aufgesammelt. +Es ist nicht vorgesehen, einmal eingefügten Code wieder zu entfernen. + +Der \PName{Code} von Makro +\Macro{At@startsection}\important{\Macro{At@startsection}\\ + \Macro{scr@startsection}} wird dabei in Anweisung \Macro{scr@startsection} +unmittelbar nach der Auswertung von Parameter \PName{Abstand davor} und der +zugehörigen Berechnung des resultierenden \Length{@tempskipa} aber noch vor +Einfügen des Abstandes angewendet. Es ist damit also noch möglich, diesen +Abstand über \Length{@tempskipa} zu verändern. + +Der \PName{Code} von \Macro{Before@sect}\important{\Macro{Before@sect}\\ + \Macro{@sect}} beziehungsweise +\Macro{Before@ssect}\important{\Macro{Before@ssect}\\ + \Macro{@ssect}} wird unmittelbar vor dem Aufruf von \Macro{@sect} respektive +\Macro{@ssect} innerhalb von +\Macro{scr@startsection}\important{\Macro{scr@startsection}} ausgeführt. Zu +diesem Zeitpunkt ist gegebenenfalls der vertikale Abstand vor der Überschrift +bereits über \Macro{addvspace} eingefügt. + +Die drei Anweisungen \Macro{At@startsection}\important{\Macro{At@startsection}\\ + \Macro{Before@sect}\\ + \Macro{Before@ssect}}, \Macro{Before@sect} und \Macro{Before@ssect} sind als +Schnittstelle für Paketautoren entworfen und für diese zur Verwendung +freigegeben.% +\EndIndexGroup + +% \subsection{Anhang} +% \seclabel{appendix} + +\begin{Declaration} + \Macro{appendixmore} +\end{Declaration}% +Bei den {\KOMAScript}-Klassen gibt es innerhalb der Anweisung +\DescRef{maincls.cmd.appendix}% +\IndexCmd{appendix}\important{\DescRef{maincls.cmd.appendix}} eine +Besonderheit. Ist \Macro{appendixmore} definiert, so wird diese Anweisung von +\DescRef{maincls.cmd.appendix} ebenfalls ausgeführt. Intern wird das von den +{\KOMAScript}-Klassen \Class{scrbook}\OnlyAt{\Class{scrbook}\and + \Class{scrreprt}} und \Class{scrreprt} für die Realisierung der Layoutoption +\DescRef{maincls.option.appendixprefix} genutzt (siehe +\autoref{sec:maincls.structure}, +\DescPageRef{maincls.option.appendixprefix}). Dies\textnote{Achtung!} sollten +Sie unbedingt beachten, falls Sie selbst das Makro \Macro{appendixmore} +definieren oder umdefinieren wollen. Ist diese Option bereits verwendet, so +erhalten Sie bei \verb|\newcommand{\appendixmore}{|\dots\verb|}| eine +Fehlermeldung. Dadurch wird verhindert, dass Sie die Optionen außer +Kraft setzen, ohne es zu merken. + +\begin{Example} + Sie wollen nicht, dass bei Verwendung der Klasse \Class{scrbook} oder + \Class{scrreprt} im Hauptteil die Kapitel mit einer Präfixzeile versehen + werden (siehe Layoutoption \DescRef{maincls.option.chapterprefix} + in \autoref{sec:maincls.structure}, + \DescPageRef{maincls.option.chapterprefix}). Damit die Konsistenz + gewahrt bleibt, wollen Sie auch nicht, dass eine solche Zeile im Anhang + verwendet wird. Stattdessen soll in den Anhängen direkt vor dem + Kapitelbuchstaben das Wort »Anhang« in der jeweiligen Sprache stehen. Dies + soll auch für die Kolumnentitel gelten. Also verwenden Sie nicht die + Layoutoption \DescRef{maincls.option.appendixprefix}, sondern + definieren in der Dokumentpräambel: +\begin{lstcode} + \newcommand*{\appendixmore}{% + \renewcommand*{\chapterformat}{% + \appendixname~\thechapter\autodot\enskip}% + \renewcommand*{\chaptermarkformat}{% + \appendixname~\thechapter\autodot\enskip}} +\end{lstcode} + Sollten Sie doch noch entscheiden, dass Sie die Option + \DescRef{maincls.option.appendixprefix} bei + \DescRef{maincls.cmd.documentclass} setzen wollen, so erhalten Sie aufgrund + der dann bereits definierten Anweisung \Macro{appendixmore} eine + Fehlermeldung. Damit wird verhindert, dass obige Definition unbemerkt die + Einstellungen überschreibt, die Sie per Option getroffen haben. + + Wenn Sie ein vergleichbares Verhalten des Anhangs für die Klasse + \Class{scrartcl} erreichen wollen, so ist dies ebenfalls möglich. Schreiben + Sie dazu beispielsweise Folgendes in die Präambel Ihres Dokuments: +\begin{lstcode}[moretexcs={ifthenelse,equal}] + \newcommand*{\appendixmore}{% + \renewcommand*{\sectionformat}{% + \appendixname~\thesection\autodot\enskip}% + \renewcommand*{\sectionmarkformat}{% + \appendixname~\thesection\autodot\enskip}} +\end{lstcode} + + Die Erklärungen zu den in diesem Beispiel umdefinierten Anweisungen finden + Sie in \autoref{sec:maincls.structure}, + \DescPageRef{maincls.cmd.chapterformat} und + \DescPageRef{maincls.cmd.chaptermarkformat}. +\end{Example}% +% +\EndIndexGroup + +% \subsection{Literaturverzeichnis} +% \seclabel{bibliography} + +\begin{Declaration} + \Macro{newbibstyle}\OParameter{Elternstil}\Parameter{Name}% + \Parameter{Anweisungen} + \Macro{newblock} + \Macro{@openbib@code} + \Macro{bib@beginhook} + \Macro{bib@endhook} +\end{Declaration} +Schon die Standardklassen\textnote{Standardklassen} kennen zur Unterteilung +der Einträge in das Literaturverzeichnis die Anweisung \Macro{newblock}. Was +diese Anweisung genau macht, hängt dabei von den Klassenoptionen ab. Wird die +Option \Option{openbib}\important{\Option{openbib}} verwendet, so werden am +Ende der Standardklasse die Anweisungen \Macro{@openbib@code} und +\Macro{newblock} selbst umdefiniert. Von den Standardklassen wird die +Anweisung \Macro{@openbib@code} beim Start der Liste für das +Literaturverzeichnis --~genauer: bei der Festlegung der Parameter für diese +Liste~-- ausgeführt. Es darf davon ausgegangen werden, dass auch viele Pakete, +die das Literaturverzeichnis umdefinieren, diese Anweisung entsprechend +abarbeiten. + +Bei den \KOMAScript-Klassen\textnote{\KOMAScript} geschieht etwas +ähnliches. Allerdings wird \Macro{@openbib@code} nicht am Ende der Klasse +umdefiniert. Stattdessen wird mit \Macro{newbibstyle} der Stil +\PValue{openstyle} für das Literaturverzeichnis definiert. Die +\PName{Anweisungen}, die dabei in der Implementierung angegeben wurden, +beinhalten die gewünschten Umdefinierung von \Macro{@openbib@code} und von +\Macro{newblock}. Wird nun mit Hilfe der Option +\OptionValueRef{maincls}{bibliography}{openstyle}% +\IndexOption{bibliography~=\textKValue{openstyle}}% +\important{\OptionValueRef{maincls}{bibliography}{openstyle}} dieser +Literaturverzeichnisstil gewählt, so werden die \PName{Anweisungen} +unmittelbar ausgeführt, also \Macro{@openbib@code} und \Macro{newblock} +umdefiniert. + +Neben \Macro{@openbib@code} und \Macro{newblock} können in \PName{Anweisungen} +auch noch \Macro{bib@beginhook} und \Macro{bib@endhook} umdefiniert +werden. Die Anweisung \Macro{bib@beginhook} wird unmittelbar nach der +Überschrift und der Präambel des Literaturverzeichnisses, aber noch vor der +Liste mit den Literatureinträgen ausgeführt. Die Anweisung \Macro{bib@endhook} +wird direkt nach dieser Liste am Ende des Literaturverzeichnisses +ausgeführt. Im Falle eines mit \DescRef{maincls.cmd.BreakBibliography} (siehe +\autoref{sec:maincls.bibliography}, +\DescPageRef{maincls.cmd.BreakBibliography}) unterbrochenen +Literaturverzeichnisses werden diese Anweisungen außerdem am Anfang und Ende +jedes Teils, also unmittelbar vor und nach +\DescRef{maincls.cmd.BreakBibliography} ausgeführt. + +Die Anweisungen \Macro{newblock}, \Macro{@openbib@code}, +\Macro{bib@beginhook} und \Macro{bib@endhook} werden bei der Verwendung eines +neuen Literaturverzeichnisstils zunächst als leer definiert. Danach werden die +\PName{Anweisungen} des bei der Definition des Stils optional angegebenen +Elternstils ausgeführt und dann erst die \PName{Anweisungen}, die bei +Definition des neuen Stils angegeben wurden. Daraus ergibt sich auch, dass +jede der vier Anweisungen innerhalb von \PName{Anweisung} bei Bedarf +keinesfalls mit \Macro{newcommand}, sondern mit +\Macro{renewcommand}\IndexCmd{renewcommand}\important{\Macro{renewcommand}} +definiert werden sollte. + +Setzt der Anwender mit den Anweisungen +\DescRef{maincls.cmd.AtEndBibliography}%\important[i]{\DescRef{maincls.cmd.AtEndBibliography}\\ +% \DescRef{maincls.cmd.AfterBibliographyPreamble}}% Passt blöder Weise nicht! +\IndexCmd{AtEndBibliography} und +\DescRef{maincls.cmd.AfterBibliographyPreamble}% +\IndexCmd{AfterBibliographyPreamble} weitere \PName{Anweisungen} für die +Ausführung nach der Präambel und am Ende des Literaturverzeichnisses, so +werden die mit \DescRef{maincls.cmd.AfterBibliographyPreamble} festgelegten +\PName{Anweisungen} einmalig am Anfang des Literaturverzeichnisses nach +\Macro{bib@beginhook} und die mit \DescRef{maincls.cmd.AtEndBibliography} +festgelegten \PName{Anweisungen} einmalig am Ende des Literaturverzeichnisses +vor \Macro{bib@endhook} ausgeführt. + +Mit\textnote{Beispiel!} Hilfe des Pakets +\Package{multicol}\IndexPackage{multicol}\important{\Package{multicol}} (siehe +\cite{package:multicol}) könnte man beispielsweise einen Literaturstil für ein +zweispaltiges Literaturverzeichnis definieren: +% Umbruchkorrektur: listings korrigiert +\begin{lstcode} + \newbibstyle{twocolumstyle}{% + \renewcommand*{\bib@beginhook}{\begin{multicols}{2}}% + \renewcommand*{\bib@endhook}{\end{multicols}}}% +\end{lstcode} +Soll es außerdem eine \emph{open}-Variante davon geben, kann man hier die +Möglichkeiten der Vererbung verwenden und bei der Definition einen Elternstil +mit angeben: +% Umbruchkorrektur: listings korrigiert +\begin{lstcode} + \newbibstyle[openstyle]{twocolumopenstyle}{% + \renewcommand*{\bib@beginhook}{\begin{multicols}{2}}% + \renewcommand*{\bib@endhook}{\end{multicols}}}% +\end{lstcode} +Die Auswahl eines dieser neuen Stile erfolgt dann einfach wieder über die +Option \DescRef{maincls.option.bibliography}. + +Wie\textnote{Achtung!} schon \DescRef{maincls.cmd.BreakBibliography} verlieren +auch diese Anweisungen ganz oder teilweise ihre Wirkung, wenn +\Environment{thebibliography} beispielsweise durch Verwendung von +\Package{biblatex}\IndexPackage{biblatex}\important{\Package{biblatex}} +umdefiniert wird.% +\EndIndexGroup + + +\section{Mehr oder weniger obsolete Optionen und Anweisungen} +\seclabel{obsolete} + +\LoadNonFree{scrbookreportarticle-experts}{4} +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "guide.tex" +%%% End: + +% LocalWords: Sternvarianten Kapitelüberschrift Standardklassen Paketautoren +% LocalWords: Klassenoptionen Gliederungsbefehlen Namensliste umzudefinieren +% LocalWords: Inhaltsverzeichniseintrags Abstandsanweisungen Sternformen +% LocalWords: Teilüberschriften Benutzerfreundlichkeit Absatzmarkierung +% LocalWords: umkonfiguriert Teileüberschrift Abschnittsüberschrift +% LocalWords: Absolutwert Gliederungsbefehls Präfixzeile Schrifteinstellung +% LocalWords: Zählername Spitzmarke Kolumnentitels Schrifteinstellungen +% LocalWords: Strichstärke expandierbar expandierbaren expandierbares +% LocalWords: spartanisch Kapitelstil Spitzmarken Formatierungsanweisungen +% LocalWords: Kapitelüberschriften Gliederungsebenen Verzeichniseinträge +% LocalWords: Verzeichniseintragsstile Gliederungsbefehl Verzeichniseintrag +% LocalWords: Verzeichniseintrags Verzeichniseintragsstilen Gliederungsstil +% LocalWords: Gliederungsebene Eintragsebenen Absatzeinzug Dokumentpräambel diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrbookreportarticle.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrbookreportarticle.tex new file mode 100644 index 0000000000..58b51a63fa --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrbookreportarticle.tex @@ -0,0 +1,5015 @@ +% ====================================================================== +% scrbookreportarticle.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrbookreportarticle.tex +% Copyright (c) Markus Kohm, 2001-2019 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrbook, scrreprt, and scrartcl of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel über scrbook, scrreprt und scrartcl in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrbookreportarticle.tex} + [$Date: 2019-01-14 14:29:39 +0100 (Mon, 14 Jan 2019) $ + KOMA-Script guide (chapter: scrbook, scrreprt, scrartcl)] + +\chapter{Die Hauptklassen \Class{scrbook}, \Class{scrreprt}, \Class{scrartcl}} +\labelbase{maincls}% +\BeginIndexGroup +\BeginIndex{Class}{scrbook}% +\BeginIndex{Class}{scrreprt}% +\BeginIndex{Class}{scrartcl}% + +\AddSeeIndex{Anweisung}{gen}{\GuidecmdIndexShort}{cmd}% +\AddSeeIndex{Makro}{gen}{\GuidecmdIndexShort}{cmd}% +Die Hauptklassen des \KOMAScript-Pakets sind als Äquivalent zu den +\LaTeX-Standard"-klassen angelegt. Das bedeutet, dass zu den drei +Standardklassen \Class{book}\IndexClass{book}, \Class{report}% +\IndexClass{report} und \Class{article}\IndexClass{article} im +\KOMAScript-Paket Entsprechungen zu finden sind. Daneben ist auch für die +Standardklasse \Class{letter}\IndexClass{letter} eine Entsprechung vorhanden. +Der Briefklasse in {\KOMAScript} ist jedoch ein eigenes Kapitel gewidmet, da +sie sich von den drei Hauptklassen grundsätzlich unterscheidet (siehe +\autoref{cha:scrlttr2}). + +Die einfachste Möglichkeit, anstelle einer Standardklasse eine +\KOMAScript-Klasse zu verwenden, ist das Ersetzen des Klassennamens in der +Anweisung \verb|\documentclass| entsprechend +\autoref{tab:maincls.overview}. Man tauscht +also beispielsweise \Macro{documentclass}\PParameter{book} gegen +\Macro{documentclass}\PParameter{scrbook}. Der anschließende \LaTeX-Lauf +sollte lediglich einige Layoutänderungen mit sich bringen. Ein großer Teil der +in den nachfolgenden Abschnitten beschriebenen vielfältigen Möglichkeiten und +Optionen werden von den \KOMAScript-Klassen zusätzlich geboten. + +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside} + [Klassengegenüberstellung]{\label{tab:maincls.overview}Gegenüberstellung der + Standardklassen und der \KOMAScript-Klassen} + [l] + \begin{tabular}[t]{ll} + \toprule + Standard-Klasse & \KOMAScript-Klasse \\%& \Script-Stil (\LaTeX2.09)\\ + \midrule + \Class{article} & \Class{scrartcl} \\%& \File{script\textunderscore s} \\ + \Class{report} & \Class{scrreprt} \\%& \File{script} \\ + \Class{book} & \Class{scrbook} \\%& \File{script} \\ + \Class{letter} & \Class{scrlttr2} \\%& \File{script\textunderscore l} \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} + +Lassen Sie mich der Erläuterung der Klassen noch eine Bemerkung +vorausschicken. Oft ist man sich am Anfang eines Dokuments unsicher, welche +Einstellungen konkret zu wählen sind. Bei einigen Einstellungen, wie der +Auswahl des Papierformats, mögen sie bereits vorab feststehen. Aber schon die +Frage nach der Seitenauf"|teilung könnte im Voraus schwer zu beantworten sein. +Andererseits sollten diese Angaben für die Haupttätigkeiten des Autors -- +Entwurf der Gliederung, Schreiben des Textes, Zusammenstellen von Abbildungen, +Tabellen und Verzeichnissen -- zunächst auch unerheblich sein. Konzentrieren +Sie sich als Autor erst einmal auf den Inhalt. Wenn der dann steht, können Sie +sich um die Feinheiten der Form kümmern. Neben der Auswahl der Optionen +gehören dazu dann auch Dinge wie die Korrektur der Trennung und möglicherweise +dezente Eingriffe in den Seitenumbruch oder die Verteilung von Abbildungen und +Tabellen. + + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\LoadCommonFile{options} % \section{Frühe oder späte Optionenwahl} + +%\iffree{}{\clearpage}% Umbruchkorrektur!!! + +\LoadCommonFile{compatibility} % \section{Kompatibilität zu früheren Versionen von \KOMAScript} + +\LoadCommonFile{draftmode} % \section{Entwurfsmodus} + +\LoadCommonFile{typearea} % \section{Seitenauf"|teilung} + +\begin{Declaration} + \Macro{flushbottom} + \Macro{raggedbottom} +\end{Declaration} +\begin{Explain} + Insbesondere bei doppelseitigen Dokumenten ist es wünschenswert, wenn nicht + nur alle ersten Zeilen eines Satzspiegels mit ihrer Grundlinie auf der + gleichen Höhe liegen, sondern auch die letzten Zeilen einer + Doppelseite. Enthält eine Seite nur Text ohne Absätze und Überschriften, so + hat man das automatisch, wenn bei der Konstruktion des Satzspiegels einige + Grundregeln befolgt wurden. Aber bereits dann, wenn Absätze mit einem halben + Grundlinienabstand markiert werden, genügt es, wenn die Anzahl der Absätze + auf der einen Seite um eine ungerade Zahl von der auf der anderen Seite + abweicht, damit dieses Ziel nicht mehr erreicht werden kann. Es ist dann + notwendig, dass man zumindest einige der vertikalen Abstände etwas dehnt + oder staucht, um das Ziel wieder zu erreichen. \TeX{} kennt zu diesem Zweck + dehn- und stauchbare Abstände und \LaTeX{} bietet die Möglichkeit, + diesen \emph{vertikalen Ausgleich}\Index{Ausgleich} automatisch + durchzuführen. +\end{Explain} + +Wird über die Option +\Option{twoside}\IndexOption{twoside}\important{\Option{twoside}} (siehe +\autoref{sec:typearea.typearea}, \DescPageRef{typearea.option.twoside}) +doppelseitiger oder über Option +\Option{twocolumn}\IndexOption{twocolumn}\important{\Option{twocolumn}} (siehe +\DescPageRef{typearea.option.twocolumn}) zweispaltiger Satz angefordert, so +wird der vertikale Ausgleich ebenfalls +eingeschaltet. Das\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} gilt jedoch bei einer Kompatibilitätseinstellung zu einer +\KOMAScript-Version vor 3.17 (siehe +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}, Option +\DescRef{\LabelBase.option.version}% +\IndexOption{version}\important{\OptionValueRef{\LabelBase}{version}{3.17}}) +nicht, wenn die Option über \DescRef{\LabelBase.cmd.KOMAoption} oder +\DescRef{\LabelBase.cmd.KOMAoptions} geändert wird. + +Man kann den vertikalen Ausgleich auch mit \Macro{flushbottom} jederzeit +ab der aktuellen Seite explizit fordern. Umgekehrt ist es möglich, mit +\Macro{raggedbottom} den vertikalen Ausgleich ab der aktuellen Seite explizit +abzuschalten. Dies entspricht der Voreinstellung bei einseitigem Satz. + +{\KOMAScript} verwendet übrigens einen leicht modifizierten Verzicht auf den +vertikalen Ausgleich. \iffree{}{Näheres dazu ist in + \autoref{sec:maincls-experts.addInfos}, + \DescPageRef{maincls-experts.cmd.footnoterule} zu erfahren.}% +% +\EndIndexGroup +% +\EndIndexGroup + + +\LoadCommonFile{fontsize} % \section{Wahl der Schriftgröße für das Dokument} + +\LoadCommonFile{textmarkup} % \section{Textauszeichnungen} + +\LoadCommonFile{titles}% \section{Dokumenttitel} + +\section{Zusammenfassung} +\seclabel{abstract} +\BeginIndexGroup +\BeginIndex{}{Zusammenfassung}% + +Insbesondere bei Artikeln, seltener bei Berichten findet man unmittelbar unter +der Titelei und noch vor dem Inhaltsverzeichnis eine Zusammenfassung. Bei +Verwendung eines Titelkopfes ist die Zusammenfassung in der Regel ein rechts +und links eingezogener Block. Im Vergleich dazu wird bei Verwendung von +Titelseiten die Zusammenfassung eher als Kapitel oder Abschnitt gesetzt. + +\begin{Declaration} + \OptionVName{abstract}{Ein-Aus-Wert} +\end{Declaration}% +Bei\ChangedAt{v3.00}{\Class{scrreprt}\and \Class{scrartcl}}% +\OnlyAt{\Class{scrreprt}\and \Class{scrartcl}} den +Standardklassen\textnote{\KOMAScript{} vs. Standardklassen} setzt die +\DescRef{\LabelBase.env.abstract}-Umgebung noch den zentrierten Titel +»\abstractname« vor die Zusammenfassung. Früher war dies durchaus +üblich. Inzwischen sind wir durch das Zeitunglesen darin geübt, einen +entsprechend hervorgehobenen Text am Anfang eines Artikels oder Berichts als +Zusammenfassung zu erkennen. Dies gilt umso mehr, wenn dieser Text noch vor +dem Inhaltsverzeichnis steht. Zudem verwundert es, wenn ausgerechnet diese +Überschrift klein und zentriert ist. {\KOMAScript} bietet mit der Option +\Option{abstract} die Möglichkeit, die Überschrift über der Zusammenfassung +ein- oder auszuschalten. Als \PName{Ein-Aus-Wert} kann einer der +Standardwerte für einfache Schalter aus \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} verwendet werden. Voreingestellt ist bei +\KOMAScript{} \PValue{false}. + +Bei Büchern wird in der Regel eine andere Art der Zusammenfassung +verwendet. Dort setzt man ein entsprechendes Kapitel an den Anfang oder das +Ende des Werks. Oft wird diese Zusammenfassung entweder mit der Einleitung +oder einem weiteren Ausblick verknüpft. Daher gibt es bei \Class{scrbook} +überhaupt keine \DescRef{\LabelBase.env.abstract}-Umgebung. +Bei\textnote{Tipp!} Berichten im weiteren Sinne, etwa einer Studien- oder +Diplomarbeit, ist ebenfalls eine Zusammenfassung in dieser Form zu +empfehlen. Siehe dazu die in \autoref{sec:maincls.structure}, ab +\DescPageRef{\LabelBase.cmd.chapter*} dokumentierten Befehle +\DescRef{\LabelBase.cmd.chapter*}\IndexCmd{chapter*}. +\DescRef{\LabelBase.cmd.addchap}\IndexCmd{addchap} und +\DescRef{\LabelBase.cmd.addchap*}\IndexCmd{addchap*}.% +\EndIndexGroup + + +\begin{Declaration} + \begin{Environment}{abstract}\end{Environment} +\end{Declaration}% +\OnlyAt{\Class{scrartcl}\and \Class{scrreprt}}% +Einige \LaTeX-Klassen bieten eine spezielle Umgebung für die +Zusammenfassung: die \Environment{abstract}-Umgebung. Diese wird unmittelbar +ausgegeben, ist also nicht Bestandteil der mit +\DescRef{\LabelBase.cmd.maketitle} gesetzten Titelei. Bitte\textnote{Achtung!} +beachten Sie unbedingt, dass es sich bei \Environment{abstract} um eine +Umgebung und nicht um eine Anweisung handelt. Ob die Zusammenfassung mit einer +Überschrift versehen wird oder nicht, wird über die Option +\DescRef{\LabelBase.option.abstract} gesteuert (siehe oben). + +Bei Büchern ist die Zusammenfassung häufig Bestandteil der Einleitung oder +eines gesonderten Kapitels am Ende des Dokuments. Daher gibt es bei +\Class{scrbook} keine \Environment{abstract}-Umgebung. Bei Verwendung der +Klasse \Class{scrreprt} ist es sicher eine Überlegung wert, ob man nicht +genauso verfahren sollte. Siehe hierzu in \autoref{sec:\LabelBase.structure} +ab \DescPageRef{\LabelBase.cmd.chapter*} +die Anweisungen \DescRef{\LabelBase.cmd.chapter*}\IndexCmd{chapter*} und +\DescRef{\LabelBase.cmd.addchap}\IndexCmd{addchap} oder +\DescRef{\LabelBase.cmd.addchap*}.% (\DescPageRef{\LabelBase.cmd.addchap}). + +Wird ein Titelkopf\Index{Titel>Kopf} (siehe Option +\DescRef{\LabelBase.option.titlepage}, \autoref{sec:\LabelBase.titlepage}, +\DescPageRef{\LabelBase.option.titlepage}) verwendet, so wird die +Zusammenfassung intern mit Hilfe einer +\DescRef{\LabelBase.env.quotation}-Umgebung\IndexEnv{quotation} (siehe +\autoref{sec:\LabelBase.lists}, \DescPageRef{\LabelBase.env.quotation}) +gesetzt. Dabei werden Absatzanfänge normalerweise mit Einzug gesetzt. Soll der +erste Absatz nicht eingezogen werden, so kann dieser Einzug mit +\Macro{noindent}\IndexCmd{noindent}\important{\Macro{noindent}} +\iffree{unmittelbar nach \Macro{begin}\PParameter{abstract}}{am Anfang der + Umgebung} unterdrückt werden.% +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Inhaltsverzeichnis} +\seclabel{toc} +\BeginIndexGroup +\BeginIndex{}{Inhaltsverzeichnis} + +Auf die Titelei und eine eventuell vorhandene Zusammenfassung folgt +normalerweise das Inhaltsverzeichnis. Häufig findet +man nach dem Inhaltsverzeichnis auch noch die Verzeichnisse der +Gleitumgebungen, beispielsweise von Tabellen und Abbildungen (siehe +\autoref{sec:\LabelBase.floats}). + +\iffalse% +Es ist zu beachten, dass neben den in diesem Abschnitt dokumentierten +Möglichkeiten auch noch die Anweisungen +\DescRef{maincls-experts.cmd.DeclareSectionCommand}, +\DescRef{maincls-experts.cmd.DeclareNewSectionCommand}, +\DescRef{maincls-experts.cmd.RedeclareSectionCommand} und +\DescRef{maincls-experts.cmd.ProvideSectionCommand} Auswirkungen auf das +Inhaltsverzeichnis haben können. Siehe \autoref{sec:maincls-experts.experts}, +\DescPageRef{maincls-experts.cmd.DeclareSectionCommand}.% +\else% +Neben den in diesem Abschnitt dokumentierten Möglichkeiten hat auch der mit +\DescRef{tocbasic.cmd.DeclareTOCStyleEntry}\IndexCmd{DeclareTOCStyleEntry}% +\important[O]{\DescRef{tocbasic.cmd.DeclareTOCStyleEntry}} +gewählte und +konfigurierte Eintragsstil des Pakets +\hyperref[cha:tocbasic]{\Package{tocbasic}}% +\important{\hyperref[cha:tocbasic]{\Package{tocbasic}}}% +\IndexPackage{tocbasic} (siehe +\DescPageRef{tocbasic.cmd.DeclareTOCStyleEntry}) maßgeblichen Einfluss auf die +Darstellung des Inhaltsverzeichnisses. Entsprechend können sich auch die in +\autoref{sec:maincls-experts.experts} ab +\DescPageRef{maincls-experts.cmd.DeclareSectionCommand} dokumentierten +Befehle +\DescRef{maincls-experts.cmd.DeclareSectionCommand}% +\important[O]{\DescRef{maincls-experts.cmd.DeclareSectionCommand}}% +\IndexCmd{DeclareSectionCommand}, +\DescRef{maincls-experts.cmd.ProvideSectionCommand}% +\IndexCmd{ProvideSectionCommand}, +\DescRef{maincls-experts.cmd.DeclareNewSectionCommand}% +\IndexCmd{DeclareNewSectionCommand} und +\DescRef{maincls-experts.cmd.RedeclareSectionCommand}% +\IndexCmd{RedeclareSectionCommand} auf das Inhaltsverzeichnis auswirken.% +\fi + + +\begin{Declaration} + \OptionVName{toc}{Einstellung} +\end{Declaration} +Neuerdings ist es fast schon üblich geworden Tabellen- und +Abbildungsverzeichnis sowie das Literaturverzeichnis, seltener das +Stichwortverzeichnis, ins Inhaltsverzeichnis aufzunehmen. Dies hat sicher auch +mit der neuen Mode zu tun, Abbildungs- und Tabellenverzeichnis ans Buchende zu +stellen. Beide Verzeichnisse haben von Aufbau und Intention eine deutliche +Ähnlichkeit mit dem Inhaltsverzeichnis. Daher betrachte ich die Entwicklung +skeptisch. Da\important{\OptionValue{toc}{listof}} es keinen Sinn hat, nur das +Tabellen- oder nur das Abbildungsverzeichnis ohne das jeweils andere ins +Inhaltsverzeichnis aufzunehmen, werden mit der +\PName{Einstellung}\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} \PValue{listof}\IndexOption{toc~=\textKValue{listof}} beide +Verzeichnisse gemeinsam ins Inhaltsverzeichnis aufgenommen. Dabei werden auch +Verzeichnisse berücksichtigt, die mit Hilfe des +\Package{float}-Pakets\IndexPackage{float} ab Version~1.2e (siehe +\cite{package:float}) oder \Package{floatrow} (siehe \cite{package:floatrow}) +erstellt werden. Als\important{\OptionValue{toc}{listofnumbered}} +Verzeichnisse, die den Inhalt anderer Abschnitte des Werks auf"|führen, +erhalten Tabellen"~, Abbildungs- und die mit den genannten Paketen erzeugten +Verzeichnisse grundsätzlich keine Kapitelnummer. Wer diesen Grundsatz +ignorieren will, bedient sich der \PName{Einstellung} +\PValue{listofnumbered}\IndexOption{toc~=\textKValue{listofnumbered}}. + +\leavevmode\LabelOptionValue{toc}{index}\nobreak +Das\important{\OptionValue{toc}{index}} Stichwortverzeichnis erhält mit +\OptionValue{toc}{index}\IndexOption{toc~=\textKValue{index}} einen Eintrag im +Inhaltsverzeichnis. Da das Stichwortverzeichnis ebenfalls nur Verweise auf den +Inhalt anderer Abschnitte enthält, wird auch dieser Eintrag grundsätzlich +nicht nummeriert. Eine\ChangedAt{v3.18}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} +Abweichung\important{\OptionValue{toc}{indexnumbered}} von diesem Grundsatz +wird von \KOMAScript{} trotz Bedenken des Autors mit +\OptionValue{toc}{indexnumbered}\IndexOption{toc~=\textKValue{indexnumbered}} +ebenfalls unterstützt. + +\leavevmode\LabelOptionValue{toc}{bibliography}\nobreak Das +Literaturverzeichnis stellt eine etwas andere Art von Verzeichnis dar. Hier +wird nicht der Inhalt des vorliegenden Werks aufgelistet, sondern auf externe +Inhalte verwiesen. Mit\important{\OptionValue{toc}{bibliographynumbered}} +dieser Begründung könnte man argumentieren, dass das Literaturverzeichnis ein +eigenes Kapitel bzw. einen eigenen Abschnitt darstelle und somit eine Nummer +verdiene. Die Option \OptionValue{toc}{bibliographynumbered}% +\IndexOption{toc~=\textKValue{bibliographynumbered}} führt genau dazu, +einschließlich des dann fälligen Eintrags im Inhaltsverzeichnis. Ich selbst +bin allerdings der Meinung, dass bei dieser Argumentation auch ein +klassisches, kommentiertes Quellenverzeichnis ein eigenes Kapitel +wäre. Außerdem ist das Literaturverzeichnis letztlich nichts, was man selbst +geschrieben hat. Deshalb\important{\OptionValue{toc}{bibliography}} erscheint +mir allenfalls ein nicht nummerierter Eintrag im Inhaltsverzeichnis +angemessen, was mit der Einstellung +\OptionValue{toc}{bibliography}\IndexOption{toc~=\textKValue{bibliography}} +erreicht wird. + +\leavevmode\LabelOptionValue{toc}{graduated}\nobreak +Normalerweise\ChangedAt{v2.8q}{% + \Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}% +\important{\OptionValue{toc}{graduated}} wird das Inhaltsverzeichnis so +formatiert, dass die Gliederungsebenen unterschiedlich weit eingezogen +werden. Dabei wird für die Gliederungsnummer jeder Ebene ein Raum fester +Breite vorgesehen, in dem die Nummer linksbündig gesetzt wird. Dies entspricht +der Einstellung\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} +\OptionValue{toc}{graduated}\IndexOption{toc~=\textKValue{graduated}}. + +\leavevmode\LabelOptionValue{toc}{flat}\nobreak +Werden sehr viele Gliederungspunkte verwendet, so werden die +Gliederungsnummern sehr breit. Damit reicht der vorgesehene Platz nicht +aus. In \cite{DANTE:FAQ} wird für solche Fälle vorgeschlagen, die Erzeugung +des Inhaltsverzeichnisses +umzudefinieren. \KOMAScript{}\important{\OptionValue{toc}{flat}} bietet jedoch +eine alternative Formatierung an, bei der das Problem nicht auf"|tritt. Bei +Verwendung der Option \OptionValue{toc}{flat}\IndexOption{toc~=\textKValue{flat}} +werden die unterschiedlichen Gliederungsebenen nicht unterschiedlich weit +eingezogen. Stattdessen wird eine tabellenartige Form gewählt, in der alle +Gliederungsnummern und alle Gliederungstexte jeweils in einer Spalte +linksbündig untereinander stehen. Der für die Gliederungsnummern benötigte +Platz wird dabei automatisch ermittelt. + +Einen Überblick über alle möglichen Werte für die \PName{Einstellung} von +\Option{toc} ist in \autoref{tab:maincls.toc} zu finden. + +\begin{desclist} + \desccaption[{Mögliche Werte für Option \Option{toc}}]{% + Mögliche Werte für Option \Option{toc} zur Einstellung von Form und Inhalt + des Inhaltsverzeichnisses\label{tab:maincls.toc}% + }{% + Mögliche Werte für Option \Option{toc} (\emph{Fortsetzung})% + }% + \entry{\PValue{bibliography}, \PValue{bib}}{% + Das Literaturverzeichnis erhält einen Eintrag im Inhaltsverzeichnis, ohne + dass es nummeriert wird.% + \IndexOption{toc~=\textKValue{bibliography}}}% + \entry{\PValue{bibliographynumbered}, \PValue{bibnumbered}, + \PValue{numberedbibliography}, \PValue{numberedbib}}{% + Das Literaturverzeichnis erhält einen Eintrag im Inhaltsverzeichnis und + wird nummeriert.% + \IndexOption{toc~=\textKValue{bibliographynumbered}}}% + \entry{\PValue{chapterentrywithdots}, \PValue{chapterentrydotfill}}{% + \ChangedAt[2014/12]{v3.15}{\Class{scrbook}\and \Class{scrreprt}}% + Bei den Kapiteleinträgen der Klassen \Class{scrbook} und \Class{scrreprt} + werden Text und Seitenzahl ebenfalls durch eine punktierte Linie + miteinander verbunden.% + \IndexOption{toc~=\textKValue{chapterentrywithdots}}}% + \entry{\PValue{chapterentrywithoutdots}, \PValue{chapterentryfill}}{% + \ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}}% + Bei den Kapiteleinträgen der Klassen \Class{scrbook} und \Class{scrreprt} + werden Text und Seitenzahl nicht durch eine punktierte Linie miteinander + verbunden. Dies entspricht der Voreinstellung.% + \IndexOption{toc~=\textKValue{chapterentrywithoutdots}}}% + \entry{\PValue{flat}, \PValue{left}}{% + Das Inhaltsverzeichnis erhält eine tabellarische Form. Die + Gliederungsnummern sind dabei die erste Spalte, die Überschriften die + zweite Spalte, die Seitenzahlen die dritte Spalte. Der Platz, der für die + Gliederungsnummern reserviert wird, richtet sich nach dem benötigten Platz + des vorherigen \LaTeX-Laufs.% + \IndexOption{toc~=\textKValue{flat}}}% + \entry{\PValue{graduated}, \PValue{indent}, \PValue{indented}}{% + Das Inhaltsverzeichnis erhält eine hierarchische Form. Es steht nur ein + begrenzter Platz für die Gliederungsnummern zur Verfügung. Dies entspricht + der Voreinstellung.% + \IndexOption{toc~=\textKValue{graduated}}}% + \entry{\PValue{indenttextentries}, \PValue{indentunnumbered}, + \PValue{numberline}}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Die Eigenschaft \PValue{numberline} (siehe \autoref{sec:tocbasic.toc}, + \DescPageRef{tocbasic.cmd.setuptoc}) wird für das Inhaltsverzeichnis + gesetzt. Dadurch werden nicht nummerierte Einträge linksbündig mit dem + Text von nummerierten Einträgen gleicher Ebene gesetzt.% + \IndexOption{toc~=\textKValue{numberline}}}% + \entry{\PValue{index}, \PValue{idx}}{% + Das Stichwortverzeichnis erhält einen Eintrag im Inhaltsverzeichnis, ohne + dass es nummeriert wird.% + \IndexOption{toc~=\textKValue{index}}}% + \entry{\PValue{indexnumbered}}{% + \ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Das Stichwortverzeichnis erhält einen Eintrag im Inhaltsverzeichnis und + wird nummeriert.% + \IndexOption{toc~=\textKValue{index}}}% + \entry{\PValue{leftaligntextentries}, \PValue{leftalignunnumbered}, + \PValue{nonumberline}}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Die Eigenschaft \PValue{numberline} (siehe \autoref{sec:tocbasic.toc}, + \DescPageRef{tocbasic.cmd.setuptoc}) wird für das Inhaltsverzeichnis + gelöscht. Dadurch werden nicht nummerierte Einträge linksbündig mit der + Nummer von nummerierten Einträgen gleicher Ebene gesetzt. Dies entspricht + der Voreinstellung.% + \IndexOption{toc~=\textKValue{numberline}}}% + \pventry{listof}{% + Die Verzeichnisse der Gleitumgebungen, beispielsweise das Abbildungs"~ und + das Tabellenverzeichnis, erhalten einen Eintrag im Inhaltsverzeichnis, + ohne dass sie nummeriert werden.% + \IndexOption{toc~=\textKValue{listof}}}% + \entry{\PValue{listofnumbered}, \PValue{numberedlistof}}{% + Die Verzeichnisse der Gleitumgebungen, beispielsweise das Abbildungs"~ und + das Tabellenverzeichnis, erhalten einen Eintrag im Inhaltsverzeichnis und + werden nummeriert.% + \IndexOption{toc~=\textKValue{listofnumbered}}}% + \entry{\PValue{nobibliography}, \PValue{nobib}}{% + Das Literaturverzeichnis erhält keinen Eintrag im Inhaltsverzeichnis. Dies + entspricht der Voreinstellung.% + \IndexOption{toc~=\textKValue{nobibliography}}}% + \entry{\PValue{noindex}, \PValue{noidx}}{% + Das Stichwortverzeichnis erhält keinen Eintrag im Inhaltsverzeichnis. Dies + entspricht der Voreinstellung.% + \IndexOption{toc~=\textKValue{noindex}}}% + \pventry{nolistof}{% + Die Verzeichnisse der Gleitumgebungen, beispielsweise das Abbildungs"~ und + das Tabellenverzeichnis, erhalten keinen Eintrag im + Inhaltsverzeichnis. Dies entspricht der Voreinstellung.% + \IndexOption{toc~=\textKValue{nolistof}}}% + \entry{\PValue{sectionentrywithdots}, \PValue{sectionentrydotfill}}{% + \ChangedAt[2014/12]{v3.15}{\Class{scrartcl}}% + Bei den Abschnittseinträgen der Klasse \Class{scrartcl} werden Text und + Seitenzahl ebenfalls durch eine punktierte Linie miteinander verbunden.% + \IndexOption{toc~=\textKValue{sectionentrywithdots}}}% + \entry{\PValue{sectionentrywithoutdots}, \PValue{sectionentryfill}}{% + \ChangedAt{v3.15}{\Class{scrartcl}}% + Bei den Abschnittseinträgen der Klasse \Class{scrartcl} werden Text und + Seitenzahl nicht durch eine punktierte Linie miteinander verbunden. Dies + entspricht der Voreinstellung.% + \IndexOption{toc~=\textKValue{sectionentrywithoutdots}}}% +\end{desclist} +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{chapterentrydots}{Ein-Aus-Wert}\\ + \OptionVName{sectionentrydots}{Ein-Aus-Wert} +\end{Declaration} +Diese\ChangedAt[2014/12]{v3.15}{\Class{scrbook}\and \Class{scrreprt}} Optionen +legen fest, ob im Inhaltsverzeichnis bei den Klassen \Class{scrbook} und +\Class{scrreprt}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} für die +Kapitelebene beziehungsweise bei der Klasse +\Class{scrartcl}\OnlyAt{\Class{scrartcl}} für die Abschnittsebene wie bei den +tieferen Ebenen auch eine punktierte Verbindungslinie zwischen dem Text des +Eintrags und der zugehörigen Seitenzahl verwendet werden soll. Als +\PName{Ein-Aus-Wert} kann einer der Standardwerte für einfache Schalter aus +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} verwendet +werden. Voreingestellt ist für beide Optionen \PValue{false}, wodurch statt +einer punktierten Linie lediglich ein Abstand verwendet wird. + +\BeginIndex{FontElement}{chapterentrydots}\LabelFontElement{chapterentrydots}% +\BeginIndex{FontElement}{sectionentrydots}\LabelFontElement{sectionentrydots}% +Wird die punktierte Linie verwendet, so kann deren Schrift über die Elemente +\FontElement{chapterentrydots}% +\important{\FontElement{chapterentrydots}\\ + \FontElement{sectionentrydots}} und \FontElement{sectionentrydots} gegenüber +den Einstellungen für die Seitenzahlen in den Einträgen verändert werden +(siehe auch \DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont}, \autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}, sowie +\autoref{tab:maincls.fontelements}, +\autopageref{tab:maincls.fontelements}). Die Voreinstellungen der Elemente +sind \autoref{tab:maincls.tocelements} auf +\autopageref{tab:maincls.tocelements} zu entnehmen. Es ist zu +beachten\textnote{Achtung!}, dass die Pünktchen nur sauber untereinander +stehen, wenn die Schrift aller Pünktchen identisch ist.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tableofcontents} +\end{Declaration}% +Die Ausgabe des Inhaltsverzeichnisses wird mit \Macro{tableofcontents} +erreicht. Um ein korrektes Inhaltsverzeichnis zu erhalten, sind nach jeder +Änderung mindestens zwei \LaTeX-Läufe notwendig. Mit der oben erläuterten +Option \DescRef{\LabelBase.option.toc} kann der Umfang und die Form des +Inhaltsverzeichnisses beeinflusst werden. Nach einer Umschaltung der Option +sind ebenfalls mindestens zwei weitere \LaTeX-Läufe notwendig. + +Der Eintrag für \DescRef{\LabelBase.cmd.chapter}\IndexCmd{chapter} bei +\Class{scrbook}\IndexClass{scrbook} und \Class{scrreprt}\IndexClass{scrreprt} +beziehungsweise \DescRef{\LabelBase.cmd.section}\IndexCmd{section} bei +\Class{scrartcl}\IndexClass{scrartcl} sowie der Gliederungsebene +\DescRef{\LabelBase.cmd.part}\IndexCmd{part} wird nicht +eingerückt. Gleichzeitig befinden sich zwischen dem Text der Gliederungsebene +und der Seitenzahl in der Voreinstellung keine Pünktchen. Die typografischen +Gründe dafür liegen in der normalerweise anderen Schriftart sowie der +erwünschten Hervorhebung. Dies\ChangedAt{v3.15}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} kann jedoch mit den zuvor +dokumentierten Optionen geändert werden. Das Inhaltsverzeichnis \iffree{dieser + Anleitung}{dieses Buches} ist mit den Voreinstellungen gesetzt und dient als +Beispiel. + +\BeginIndex{FontElement}{partentry}\LabelFontElement{partentry}% +\BeginIndex{FontElement}{chapterentry}\LabelFontElement{chapterentry}% +\BeginIndex{FontElement}{sectionentry}\LabelFontElement{sectionentry}% +Die\ChangedAt{v2.97c}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}\important{\FontElement{partentry}\\ + \FontElement{chapterentry}\\ + \FontElement{sectionentry}} Schrift der oberen +Inhaltsverzeichniseinträge ist über die Elemente +\FontElement{partentry} und für \Class{scrbook} +und \Class{scrreprt} über +\FontElement{chapterentry} beziehungsweise +\FontElement{sectionentry} für \Class{scrartcl} +einstellbar. +\BeginIndex{FontElement}{partentrypagenumber}% +\LabelFontElement{partentrypagenumber}% +\LabelFontElement{pagination}% +\BeginIndex{FontElement}{chapterentrypagenumber}% +\LabelFontElement{chapterentrypagenumber}% +\BeginIndex{FontElement}{sectionentrypagenumber}% +\LabelFontElement{sectionentrypagenumber}% +Die Schrift der Seitenzahlen kann jeweils davon abweichend über die Elemente +\FontElement{partentrypagenumber}% +\important{\FontElement{partentrypagenumber}} und +\FontElement{chapterentrypagenumber}% +\important{\FontElement{chapterentrypagenumber}\\ + \FontElement{sectionentrypagenumber}} (\Class{scrbook} und \Class{scrreprt}) +beziehungsweise \FontElement{sectionentrypagenumber} (\Class{scrartcl}) +eingestellt werden (siehe auch \DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} in \autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}, sowie +\autoref{tab:maincls.fontelements}, \autopageref{tab:maincls.fontelements}). +Werden\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} je nach Klasse für die Kapitel- beziehungsweise +Abschnittseinträge ebenfalls punktierte Verbindungslinien zu den Seitenzahlen +über Option \DescRef{\LabelBase.option.toc}% +\IndexOption{toc~=\textKValue{chapterentrywithdots}}% +\IndexOption{toc~=\textKValue{sectionentrywithdots}}, +\DescRef{\LabelBase.option.chapterentrydots}% +\IndexOption{chapterentrydots~=\PName{Ein-Aus-Wert}} oder +\DescRef{\LabelBase.option.sectionentrydots}% +\IndexOption{sectionentrydots~=\PName{Ein-Aus-Wert}} verwendet, so kann deren +Schrift über die Elemente \DescRef{\LabelBase.fontelement.chapterentrydots}% +\IndexFontElement{chapterentrydots}% +\important{\DescRef{\LabelBase.fontelement.chapterentrydots}\\ + \DescRef{\LabelBase.fontelement.sectionentrydots}} und +\DescRef{\LabelBase.fontelement.sectionentrydots}% +\IndexFontElement{sectionentrydots} gegenüber den Einstellungen für die +Seitenzahlen verändert werden. Die Voreinstellungen der Elemente sind +\autoref{tab:maincls.tocelements} zu entnehmen. +\begin{table} +% \centering +% \caption + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside} + [Schriftvoreinstellungen für die Elemente + des Inhaltsverzeichnisses] + {\label{tab:maincls.tocelements}% + \hspace{0pt plus 1ex}Vorein\-stel\-lung\-en der Schrift für die Elemente + des In\-halts\-ver\-zeich\-nis\-ses} + [l] + \setlength{\tabcolsep}{.9\tabcolsep}% Umbruchoptimierung! + \begin{tabular}[t]{ll} + \toprule + Element & Voreinstellung \\ + \midrule + \FontElement{partentry} & + \DescRef{\LabelBase.cmd.usekomafont}\PParameter{disposition}\Macro{large} \\ + \FontElement{partentrypagenumber} & \\ + \FontElement{chapterentry} & \DescRef{\LabelBase.cmd.usekomafont}\PParameter{disposition}\\ + \FontElement{chapterentrydots} & \Macro{normalfont} \\ + \FontElement{chapterentrypagenumber} & \\ + \FontElement{sectionentry} & \DescRef{\LabelBase.cmd.usekomafont}\PParameter{disposition} \\ + \FontElement{sectionentrydots} & \Macro{normalfont} \\ + \FontElement{sectionentrypagenumber} & \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} +% +\EndIndexGroup + + +\begin{Declaration} + \Counter{tocdepth} + \Macro{parttocdepth} + \Macro{sectiontocdepth} + \Macro{subsectiontocdepth} + \Macro{subsubsectiontocdepth} + \Macro{paragraphtocdepth} + \Macro{subparagraphtocdepth} +\end{Declaration}% +Normalerweise werden bei den Klassen \Class{scrbook} und \Class{scrreprt} die +Gliederungsebenen \DescRef{\LabelBase.cmd.part} bis +\DescRef{\LabelBase.cmd.subsection} und bei der Klasse \Class{scrartcl} die +Ebenen \DescRef{\LabelBase.cmd.part} bis +\DescRef{\LabelBase.cmd.subsubsection} in das Inhaltsverzeichnis +aufgenommen. Dies wird über den Zähler \Counter{tocdepth} gesteuert. Dabei +steht der Wert -1 für \DescRef{\LabelBase.cmd.part}, 0 für +\DescRef{\LabelBase.cmd.chapter} und so weiter. Durch Setzen oder Erhöhen +oder Verringern des Zählers kann bestimmt werden, bis zu welcher +Gliederungsebene Einträge in das Inhaltsverzeichnis erfolgen sollen. Dies ist +übrigens bei den Standardklassen ganz +genauso. Im\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Unterschied\textnote{\KOMAScript{} vs. Standardklassen} zu +den Standardklassen muss sich bei \KOMAScript{} aber niemand diese Zuordnung +merken. \KOMAScript{} definiert für jede Gliederungsebene eine Anweisung +\Macro{\PName{Ebene}tocdepth} mit dem entsprechenden Wert, die für Zuweisungen +an \Counter{tocdepth} verwendet werden kann. + +Bitten beachten Sie\textnote{Achtung!}, dass die Werte für \Counter{tocdepth} +und \DescRef{\LabelBase.counter.secnumdepth}\IndexCounter{secnumdepth} (siehe +\autoref{sec:\LabelBase.structure}, +\DescPageRef{\LabelBase.counter.secnumdepth}) bei +\Class{scrartcl}\OnlyAt{\Class{scrartcl}} für \DescRef{\LabelBase.cmd.part} +nicht übereinstimmen. Dies wurde aus Gründen der Kompatibilität von der +Standardklasse \Class{article} übernommen. Daher sollte beispielsweise die +Anweisung \DescRef{\LabelBase.cmd.partnumdepth}\IndexCmd{partnumdepth} auch +nicht zum Setzen von \Counter{tocdepth} verwendet werden.% +\begin{Example} + Angenommen, Sie setzen einen Artikel, bei dem die Gliederungsebene + \DescRef{\LabelBase.cmd.subsubsection} verwendet wird. Gehen wir weiter + davon aus, dass Sie diese Gliederungsebene aber nicht im Inhaltsverzeichnis + haben wollen. Dann könnte die Präambel Ihres Dokuments wie folgt + aussehen: +\begin{lstcode} + \documentclass{scrartcl} + \setcounter{tocdepth}{\subsectiontocdepth} +\end{lstcode} + Sie setzen den Zähler \Counter{tocdepth} daher auf den in Anweisung + \Macro{subsectiontocdepth} gespeicherten Wert. Dass dies normalerweise der + Wert 2 ist, müssen Sie sich also gar nicht merken. + + Wollen Sie stattdessen nur, dass eine Ebene weniger in das + Inhaltsverzeichnis eingetragen wird als normalerweise, können Sie auch + einfach vom voreingestellten Wert des Zählers \Counter{tocdepth} eins + abziehen: +\begin{lstcode} + \documentclass{scrartcl} + \addtocounter{tocdepth}{-1} +\end{lstcode} + Den\textnote{Tipp!} Wert, den Sie zu \Counter{tocdepth} addieren oder davon + subtrahieren müssen, können Sie nach mindestens zwei \LaTeX-Läufen einfach + im Inhaltsverzeichnis abzählen. +\end{Example}% +\EndIndexGroup +% +\EndIndexGroup + + +\LoadCommonFile{parmarkup}% \section{Absatzauszeichnung} + +\LoadCommonFile{oddorevenpage}% \section{Erkennung von rechten und linken Seiten} + + +\section{Kopf und Fuß bei vordefinierten Seitenstilen} +\seclabel{pagestyle} + +\BeginIndexGroup +\BeginIndex{}{Seiten>Stil}% +Eine der allgemeinen Eigenschaften eines Dokuments ist der Seitenstil. Bei +{\LaTeX} versteht man unter dem Seitenstil in erster Linie den Inhalt der +Kopf- und Fußzeilen. + + +\begin{Declaration} + \OptionVName{headsepline}{Ein-Aus-Wert} + \OptionVName{footsepline}{Ein-Aus-Wert} +\end{Declaration}% +Mit diesen Optionen kann eingestellt werden, +ob\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} +unter Kolumnentiteln oder über dem Fuß eine horizontale Linie\Index{Trennlinie} +gewünscht wird. Als \PName{Ein-Aus-Wert} kann +einer der Standardwerte für einfache Schalter aus +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} verwendet +werden. Ein Aktivieren der Option \Option{headsepline} oder die Verwendung +der Option ohne Wertübergabe schaltet die Linie unter den Kolumnentiteln +ein. Ein Aktivieren der Option \Option{footsepline} oder die Verwendung der +Option ohne Wertübergabe schaltet die Linie über der Fußzeile ein. Die +Deaktivierung der Optionen schaltet die jeweilige Linie aus. + +Bei\textnote{Achtung!} den weiter unten erklärten Seitenstilen +\DescRef{\LabelBase.pagestyle.empty} und \DescRef{\LabelBase.pagestyle.plain} +hat die Option \Option{headsepline} selbstverständlich keine Auswirkung, da +hier auf einen Seitenkopf\Index{Seiten>Kopf} ausdrücklich verzichtet werden +soll. Typografisch betrachtet, hat eine solche Linie immer die Auswirkung, +dass der Kopf optisch näher an den Text heranrückt. Dies bedeutet nun nicht, +dass der Kopf räumlich weiter vom Textkörper\Index{Text>Bereich} weggerückt +werden müsste. Stattdessen sollte der Kopf dann bei der Berechnung des +Satzspiegels als zum Textkörper gehörend betrachtet werden. Dies wird bei +\KOMAScript{} dadurch erreicht, dass Paket +\hyperref[cha:typearea]{\Package{typearea}}% +\important{\hyperref[cha:typearea]{\Package{typearea}}}\IndexPackage{typearea} +ebenfalls auf \Option{headsepline} reagiert und automatisch die Paketoption +\DescRef{typearea.option.headinclude}% +\IndexOption{headinclude}\important{\DescRef{typearea.option.headinclude}} mit +gleichem Wert ausführt. Entsprechendes gilt auch für die Fußlinie. Im +Gegensatz zu \Option{headsepline} wirkt sich die Option \Option{footsepline} +auch beim Seitenstil \PValue{plain} aus, da \PValue{plain} eine Seitenzahl im +Fuß ausgibt. + +Die Optionen führen selbst keine automatische Neuberechnung des Satzspiegels +aus. Zur Neuberechnung des Satzspiegels siehe Option +\DescRef{typearea.option.DIV} mit den Werten +\hyperref[desc:typearea.option.DIV.last]{\PValue{last}} oder +\hyperref[desc:typearea.option.DIV.current]{\PValue{current}} (siehe +\DescPageRef{typearea.option.DIV.last}) oder die Anweisung +\DescRef{typearea.cmd.recalctypearea} (siehe +\DescPageRef{typearea.cmd.recalctypearea}) in \autoref{cha:typearea}. + +Das Paket \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} (siehe +\autoref{cha:scrlayer-scrpage}) bietet weitere Einflussmöglichkeiten für +Linien im Kopf und Fuß.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{pagestyle}\Parameter{Seitenstil} + \Macro{thispagestyle}\Parameter{lokaler Seitenstil} +\end{Declaration}% +Üblicherweise wird zwischen vier verschiedenen Seitenstilen unterschieden: +\begin{description} +\item[{\PageStyle{empty}% + \BeginIndex[indexmain]{Pagestyle}{empty}\LabelPageStyle{empty}}] ist der + Seitenstil, bei dem Kopf- und Fußzeile vollständig leer bleiben. Dies ist + bei {\KOMAScript} vollkommen identisch zu den Standardklassen.% +\item[{\PageStyle{headings}% + \BeginIndex[indexmain]{Pagestyle}{headings}\LabelPageStyle{headings}}] ist + der Seitenstil für lebende Kolumnentitel. Das sind Kolumnentitel, bei denen + Überschriften automatisch\Index[indexmain]{Kolumnentitel>automatisch} in den + Seitenkopf übernommen werden. Im Internet oder in Beschreibungen zu + \LaTeX-Paketen findet man auch häufig die englische Bezeichnung + »\emph{running headline}«. \OnlyAt{\Class{scrbook}\and \Class{scrreprt}}% + Bei den Klassen \Class{scrbook}\IndexClass{scrbook} und + \Class{scrreprt}\IndexClass{scrreprt} werden dabei im doppelseitigen Layout + die Überschriften der Kapitel und der Abschnitte in der Kopfzeile wiederholt + -- bei {\KOMAScript}\textnote{\KOMAScript{} vs. Standardklassen} jeweils + außen, bei den Standardklassen innen. Die Seitenzahl wird bei {\KOMAScript} + im Fuß außen, bei den Standardklassen im Kopf außen gesetzt. Im einseitigen + Layout werden nur die Überschriften der Kapitel verwendet und bei + {\KOMAScript} zentriert im Kopf ausgegeben. Die Seitenzahlen werden bei + {\KOMAScript} dann zentriert im Fuß gesetzt. \OnlyAt{\Class{scrartcl}}Bei + \Class{scrartcl}\IndexClass{scrartcl} wird entsprechend verfahren, jedoch + eine Ebene tiefer bei Abschnitt und Unterabschnitt angesetzt, da die + Gliederungsebene Kapitel hier nicht existiert. + + Während die Standardklassen\textnote{\KOMAScript{} vs. Standardklassen} + automatische Kolumnentitel immer in Versalien -- also Großbuchstaben -- + setzen, verwendet {\KOMAScript} die Schreibweise, die in der Überschrift + vorgefunden wurde. Dies hat verschiedene typografische Gründe. So sind + Versalien als Auszeichnung eigentlich viel zu mächtig. Verwendet man sie + trotzdem, sollten sie um einen Punkt kleiner gesetzt und leicht gesperrt + werden (siehe hierzu beispielsweise \cite{JTschErfreulich}). All dies findet + bei den Standardklassen keine Beachtung. + + Darüber hinaus können bei den \KOMAScript-Klassen mit den Optionen + \DescRef{\LabelBase.option.headsepline} und + \DescRef{\LabelBase.option.footsepline} (siehe + \DescPageRef{\LabelBase.option.headsepline}) Linien unter dem Kopf und über + dem Fuß gesetzt werden.% +\item[{\PageStyle{myheadings}% + \BeginIndex[indexmain]{Pagestyle}{myheadings}\LabelPageStyle{myheadings}}] + entspricht weitgehend dem Seitenstil \PageStyle{headings}, allerdings werden + die Kolumnentitel nicht automatisch\Index[indexmain]{Kolumnentitel>manuell} + erzeugt, sondern liegen in der Verantwortung des Anwenders. Er verwendet + dazu die Anweisungen \DescRef{\LabelBase.cmd.markboth}\IndexCmd{markboth} + und \DescRef{\LabelBase.cmd.markright}\IndexCmd{markright}\important{% + \DescRef{\LabelBase.cmd.markboth}\\ + \DescRef{\LabelBase.cmd.markright}} (siehe + \DescPageRef{\LabelBase.cmd.markright}). +\item[{\PageStyle{plain}% + \BeginIndex[indexmain]{Pagestyle}{plain}\LabelPageStyle{plain}}] + ist der Seitenstil, bei dem keinerlei Kolumnentitel\Index{Kolumnentitel} + verwendet, sondern nur eine Seitenzahl\Index{Seiten>Zahl}\Index{Paginierung} + ausgegeben wird. Bei\textnote{\KOMAScript{} vs. Standardklassen} den + Standardklassen wird diese Seitenzahl immer mittig im Fuß ausgegeben. Bei + {\KOMAScript} erfolgt die Ausgabe im doppelseitigen\Index{doppelseitig} + Layout stattdessen außen im Fuß. Der einseitige Seitenstil entspricht bei + {\KOMAScript} dem der Standardklassen.% +\end{description} + +\iftrue% Umbruchoptimierung!!!! +Der\important{\Macro{pagestyle}} Seitenstil kann jederzeit mit Hilfe der +\Macro{pagestyle}-Anweisung % +\else % +Mit \Macro{pagestyle} kann der Seitenstil jederzeit % +\fi % +gesetzt werden. Verwendet\textnote{Tipp!} man \Macro{pagestyle} vor +Anweisungen, die einen Seitenumbruch mit Einfügen einer +Vakatseite\Index{Vakatseite}\textnote{Vakatseite} herbeiführen können, und +soll die Änderung erst ab der neuen Seite gelten, so ist ein +\DescRef{\LabelBase.cmd.cleardoublepage} davor nützlich. +% +\iffalse % Umbruchkorrektur +Üblicherweise verwendet man \Macro{pagestyle} aber nur einmal zu +Beginn des Dokuments oder in der Präambel. +% +\fi + +Für\important{\Macro{thispagestyle}} eine Änderung des Seitenstils nur der +aktuellen Seite verwendet man stattdessen die Anweisung +\Macro{thispagestyle}. Dies geschieht auch an einigen Stellen im Dokument +automatisch. Beispielsweise wird bei allen Kapitelanfangsseiten implizit die +Anweisung +\Macro{thispagestyle}\PParameter{\DescRef{\LabelBase.cmd.chapterpagestyle}} +ausgeführt. + +Bitte\textnote{Achtung!} beachten Sie, dass die Umschaltung zwischen +automatischen und manuellen Kolumnentiteln bei Verwendung von +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} nicht +mehr über den Seitenstil, sondern mit speziellen Anweisungen erfolgt. Die +beiden Seitenstile \PageStyle{headings} und \PageStyle{myheadings} sollten +nicht zusammen mit diesem Paket verwendet werden. + +\BeginIndexGroup \BeginIndex[indexother]{}{Schrift>Art}% +\BeginIndex{FontElement}{pageheadfoot}\LabelFontElement{pageheadfoot}% +\LabelFontElement{pagehead}% +\BeginIndex{FontElement}{pagefoot}\LabelFontElement{pagefoot}% +\BeginIndex{FontElement}{pagenumber}\LabelFontElement{pagenumber}% +Um die Schriftarten von Kopf und Fuß der Seite oder der Seitenzahl zu +ändern\ChangedAt{v2.8p}{% + \Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}, % +verwenden Sie die Anweisungen \DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}). Für den Kopf und den Fuß ist dabei +das gleiche Element \FontElement{pageheadfoot}\IndexFontElement{pageheadfoot}% +\important{\FontElement{pageheadfoot}} zuständig. Das Element für die +Seitenzahl innerhalb des Kopfes oder Fußes heißt +\FontElement{pagenumber}\IndexFontElement{pagenumber}% +\important{\FontElement{pagenumber}}. Das ebenfalls in den \KOMAScript-Klassen +bereitgestellte Element \FontElement{pagefoot}\IndexFontElement{pagefoot}% +\important{\FontElement{pagefoot}} wird nur verwendet, wenn man mit dem Paket +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage} (siehe \autoref{cha:scrlayer-scrpage}, +\DescPageRef{scrlayer-scrpage.fontelement.pagefoot}) einen Seitenstil +definiert, bei dem auch der Fuß Text enthält. + +Die Voreinstellungen sind in \autoref{tab:maincls.defaultFontsHeadFoot} zu +finden. +% +\begin{table} +% \centering% +% \caption + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \addtokomafont{caption}{\raggedright}% + \begin{captionbeside} + [{Schriftvoreinstellungen für die Elemente des Seitenstils}] + {\label{tab:maincls.defaultFontsHeadFoot}% + \hspace{0pt plus 1ex}% + Vorein\-stellungen der Schrift für die Elemente des Seitenstils} + [l] + \begin{tabular}[t]{ll} + \toprule + Element & Voreinstellung \\ + \midrule + \FontElement{pagefoot}\IndexFontElement{pagefoot} & + \\ + \FontElement{pageheadfoot}\IndexFontElement{pageheadfoot} & + \Macro{normalfont}\Macro{normalcolor}\Macro{slshape} \\ + \FontElement{pagenumber}\IndexFontElement{pagenumber} & + \Macro{normalfont}\Macro{normalcolor}\\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} +% +\begin{Example} + \leavevmode\phantomsection\xmpllabel{cmd.pagestyle}% + Angenommen, Sie wollen Kopf und Fuß einen Schriftgrad kleiner und kursiv + setzen. Die Seitenzahl soll jedoch nicht kursiv, sondern fett gesetzt + werden. Davon abgesehen, dass das Ergebnis grauenvoll aussehen wird, können + Sie dies wie folgt erreichen: +\begin{lstcode} + \setkomafont{pageheadfoot}{% + \normalfont\normalcolor\itshape\small} + \setkomafont{pagenumber}{\normalfont\bfseries} +\end{lstcode} + Wollen Sie hingegen lediglich, dass zusätzlich zur bereits voreingestellten + schrägen Variante ebenfalls eine kleinere Schrift verwendet wird, so genügt: +\begin{lstcode} + \addtokomafont{pagehead}{\small} +\end{lstcode} + Wie Sie sehen, wurde im letzten Beispiel das Element + \FontElement{pagehead}\important{\FontElement{pagehead}} verwendet. Das + gleiche Ergebnis erhalten Sie auch, wenn Sie stattdessen + \FontElement{pageheadfoot} verwenden (siehe + \autoref{tab:maincls.fontelements}, + \autopageref{tab:maincls.fontelements}). +\end{Example} +Es ist an dieser Stelle nicht möglich, Versalien für die automatischen +Kolumnentitel zu erzwingen. Wenn Sie dies wünschen, müssen Sie beispielsweise +\DescRef{tocbasic.cmd.MakeMarkcase}\IndexCmd{MakeMarkcase} entsprechend +umdefinieren. Es wird jedoch empfohlen, in solchen Fällen das Paket +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} zu verwenden +(siehe \autoref{cha:scrlayer-scrpage}, +\DescPageRef{scrlayer-scrpage.option.markcase}). + +Werden\textnote{Tipp!} eigene Seitenstile definiert, sind eventuell die +Befehle \DescRef{\LabelBase.cmd.usekomafont}\PParameter{pageheadfoot}, +\DescRef{\LabelBase.cmd.usekomafont}\PParameter{pagenumber} sowie +\DescRef{\LabelBase.cmd.usekomafont}\PParameter{pagefoot} +nützlich. Insbesondere falls Sie dafür nicht das \KOMAScript-Paket +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} (siehe +\autoref{cha:scrlayer-scrpage}), sondern beispielsweise das Paket +\Package{fancyhdr}\IndexPackage{fancyhdr}\important{\Package{fancyhdr}} (siehe +\cite{package:fancyhdr}) einsetzen, können Sie diese Befehle in Ihren +Definitionen verwenden. Dadurch bleiben Sie zu \KOMAScript{} möglichst +kompatibel. Verwenden Sie diese Befehle in Ihren eigenen Definitionen nicht, +so bleiben Schriftänderungen wie in den vorangehenden Beispielen +unbeachtet. Das Paket +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage} sorgt selbst für maximale +Kompatibilität. Solange beispielsweise für die Seitenzahl nicht direkt +\DescRef{\LabelBase-experts.cmd.thepage}\IndexCmd{thepage}, sondern +das dafür vorgesehene +\DescRef{\LabelBase-experts.cmd.pagemark}\IndexCmd{pagemark} verwendet +wird.% +\EndIndexGroup +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{markboth}\Parameter{linke Marke}\Parameter{rechte Marke} + \Macro{markright}\Parameter{rechte Marke} +\end{Declaration} +Beim Seitenstil \DescRef{\LabelBase.pagestyle.myheadings}% +\important{\DescRef{\LabelBase.pagestyle.myheadings}}% +\IndexPagestyle{myheadings} wird der Kolumnentitel nicht automatisch +gesetzt. Stattdessen setzt man ihn mit Hilfe der Anweisungen \Macro{markboth} +und \Macro{markright}. Dabei wird die \PName{linke Marke} normalerweise im +Kopf linker Seiten und die \PName{rechte Marke} im Kopf rechter Seiten +verwendet. Im einseitigen Satz existiert nur die rechte Marke. Bei Verwendung +des Pakets \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} steht +außerdem die Anweisung \DescRef{scrlayer-scrpage.cmd.markleft}% +\IndexCmd{markleft}\important{\DescRef{scrlayer-scrpage.cmd.markleft}} zur +Verfügung. + +Die Anweisungen können auch zusammen mit anderen Seitenstilen verwendet +werden. Bei Kombination mit automatischen Kolumnentiteln, etwa dem Seitenstil +\DescRef{\LabelBase.pagestyle.headings}\IndexPagestyle{headings}, ist der +Wirkungsbereich allerdings bis zum nächsten automatischen Setzen der +entsprechenden Marke begrenzt.% +% +\EndIndexGroup + +\begin{Declaration} + \Macro{titlepagestyle} + \Macro{partpagestyle} + \Macro{chapterpagestyle} + \Macro{indexpagestyle} +\end{Declaration}% +\Index{Titel>Seitenstil}% +\Index{Teil>Seitenstil}% +\Index{Kapitel>Seitenstil}% +\Index{Stichwortverzeichnis>Seitenstil}% +Auf einigen Seiten wird mit Hilfe von \DescRef{\LabelBase.cmd.thispagestyle} +automatisch ein anderer Seitenstil gewählt. Welcher Seitenstil dies ist, wird +diesen vier Makros entnommen, wobei \Macro{partpagestyle} und +\Macro{chapterpagestyle}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} nur bei +den Klassen \Class{scrbook} und \Class{scrreprt} nicht jedoch bei +\Class{scrartcl} existieren. In der Voreinstellung ist der Seitenstil in allen +vier Fällen \DescRef{\LabelBase.pagestyle.plain}\IndexPagestyle{plain}. Die +Bedeutung der einzelnen Makros entnehmen Sie bitte +\autoref{tab:specialpagestyles}. +% +\begin{table} + \centering + \caption{Makros zur Festlegung des Seitenstils besonderer Seiten} + \label{tab:specialpagestyles} + \begin{desctabular} + \mentry{titlepagestyle}{Seitenstil der Seite mit der Titelei bei + Titelköpfen (siehe \autoref{sec:\LabelBase.titlepage})}% + \mentry{partpagestyle}{Seitenstil der Seiten mit \DescRef{\LabelBase.cmd.part}-Titeln + (siehe \autoref{sec:\LabelBase.structure})}% + \mentry{chapterpagestyle}{Seitenstil auf Kapitelanfangsseiten (siehe + \autoref{sec:\LabelBase.structure})}% + \mentry{indexpagestyle}{Seitenstil der ersten Stichwortverzeichnisseite + (siehe \autoref{sec:\LabelBase.index})}% + \end{desctabular} +\end{table} +% +Die Seitenstile können mit Hilfe von \Macro{renewcommand} umdefiniert +werden. +\begin{Example} + Angenommen, Sie wollen nicht, dass die Seiten mit der + \DescRef{\LabelBase.cmd.part}-Überschrift mit einer Nummer versehen + werden. Dann setzen Sie folgende Anweisung beispielsweise in der Präambel + Ihres Dokuments: +\begin{lstcode} + \renewcommand*{\partpagestyle}{empty} +\end{lstcode} + Wie Sie auf \DescPageRef{\LabelBase.pagestyle.empty} erfahren haben, ist + der Seitenstil \DescRef{\LabelBase.pagestyle.empty}\IndexPagestyle{empty} + genau das, was in diesem Beispiel verlangt wird. Natürlich können Sie auch + einen selbst definierten Seitenstil verwenden. + + Angenommen, Sie haben mit dem Paket + \hyperref[cha:scrlayer]{\Package{scrlayer}} (siehe \autoref{cha:scrlayer}) + oder Paket \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} + (siehe \autoref{cha:scrlayer-scrpage}) einen eigenen Seitenstil für + Kapitelanfangsseiten\Index{Kapitel>Seitenstil}% + \textnote{Kapitel\-anfangs\-seiten} definiert. Diesem Seitenstil haben Sie + den passenden Namen \PValue{chapter} gegeben. Um ihn auch tatsächlich zu + verwenden, definieren Sie \Macro{chapterpagestyle} entsprechend um: +\begin{lstcode} + \renewcommand*{\chapterpagestyle}{chapter} +\end{lstcode} + + Angenommen, Sie wollen das + Inhaltsverzeichnis\Index{Inhaltsverzeichnis}\textnote{Inhaltsverzeichnis} + eines Buches insgesamt nicht mit Seitenzahlen versehen. Danach soll aber + wieder mit dem Seitenstil \PageStyle{headings} gearbeitet werden sowie mit + \PageStyle{plain} auf den Kapitelanfangsseiten. Dann verwenden Sie + beispielsweise: +\begin{lstcode} + \clearpage + \pagestyle{empty} + \renewcommand*{\chapterpagestyle}{empty} + \tableofcontents + \clearpage + \pagestyle{headings} + \renewcommand*{\chapterpagestyle}{plain} +\end{lstcode} + Sie können die Umdefinierung des Seitenstils für Kapitelanfangsseiten aber + auch lokal halten. Das hat den Vorteil, dass Sie dann keine Annahmen über + die vor der Änderung gültige Einstellung treffen müssen. Die Änderung + des Seitenstils selbst können Sie gleichermaßen lokal halten: +\begin{lstcode} + \clearpage + \begingroup + \pagestyle{empty} + \renewcommand*{\chapterpagestyle}{empty} + \tableofcontents + \clearpage + \endgroup +\end{lstcode} + Beachten\textnote{Achtung!} Sie jedoch, dass Sie niemals eine nummerierte + Gliederungsüberschrift in eine Gruppe packen sollten. Anderenfalls können + Anweisungen wie \Macro{label} rasch zu unvorhergesehenen Ergebnissen + führen. + + Auf \DescPageRef{tocbasic.cmd.AfterTOCHead} in \autoref{sec:tocbasic.toc} + werden Sie die Anweisung \DescRef{tocbasic.cmd.AfterTOCHead} kennenlernen, + mit der eine Lösung noch einfacher ist: +\begin{lstcode} + \AfterTOCHead[toc]{% + \thispagestyle{empty}% + \pagestyle{empty}% + } +\end{lstcode}% + Hierbei wird die Tatsache ausgenutzt. dass bei mehreren + \DescRef{\LabelBase.cmd.thispagestyle}-Anweisungen auf derselben Seite immer + die letzte gewinnt. +\end{Example} + +\begin{Explain} + Wer nun glaubt, er könne auf Kapitelanfangsseiten ebenfalls mit + lebenden Kolumnentiteln arbeiten, indem er einfach +\begin{lstcode} + \renewcommand*{\chapterpagestyle}{headings} +\end{lstcode} + verwendet, sollte in \autoref{sec:maincls-experts.addInfos} auf + \DescPageRef{maincls-experts.cmd.rightmark} Näheres über die + Hintergründe zu \DescRef{maincls-experts.cmd.rightmark} nachlesen. Auch die + Ausführungen zu \DescRef{scrlayer-scrpage-experts.cmd.rightfirstmark} ab + Seite \DescPageRef{scrlayer-scrpage-experts.cmd.rightfirstmark} in + \autoref{cha:scrlayer-scrpage-experts}, \autoref{part:forExperts} können + hierzu wichtige Informationen liefern.% +\end{Explain} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{pagenumbering}\Parameter{Nummerierungsstil} +\end{Declaration} +Diese Anweisung funktioniert bei \KOMAScript{} in der gleichen Weise wie +bei den Standardklassen. Genau genommen handelt es sich dabei weder um eine +Fähigkeit der Standardklassen noch der \KOMAScript-Klassen, sondern um eine +Anweisung des \LaTeX-Kerns. Sie wird verwendet, um den +\PName{Nummerierungsstil} für die Seitenzahlen umzuschalten. + +Die Umschaltung gilt ab sofort, also ab der Seite, auf der diese Anweisung +aufgerufen wird. Gegebenenfalls sollte also zuvor mit +\DescRef{\LabelBase.cmd.clearpage} oder besser +\DescRef{\LabelBase.cmd.cleardoubleoddpage}% +\important{\DescRef{\LabelBase.cmd.cleardoubleoddpage}}% +\IndexCmd{cleardoubleoddpage} diese Seite erst beendet werden. Mögliche +Angaben für den \PName{Nummerierungsstil} sind \autoref{tab:numberKind} zu +entnehmen. +% +\begin{table} +% \centering +% \caption + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \addtokomafont{caption}{\raggedright}% + \begin{captionbeside} + {\label{tab:numberKind}% + \hspace{0pt plus 1ex}% + Verfügbare Nummerierungsstile für Seitenzahlen} + \begin{tabular}[t]{lll} + \toprule + Nummerierungsstil & Beispiel & Bedeutung \\ + \midrule + \PValue{arabic} & 8 & arabische Zahlen \\ + \PValue{roman} & viii & kleine römische Zahlen \\ + \PValue{Roman} & VIII & große römische Zahlen \\ + \PValue{alph} & h & Kleinbuchstaben \\ + \PValue{Alph} & H & Großbuchstaben \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} + +Der\textnote{Achtung!} Aufruf von \Macro{pagenumbering} setzt immer die +Seitenzahl\Index{Seiten>Zahl} zurück. Die aktuelle Seite bekommt also die +Nummer 1 im gewählten \PName{Nummerierungsstil}. Damit bei doppelseitigen +Dokumenten diese neue Seite auch wirklich auf eine gerade Seite folgt, die +linke Seite also nicht etwa fehlt, sollte man daher vor \Macro{pagenumbering} +immer \DescRef{\LabelBase.cmd.cleardoubleoddpage}% +\important{\DescRef{\LabelBase.cmd.cleardoubleoddpage}}% +\IndexCmd{cleardoubleoddpage} einfügen. Näheres zu einer dabei gegebenenfalls +eingefügten Vakatseite erfahren Sie im nächsten Abschnitt. + +\begin{Explain} + Lassen Sie mich noch ein Wort zu einem häufigen Fehler verlieren, den man in + diversen Vorlagen findet, die im Internet kursieren. Wenn Sie -- natürlich + ohne den Eingangskommentar -- auf Zeilen wie: +\begin{lstcode} + % Achtung dieses Beispiel enthält Fehler! + % Beachten Sie bitte die Erklärungen im Text! + \tableofcontents + \pagenumbering{arabic} + \setcounter{page}{1} +\end{lstcode} + stoßen, so ist das ein untrügliches Zeichen dafür, dass der Ersteller dieser + Vorlage obige Ausführungen nicht gelesen oder nicht verstanden hat. Da + \DescRef{\LabelBase.cmd.tableofcontents} das Inhaltsverzeichnis zwar + ausgibt, aber die letzte Seite nicht automatisch beendet, wird bereits für + diese letzte Seite des Inhaltsverzeichnisses die Seitennummerierung + umgeschaltet. Sie erhält damit die arabische Seitenzahl 1. Es fehlt also + \DescRef{\LabelBase.cmd.cleardoubleoddpage} vor + \Macro{pagenumbering}. Ebenso ist die letzte Zeile mit dem Setzen der + Seitennummerierung auf 1 überflüssig, da dies bereits von + \Macro{pagenumbering} erledigt wird. + + Teilweise findet man -- natürlich ohne den Eingangskommentar -- auch: +\begin{lstcode} + % Achtung dieses Beispiel enthält Fehler! + % Beachten Sie bitte die Erklärungen im Text! + \tableofcontents + \pagebreak + \pagenumbering{arabic} + \setcounter{page}{1} +\end{lstcode} + Hier hat der Ersteller versucht, das Problem mit der letzten Seite des + Inhaltsverzeichnisses mit Hilfe von \Macro{pagebreak}\IndexCmd{pagebreak} zu + lösen. + + Diese Lösung ist aber leider auch nicht viel besser. Hier wird die letzte + Seite des Inhaltsverzeichnisses auf die nächste Seite umbrochen. Damit + werden bei einem doppelseitigen Dokument unter Umständen die Einträge auf + der letzten Seite mit einem erhöhten vertikalen Abstand gesetzt (siehe + \DescRef{\LabelBase.cmd.flushbottom} auf + \DescPageRef{\LabelBase.cmd.flushbottom}). \Macro{pagebreak} ist hier + eindeutig die falsche Anweisung. + + Aber auch \Macro{newpage}\IndexCmd{newpage} oder + \DescRef{\LabelBase.cmd.clearpage} würden bei einem doppelseitigen Dokument + nicht genügen. Hätte die letzte Seite des Inhaltsverzeichnisses + beispielsweise die römische Nummer vii, so würde auf die römisch nummerierte + rechte Seite nun unmittelbar die arabisch nummerierte rechte Seite 1 + folgen. Eine linke Seite zwischen diesen beiden Seiten würde im Dokument + fehlen, was beim späteren Druck erhebliche Probleme bereiten könnte. + + Mein Rat: Vermeiden Sie die Verwendung von Vorlagen, die bereits in solch + einfachen Dingen Fehler enthalten. Korrekt wäre übrigens: +\begin{lstcode} + \tableofcontents + \cleardoubleoddpage + \pagenumbering{arabic} +\end{lstcode} + Das gilt auch, wenn mit \Class{scrartcl}\OnlyAt{\Class{scrartcl}} eine + Klasse verwendet wird, bei der üblicherweise nach dem Inhaltsverzeichnis + keine neue Seite begonnen wird. Schaltet man die Seitennummerierung um, so + muss eine neue rechte Seite begonnen werden. Wollen Sie eine solche + Umschaltung nicht, so sollten Sie den Nummerierungsstil der Seiten über das + gesamte Dokument konsequent durchhalten, ohne ihn zwischendurch zu + ändern. +\iffalse% Umbruchkorrekturtext + Bei Artikeln oder anderen kurzen Dokumenten ist das generell zu + empfehlen. +\fi + + Einfacher wird die Änderung des Nummerierungsstils bei Verwendung von + \Class{scrbook}\OnlyAt{\Class{scrbook}}. Dort werden Sie durch + die beiden Anweisungen \DescRef{\LabelBase.cmd.frontmatter}% + \important{\DescRef{\LabelBase.cmd.frontmatter}\\ + \DescRef{\LabelBase.cmd.mainmatter}}% + \IndexCmd{fontmatter} und \DescRef{\LabelBase.cmd.mainmatter}% + \IndexCmd{mainmatter} bei der am häufigsten verwendeten Umschaltung + unterstützt. Nähere Informationen entnehmen Sie bitte + \autoref{sec:maincls.separation}, ab + \DescPageRef{\LabelBase.cmd.mainmatter}.% +\end{Explain}% +\EndIndexGroup +\EndIndexGroup + + +\LoadCommonFile{interleafpage}% \section{Vakatseiten} + +\LoadCommonFile{footnotes}% \section{Fußnoten} + +\section[Abgrenzung]{Abgrenzung\protect\OnlyAt{\Class{scrbook}}} +\seclabel{separation} + +Bei Büchern gibt es teilweise die Grobauf"|teilung in +\emph{Vorspann}\Index{Vorspann}, \emph{Hauptteil}\Index{Hauptteil} und +\emph{Nachspann}\Index{Nachspann}. Auch \KOMAScript{} bietet für +\Class{scrbook} diese Möglichkeit. + + +\begin{Declaration} + \Macro{frontmatter} + \Macro{mainmatter} + \Macro{backmatter} +\end{Declaration}% +Mit \Macro{frontmatter}\important{\Macro{frontmatter}} wird der Vorspann +eingeleitet. Im Vorspann werden die nummerierten Seiten mit römischen +Seitenzahlen versehen. Kapitelüberschriften sind im Vorspann nicht +nummeriert. Abschnittsüberschriften wären jedoch nummeriert, gingen von +Kapitelnummer~0 aus und wären außerdem über Kapitelgrenzen hinweg durchgehend +nummeriert. Dies spielt jedoch keine Rolle, da der Vorspann allenfalls für die +Titelei, das Inhalts-\Index{Inhaltsverzeichnis}, +Abbildungs-\Index{Abbildungen>Verzeichnis} und +Tabellenverzeichnis\Index{Tabellen>Verzeichnis} und ein +Vorwort\Index{Vorwort} verwendet wird. Das Vorwort kann also als normales +Kapitel gesetzt werden. Ein Vorwort sollte niemals in Abschnitte unterteilt, +sondern möglichst kurz gefasst werden. Im Vorwort wird also keine tiefere +Gliederungsebene als Kapitel benötigt. + +Für den Fall, dass der Anwender dies anders sieht und nummerierte +Abschnitte\Index{Abschnitt>Nummer} in den Kapiteln des Vorspanns haben will, +enthält ab Version~2.97e\ChangedAt{v2.97e}{\Class{scrbook}}% +\important{\OptionValueRef{\LabelBase}{version}{2.97e}} die Nummerierung der +Abschnitte keine Kapitelnummer. Diese Änderung gibt es nur, wenn eine +Kompatibilität ab Version~2.97e eingestellt ist (siehe Option +\DescRef{\LabelBase.option.version}, +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}). Es wird ausdrücklich darauf +hingewiesen, dass dadurch bezüglich der Nummern eine Verwechslung mit +Kapitelnummern gegeben ist! Die Verwendung von \DescRef{\LabelBase.cmd.addsec} und +\DescRef{\LabelBase.cmd.section*} (siehe \autoref{sec:\LabelBase.structure}, +\DescPageRef{\LabelBase.cmd.section*} und \DescPageRef{\LabelBase.cmd.addsec}) +sind aus Sicht des Autors im Vorspann deshalb unbedingt vorzuziehen! + +Ab Version~2.97e\ChangedAt{v2.97e}{\Class{scrbook}}% +\important{\OptionValueRef{\LabelBase}{version}{2.97e}} enthalten auch die +Nummern für Gleitumgebungen wie Tabellen\Index{Tabellen>Nummern} und +Abbildungen\Index{Abbildungen>Nummern} und die +Gleichungsnummern\Index{Gleichungen>Nummern} im Vorspann keinen +Kapitelanteil. Auch dies erfordert eine entsprechende +Kompatibilitätseinstellung (siehe Option \DescRef{\LabelBase.option.version}, +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}). + +Mit \Macro{mainmatter}\important{\Macro{mainmatter}} wird der Hauptteil +eingeleitet. Existiert kein Vorspann, so kann diese Anweisung auch +entfallen. Im Hauptteil sind arabische Seitenzahlen voreingestellt. Die +Seitenzählung beginnt im Hauptteil neu mit der 1. + +Mit \Macro{backmatter}\important{\Macro{backmatter}} wird der Nachspann +eingeleitet. Was zum Nachspann gehört, ist unterschiedlich. Manchmal wird im +Nachspann nur das Literaturverzeichnis\Index{Literaturverzeichnis}, manchmal +nur das Stichwortverzeichnis\Index{Stichwortverzeichnis} gesetzt. Manchmal +erscheint der gesamte Anhang im Nachspann. Der Nachspann gleicht bezüglich der +Gliederungsüberschriften dem Vorspann. Eine getrennte Seitennummerierung ist +jedoch nicht vorgesehen. Falls Sie dies ebenfalls benötigen, bedienen Sie sich +bitte der Anweisung \DescRef{\LabelBase.cmd.pagenumbering}% +\important{\DescRef{\LabelBase.cmd.pagenumbering}} aus +\autoref{sec:\LabelBase.pagestyle}, +\DescPageRef{\LabelBase.cmd.pagenumbering}.% +% +\EndIndexGroup + + +\section{Gliederung} +\seclabel{structure}% +\BeginIndexGroup +\BeginIndex{}{Gliederung} + +Unter der Gliederung versteht man die Einteilung eines Dokuments in +Teile, Kapitel, Abschnitte und weitere Gliederungsebenen. + + +\begin{Declaration} + \OptionVName{open}{Methode} +\end{Declaration}% +Bei\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} den \KOMAScript-Klassen +\Class{scrbook} und \Class{scrreprt} kann gewählt werden, wo im doppelseitigen +Satz neue Kapitel beginnen. In der Voreinstellung beginnen bei +\Class{scrreprt} neue Kapitel\Index{Kapitel>Anfang} auf der nächsten neuen +Seite. Dies entspricht der \PName{Methode} \PValue{any}. Demgegenüber beginnen +bei \Class{scrbook} neue Kapitel auf der nächsten rechten Seite. Dies +entspricht der \PName{Methode} \PValue{right} und ist bei den meisten Büchern +üblich. In einigen Fällen sollen neue Kapitel jedoch auf der linken Seite +einer kompletten Doppelseite beginnen. Dies entspricht der \PName{Methode} +\PValue{left}\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}}. +Eine Zusammenfassung der möglichen Werte findet sich in +\autoref{tab:maincls.open}. Dabei sind auch die Auswirkungen auf +\DescRef{\LabelBase.cmd.cleardoublepage} sowie +% die vier \KOMAScript"=Anweisungen +\DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, +\DescRef{\LabelBase.cmd.cleardoublestandardpage}, +\DescRef{\LabelBase.cmd.cleardoubleplainpage} und die letzte der betroffenen +Anweisungen, \DescRef{\LabelBase.cmd.cleardoubleemptypage}, (siehe +\autoref{sec:\LabelBase.emptypage}, +\DescPageRef{\LabelBase.cmd.cleardoublepage}) angegeben. + +\begin{table} + \caption[{Mögliche Werte für Option \Option{open}}]{Mögliche Werte für + Option \Option{open} zur Auswahl von Umbrüchen mit Vakatseiten bei + \Class{scrbook} und \Class{scrreprt}} + \begin{desctabular} + \pventry{any}{% + Teile, Kapitel, Index und Nachspann verwenden + \DescRef{\LabelBase.cmd.clearpage}, aber nicht + \DescRef{\LabelBase.cmd.cleardoublepage};\newline die Anweisungen + \DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, + \DescRef{\LabelBase.cmd.cleardoublestandardpage}, + \DescRef{\LabelBase.cmd.cleardoubleplainpage}, + \DescRef{\LabelBase.cmd.cleardoubleemptypage} und + \DescRef{\LabelBase.cmd.cleardoublepage} verhalten sich wie bei + \OptionValue{open}{right}.% + }% + \pventry{left}{% + Teile, Kapitel, Index und Nachspann verwenden + \DescRef{\LabelBase.cmd.cleardoublepage};\newline die Anweisungen + \DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, + \DescRef{\LabelBase.cmd.cleardoublestandardpage}, + \DescRef{\LabelBase.cmd.cleardoubleplainpage}, + \DescRef{\LabelBase.cmd.cleardoubleemptypage} und + \DescRef{\LabelBase.cmd.cleardoublepage} erzeugen einen Seitenumbruch + und fügen gegebenenfalls eine Vakatseite\Index{Vakatseite} ein, um im + doppelseitigen Satz auf die nächste linke Seite zu gelangen.% + \IndexOption{open~=\textKValue{left}}}% + \pventry{right}{% + Teile, Kapitel, Index und Nachspann verwenden + \DescRef{\LabelBase.cmd.cleardoublepage};\newline die Anweisungen + \DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, + \DescRef{\LabelBase.cmd.cleardoublestandardpage}, + \DescRef{\LabelBase.cmd.cleardoubleplainpage}, + \DescRef{\LabelBase.cmd.cleardoubleemptypage} und + \DescRef{\LabelBase.cmd.cleardoublepage} erzeugen einen Seitenumbruch + und fügen gegebenenfalls eine Vakatseite ein, um im doppelseitigen Satz + auf die nächste rechte Seite zu gelangen.% + \IndexOption{open~=\textKValue{right}}}% + \end{desctabular} + \label{tab:maincls.open} +\end{table} + +Da im einseitigen Satz nicht zwischen linken und rechten Seiten unterschieden +wird, hat die Option dort keine Wirkung. + +Bei der Klasse \Class{scrartcl} ist die oberste Gliederungsebene unter dem +Teil der Abschnitt. Daher unterstützt \Class{scrartcl} diese Option nicht.% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{chapterprefix}{Ein-Aus-Wert} + \OptionVName{appendixprefix}{Ein-Aus-Wert} + \Macro{IfChapterUsesPrefixLine}\Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration}% +Bei\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} den Standardklassen +\Class{book} und \Class{report} werden Kapitelüberschriften% +\Index{Kapitel>Ueberschrift=Überschrift} in der Form ausgegeben, dass zunächst +in einer Zeile »Kapitel«\iffree{\footnote{Bei Verwendung einer anderen Sprache + als Deutsch wird »Kapitel« selbstverständlich in der jeweiligen Sprache + gesetzt.}}{\footnote{Die Ausgabe erfolgt tatsächlich in der aktuell + aktiven Sprache.}}, % +gefolgt von der Kapitelnummer steht. Erst ab der nächsten Zeile wird dann die +Überschrift in linksbündigem Flattersatz ausgegeben. Bei {\KOMAScript} kann +dieses Verhalten mit der Klassenoption \Option{chapterprefix} ebenfalls +erreicht werden. Als \PName{Ein-Aus-Wert} kann einer der Standardwerte für +einfache Schalter aus \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} verwendet werden. +Voreingestellt\textnote{\KOMAScript{} vs. Standardklassen} ist +\OptionValue{chapterprefix}{false}, während das +Verhalten\important{\Option{chapterprefix}} der Standardklassen +\OptionValue{chapterprefix}{true} entspricht. Die Optionen wirken sich +außerdem auf das Aussehen der automatischen Kolumnentitel für Kapitel aus +(siehe \autoref{sec:\LabelBase.pagestyle}, +\DescPageRef{\LabelBase.pagestyle.headings}). + +Zuweilen kommt es vor, dass man die Kapitelüberschriften im Hauptteil durchaus +in der einfachen Form von \OptionValue{chapterprefix}{false} setzen +möchte. Gleichzeitig\important{\Option{appendixprefix}} sollen die +Überschriften im Anhang\Index{Anhang} jedoch davon abweichend mit einer +Präfixzeile --~»Anhang«, gefolgt vom Buchstaben des Anhangs~-- versehen +werden. Dies ist mit der Einstellung \OptionValue{appendixprefix}{true} +möglich. Da sich jedoch dadurch ein inkonsistentes Layout ergibt, rate ich von +der Verwendung ab. Letztlich führt die Option dazu, dass +\Option{chapterprefix} zu Beginn des Anhangs automatisch geändert wird. + +Mit der Anweisung +\Macro{IfChapterUsesPrefixLine}\ChangedAt{v3.18}{\Class{scrbook}\and + \Class{scrreprt}} kann man Code in Abhängigkeit der aktuellen Einstellung +für die Präfixzeile ausführen. Ist \Option{chapterprefix} aktiv, so wird der +\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. + +\BeginIndex{FontElement}{chapterprefix}% +Die Schriftart der Kapitelnummernzeile bei \OptionValue{chapterprefix}{true} +oder \OptionValue{appendixprefix}{true} kann mit den beiden Anweisungen +\DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, \DescPageRef{\LabelBase.cmd.setkomafont}) +für das Element \FontElement{chapterprefix}% +\ChangedAt{v2.96a}{\Class{scrbook}\and \Class{scrreprt}} geändert +werden. Voreingestellt ist die Verwendung des Elements +\DescRef{\LabelBase.fontelement.chapter}\IndexFontElement{chapter} (siehe +\DescPageRef{\LabelBase.cmd.chapter}, sowie +\autoref{tab:maincls.structureElementsFont}, +\autopageref{tab:maincls.structureElementsFont}). + +Weitere Einstellmöglichkeiten für Kapitelüberschriften sind den Erklärungen +zu \DescRef{maincls-experts.cmd.RedeclareSectionCommand} sowie den Anweisungen +\DescRef{maincls-experts.cmd.chapterlineswithprefixformat} und +\DescRef{maincls-experts.cmd.chapterlinesformat} in +\autoref{sec:maincls-experts.experts}, \autoref{part:forExperts} zu entnehmen.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{headings}{Einstellung} +\end{Declaration} +Die Überschriften\index{Ueberschriften=Überschriften} werden sowohl bei den +Standardklassen als auch bei {\KOMAScript} normalerweise recht groß +gesetzt. Dies gefällt nicht jedem und wirkt insbesondere bei kleinen +Papiergrößen oft störend. Daher stehen bei {\KOMAScript} neben den mit der +Option \OptionValue{headings}{big}\IndexOption{headings~=\textKValue{big}}% +\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}% +\important{\OptionValue{headings}{big}\\ + \OptionValue{headings}{normal}\\ + \OptionValue{headings}{small}} sehr groß voreingestellten Überschriften die +beiden Möglichkeiten +\OptionValue{headings}{normal}\IndexOption{headings~=\textKValue{normal}} und +\OptionValue{headings}{small}\IndexOption{headings~=\textKValue{small}} zur +Verfügung, mit denen man insgesamt kleinere Überschriften erhält. Die aus den +Optionen resultierenden Schriftgrößen sind für die Überschriften der Klassen +\Class{scrbook} und \Class{scrreprt} +\autoref{tab:maincls.structureElementsFont}, +\autopageref{tab:maincls.structureElementsFont} zu entnehmen. Konkret setzen +alle drei Einstellungen die Schrift für die Elemente +\DescRef{\LabelBase.fontelement.chapter}\IndexFontElement{chapter}, +\DescRef{\LabelBase.fontelement.section}\IndexFontElement{section}, +\DescRef{\LabelBase.fontelement.subsection}\IndexFontElement{subsection}, +\DescRef{\LabelBase.fontelement.subsubsection}\IndexFontElement{subsubsection}, +\DescRef{\LabelBase.fontelement.paragraph}\IndexFontElement{paragraph} und +\DescRef{\LabelBase.fontelement.subparagraph}\IndexFontElement{subparagraph} +auf entsprechende Voreinstellungen zurück. Bei \Class{scrartcl} werden +generell etwas kleinere Überschriften verwendet. \OnlyAt{\Class{scrbook}\and + \Class{scrreprt}}Die Abstände vor und nach Kapitelüberschriften werden von +diesen Optionen ebenfalls neu definiert. + +\iffalse% +Auf Kapitelüberschriften wirkt sich außerdem die Option \Option{headings} mit +den Einstellungen \PValue{twolinechapter} oder \PValue{onelinechapter} aus, +die den oben erklärten Optionen +\OptionValueRef{\LabelBase}{chapterprefix}{true} und +\OptionValueRef{\LabelBase}{chapterprefix}{false} entsprechen. Im Anhang gibt +es zusätzlich Auswirkungen durch die Einstellungen \PValue{onelineappendix} +und \PValue{twolineappendix} für Option \Option{headings}, was dann +\OptionValueRef{\LabelBase}{appendixprefix}{false} und +\OptionValueRef{\LabelBase}{appendixprefix}{true} entspricht (siehe ebenfalls +oben). \else% +Auf Kapitelüberschriften\OnlyAt{\Class{scrbook}\and\Class{scrreprt}} wirken +sich\important{% + \OptionValue{headings}{twolinechapter}\\ + \OptionValue{headings}{onelinechapter}\\ + \OptionValue{headings}{twolineappendix}\\ + \OptionValue{headings}{onelineappendix}% +} außerdem die beiden Optionen \OptionValue{headings}{twolinechapter} und +\OptionValue{headings}{onelinechapter}, die den oben erklärten +\OptionValueRef{\LabelBase}{chapterprefix}{true} und +\OptionValueRef{\LabelBase}{chapterprefix}{false} entsprechen, aus. Für den +Anhang stehen als Alternativen zu +\OptionValueRef{\LabelBase}{appendixprefix}{true} und +\OptionValueRef{\LabelBase}{appendixprefix}{false} die Optionen +\OptionValue{headings}{twolineappendix} und +\OptionValue{headings}{onelineappendix} zur Verfügung. \iffalse Für den +Anhang stehen \OptionValue{headings}{twolineappendix} und +\OptionValue{headings}{onelineappendix} zur Verfügung, die den Optionen +\OptionValueRef{\LabelBase}{appendixprefix}{true} und +\OptionValueRef{\LabelBase}{appendixprefix}{false} entsprechen (siehe +ebenfalls oben). \fi Diese existieren natürlich nicht bei \Class{scrartcl}% +\iffree{}{% Umbruchkorrekturtext + , da diese Klasse nicht über Kapitel verfügt}% +.% +\fi + +Option\ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} \OptionValue{headings}{standardclasses}% +\important{\OptionValue{headings}{standardclasses}} passt zum Einen die +Schriftgrößen der Überschriften an die der Standardklassen an. Des Weiteren +wird die Schrift für Element +\DescRef{\LabelBase.fontelement.disposition}\IndexFontElement{disposition} auf +\Macro{bfseries} gesetzt. Es wird also für Überschriften nicht mehr auf einen +serifenlosen Font umgeschaltet. Bei Verwendung von +\Class{scrbook}\OnlyAt{\Class{scrbook}\and\Class{scrreprt}} oder +\Class{scrreprt} wird außerdem \OptionValue{headings}{twolinechapter} gesetzt +und die Abstände bei den Kapitelüberschriften werden denen der Standardklassen +angepasst. + +Für\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} Kapitel kann mit +\OptionValue{headings}{openany}\important{% + \OptionValue{headings}{openany}\\ + \OptionValue{headings}{openright}\\ + \OptionValue{headings}{openleft}}, \OptionValue{headings}{openright} und +\OptionValue{headings}{openleft} die Methode für Kapitelanfänge alternativ zur +Verwendung der Option \DescRef{\LabelBase.option.open} mit den Werten +\PValue{any}, \PValue{right} und \PValue{left} (siehe oben) gesetzt werden. + +Eine\ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} weitere Besonderheit von \KOMAScript{} betrifft die +Behandlung des optionalen +Arguments der Gliederungsbefehle. Sowohl dessen +Funktion% +\important{\OptionValue{headings}{optiontohead}\\ + \OptionValue{headings}{optiontotoc}\\ + \OptionValue{headings}{optiontoheadandtoc}} als +auch dessen Bedeutung kann durch die Einstellungen +\OptionValue{headings}{optiontohead}% +\IndexOption{headings~=\textKValue{optiontohead}}, +\OptionValue{headings}{optiontotoc}\IndexOption{headings~=\textKValue{optiontotoc}} +und \OptionValue{headings}{optiontoheadandtoc}% +\IndexOption{headings~=\textKValue{optiontoheadandtoc}} +beeinflusst werden. + +Eine Zusammenfassung der möglichen Einstellungen für Option \Option{headings} +finden Sie in \autoref{tab:maincls.headings}. Beispiele zur Verwendung einiger +der möglichen Einstellungen sind in den nachfolgenden Beschreibungen +der Gliederungsbefehle enthalten. +\begin{desclist} + \desccaption[{Mögliche Werte für Option \Option{headings}}]{% + Mögliche Werte für Option \Option{headings} zur Einstellung der + Überschriften% + \label{tab:maincls.headings}% + }{% + Mögliche Werte für Option \Option{headings} (\emph{Fortsetzung})% + }% + \pventry{big}{% + Setzt die Schrifteinstellung für die einzelnen Standard-Gliederungsebenen + zurück und verwendet große Überschriften mit großen Abständen darüber und + darunter.% + \IndexOption{headings~=\textKValue{big}}}% + \pventry{normal}{% + Setzt die Schrifteinstellung für die einzelnen Standard-Gliederungsebenen + zurück und verwendet mittelgroße Überschriften mit mittelgroßen Abständen + darüber und darunter.% + \IndexOption{headings~=\textKValue{normal}}}% + \entry{\PValue{onelineappendix}, \PValue{noappendixprefix}, + \PValue{appendixwithoutprefix}, \PValue{appendixwithoutprefixline}% + \IndexOption{headings~=\textKValue{onelineappendix}}}{% + Kapitelüberschriften im Anhang werden wie andere Überschriften auch + gesetzt.}% + \entry{\PValue{onelinechapter}, \PValue{nochapterprefix}, + \PValue{chapterwithoutprefix}, \PValue{chapterwithoutprefixline}% + \IndexOption{headings~=\textKValue{onelinechapter}}}{% + Kapitelüberschriften werden wie andere Überschriften auch gesetzt.}% + \pventry{openany}{% + Die Anweisungen \DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, + \DescRef{\LabelBase.cmd.cleardoublestandardpage}, + \DescRef{\LabelBase.cmd.cleardoubleplainpage}, + \DescRef{\LabelBase.cmd.cleardoubleemptypage} und + \DescRef{\LabelBase.cmd.cleardoublepage} erzeugen einen Seitenumbruch und + fügen gegebenenfalls eine Vakatseite\Index{Vakatseite} ein, um im + doppelseitigen Satz wie bei \OptionValue{headings}{openright} auf die + nächste rechte Seite zu gelangen. Teile, Kapitel, Index und Nachspann + verwenden \DescRef{\LabelBase.cmd.clearpage}, aber nicht + \DescRef{\LabelBase.cmd.cleardoublepage}.% + \IndexOption{headings~=\textKValue{openany}}}% + \pventry{openleft}{% + Die Anweisungen \DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, + \DescRef{\LabelBase.cmd.cleardoublestandardpage}, + \DescRef{\LabelBase.cmd.cleardoubleplainpage}, + \DescRef{\LabelBase.cmd.cleardoubleemptypage} und + \DescRef{\LabelBase.cmd.cleardoublepage} erzeugen einen Seitenumbruch und + fügen gegebenenfalls eine Vakatseite\Index{Vakatseite} ein, um im doppelseitigen + Satz auf die nächste linke Seite zu gelangen. Teile, Kapitel, Index und + Nachspann verwenden \DescRef{\LabelBase.cmd.cleardoublepage}.% + \IndexOption{headings~=\textKValue{openleft}}}% + \pventry{openright}{% + Die Anweisungen \DescRef{\LabelBase.cmd.cleardoublepageusingstyle}, + \DescRef{\LabelBase.cmd.cleardoublestandardpage}, + \DescRef{\LabelBase.cmd.cleardoubleplainpage}, + \DescRef{\LabelBase.cmd.cleardoubleemptypage} und + \DescRef{\LabelBase.cmd.cleardoublepage} erzeugen einen Seitenumbruch und + fügen gegebenenfalls eine Vakatseite\Index{Vakatseite} ein, um im doppelseitigen + Satz auf die nächste rechte Seite zu gelangen. Teile, Kapitel, Index und + Nachspann verwenden \DescRef{\LabelBase.cmd.cleardoublepage}.% + \IndexOption{headings~=\textKValue{openright}}}% + \pventry{optiontohead}{% + Die\ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} erweiterte Funktion des optionalen Arguments der + Gliederungsbefehle wird aktiviert. In der Voreinstellung wird das + optionale Argument ausschließlich für den Kolumnentitel verwendet.% + \IndexOption{headings~=\textKValue{optiontohead}}% + }% + \entry{\PValue{optiontoheadandtoc}, \PValue{optiontotocandhead}% + \IndexOption{headings~=\textKValue{optiontoheadandtoc}}}{% + Die\ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} erweiterte Funktion des optionalen Arguments der + Gliederungsbefehle wird aktiviert. In der Voreinstellung wird das + optionale Argument sowohl für den Kolumnentitel als auch den Eintrag ins + Inhaltsverzeichnis verwendet.% + }% + \pventry{optiontotoc}{% + Die\ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} erweiterte Funktion des optionalen Arguments der + Gliederungsbefehle wird aktiviert. In der Voreinstellung wird das + optionale Argument ausschließlich für den Eintrag ins Inhaltsverzeichnis + verwendet.% + \IndexOption{headings~=\textKValue{optiontohead}}% + }% + \pventry{small}{% + Setzt die Schrifteinstellung für die einzelnen Standard-Gliederungsebenen + zurück und verwendet kleine Überschriften mit kleinen Abständen darüber + und darunter.% + \IndexOption{headings~=\textKValue{small}}}% + \pventry{standardclasses}{% + \ChangedAt{v3.12}{\Class{scrbook}\and\Class{scrreprt}\and\Class{scrartcl}}% + Setzt die Schrifteinstellung für die einzelnen Standard-Gliederungsebenen + zurück und verwendet Überschriften in den Größen der Standardklassen. Für + Kapitelüberschriften wird bei \Class{scrbook} und \Class{scrreprt} + \OptionValue{headings}{twolinechapter} gesetzt.% + }% + \entry{\PValue{twolineappendix}, \PValue{appendixprefix}, + \PValue{appendixwithprefix}, \PValue{appendixwithprefixline}% + \IndexOption{headings~=\textKValue{twolineappendix}}}{% + Kapitelüberschriften im Anhang werden mit einer Vorsatzzeile gesetzt, + deren Inhalt von + \DescRef{\LabelBase.cmd.chapterformat}\IndexCmd{chapterformat} bestimmt + wird.}% + \entry{\PValue{twolinechapter}, \PValue{chapterprefix}, + \PValue{chapterwithprefix}, \PValue{chapterwithprefixline}% + \IndexOption{headings~=\textKValue{twolinechapter}}}{% + Kapitelüberschriften werden mit einer Vorsatzzeile gesetzt, deren Inhalt + von \DescRef{\LabelBase.cmd.chapterformat}\IndexCmd{chapterformat} + bestimmt wird.}% +\end{desclist} +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{numbers}{Einstellung} +\end{Declaration}% +Nach {\small DUDEN} steht in Gliederungen\Index{Gliederung}, in denen +ausschließlich arabische Ziffern für die Nummerierung\Index{Nummerierung} +verwendet werden, am Ende der Gliederungsnummern kein abschließender Punkt +(siehe \cite[R\,3]{DUDEN}). Wird hingegen innerhalb der Gliederung auch mit +römischen Zahlen oder Groß- oder Kleinbuchstaben gearbeitet, so steht am Ende +aller Gliederungsnummern ein abschließender Punkt (siehe +\cite[R\,4]{DUDEN}). In {\KOMAScript} ist ein Automatismus eingebaut, der +diese etwas komplexe Regel zu erfüllen versucht. Der Automatismus wirkt sich +so aus, dass normalerweise bei Verwendung des Gliederungsbefehls \DescRef{\LabelBase.cmd.part} +oder eines Anhangs (\DescRef{\LabelBase.cmd.appendix}) auf Gliederungsnummer mit abschließendem +Punkt umgeschaltet wird. Diese Information wird in der \File{aux}-Datei +gespeichert und wirkt sich dann beim nächsten \LaTeX-Lauf auf das gesamte +Dokument aus. + +Manchmal versagt der mit \OptionValue{numbers}{autoendperiod}% +\IndexOption{numbers~=\textKValue{autoendperiod}} voreingestellte Automatismus zum +Setzen oder Weglassen des abschließenden Punktes in der +Gliederungsnummer. Teilweise sehen andere Sprachen auch andere Regeln +vor. Deshalb ist es beispielsweise mit der Einstellung +\OptionValue{numbers}{endperiod}\IndexOption{numbers~=\textKValue{endperiod}}% +\important{\OptionValue{numbers}{endperiod}\\ + \OptionValue{numbers}{noendperiod}} möglich, den Punkt manuell +vorzuschreiben oder mit \OptionValue{numbers}{noendperiod} zu verbieten. + +Es ist zu beachten\textnote{Achtung!}, dass der Automatismus immer erst für +den nächsten \LaTeX-Lauf die Verwendung des abschließenden Punktes ein- oder +ausschaltet. Bevor also versucht wird, die korrekte Darstellung über +Verwendung einer der Optionen zu erzwingen, sollte grundsätzlich ein weiterer +\LaTeX-Lauf ohne Dokumentänderung durchgeführt werden. + +Eine Zusammenfassung der möglichen Werte für die \PName{Einstellung} von +\PName{numbers} bietet \autoref{tab:maincls.numbers}. Im Unterschied zu den +meisten anderen Einstellungen, kann diese Option nur in der Dokumentpräambel, +also vor \Macro{begin}\PParameter{document} vorgenommen werden. + +\begin{table} + \caption[{Mögliche Werte für Option \Option{numbers}}]{Mögliche Werte für + Option \Option{numbers} zur Konfigurierung des Abschlusspunktes in + Gliederungsnummern} + \label{tab:maincls.numbers} + \begin{desctabular} + \entry{\PValue{autoendperiod}, \PValue{autoenddot}, \PValue{auto}}{% + \KOMAScript{} trifft die Entscheidung, ob am Ende von Gliederungsnummern + und allen von Gliederungsnummern abhängigen Nummern ein Punkt gesetzt + wird, selbst. Kommen in sämtlichen Gliederungsnummern nur arabische + Ziffern vor, so wird kein Punkt gesetzt. Wird in einer Gliederungsnummer + ein Buchstabe oder eine römische Zahl entdeckt, so wird der Punkt bei + allen Nummern gesetzt. Referenzen auf diese Nummern werden jedoch ohne + abschließenden Punkt gesetzt.% + \IndexOption{numbers~=\textKValue{autoendperiod}}}% + \entry{\PValue{endperiod}, \PValue{withendperiod}, \PValue{periodatend}, + \PValue{enddot}, \PValue{withenddot}, \PValue{dotatend}}{% + Bei sämtlichen Gliederungsnummern und davon abhängigen Nummern wird am + Ende ein Punkt gesetzt, der bei der Referenzierung entfällt.% + \IndexOption{numbers~=\textKValue{endperiod}}}% + \entry{\PValue{noendperiod}, \PValue{noperiodatend}, + \PValue{noenddot}, \PValue{nodotatend}}{% + Gliederungsnummern und davon abhängige Nummern werden ohne + abschließenden Punkt gesetzt.% + \IndexOption{numbers~=\textKValue{noendperiod}}}% + \end{desctabular} +\end{table} +% +\EndIndexGroup + + +\begin{Declaration} + \Option{chapteratlists} + \OptionVName{chapteratlists}{Wert} +\end{Declaration}% +Wie\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} auch bei der Option +\DescRef{\LabelBase.option.listof} in \autoref{sec:\LabelBase.floats}, +\DescPageRef{\LabelBase.option.listof} erwähnt wird, fügt +normalerweise\ChangedAt{v2.96a}{\Class{scrbook}\and \Class{scrreprt}} jeder +mit \DescRef{\LabelBase.cmd.chapter} erzeugte Kapiteleintrag einen vertikalen +Abstand in die Verzeichnisse der Gleitumgebungen ein. Seit +Version~2.96a\important{\OptionValueRef{\LabelBase}{version}{2.96a}} gilt dies +auch für die Anweisung \DescRef{\LabelBase.cmd.addchap}, wenn nicht eine +Kompatibilitätseinstellung zu einer früheren Version gewählt wurde (siehe +Option \DescRef{\LabelBase.option.version} in +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}). + +Außerdem kann mit der Option \Option{chapteratlists} der Abstand verändert +werden. Dazu gibt man als \PName{Wert} den gewünschten Abstand an. Bei der +Voreinstellung \OptionValueRef{\LabelBase}{listof}{chaptergapsmall}% +\IndexOption{listof~=\textKValue{chaptergapsmall}} (siehe +\DescPageRef{\LabelBase.option.listof.chaptergapsmall}) sind dies +10\Unit{pt}. + +Mit der Einstellung \OptionValue{chapteratlists}{entry}% +\IndexOption{chapteratlists~=\textKValue{entry}}% +\important{\OptionValue{chapteratlists}{entry}} oder bei Verwendung der Form +\Option{chapteratlists} ohne Angabe eines Wertes wird statt des Abstandes der +Kapiteleintrag selbst in die Verzeichnisse eingetragen. Es wird darauf +hingewiesen, dass ein solcher Eintrag auch dann erfolgt, wenn das Kapitel +keine Gleitumgebung enthält. Eine Lösung, bei der nur Kapitel mit +Gleitumgebungen im jeweiligen Verzeichnis angezeigt werden, finden Sie unter +\cite{https://komascript.de/comment/5070}. + +Es ist zu beachten\textnote{Achtung!}, dass sich eine Änderung der +Einstellung je nach Art der Änderung erst nach zwei weiteren \LaTeX-Läufen im +Verzeichnis auswirkt.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{part}\OParameter{Kurzform}\Parameter{Überschrift} + \Macro{chapter}\OParameter{Kurzform}\Parameter{Überschrift} + \Macro{section}\OParameter{Kurzform}\Parameter{Überschrift} + \Macro{subsection}\OParameter{Kurzform}\Parameter{Überschrift} + \Macro{subsubsection}\OParameter{Kurzform}\Parameter{Überschrift} + \Macro{paragraph}\OParameter{Kurzform}\Parameter{Überschrift} + \Macro{subparagraph}\OParameter{Kurzform}\Parameter{Überschrift} +\end{Declaration}% +\Index[indexmain]{Teil}% +\Index[indexmain]{Kapitel}% +\Index[indexmain]{Abschnitt}% +Die Standardgliederungsbefehle funktionieren bei {\KOMAScript} im Grundsatz +wie bei den Standardklassen. So kann in der Voreinstellung ganz normal über +ein optionales Argument ein abweichender Text für den Kolumnentitel und das +Inhaltsverzeichnis vorgegeben werden. + +Mit\ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}\textnote{\KOMAScript{} vs. Standardklassen} der +Einstellung\important{\DescRef{\LabelBase.option.headings}} +\OptionValueRef{\LabelBase}{headings}{optiontohead}% +\IndexOption[indexmain]{headings~=\textKValue{optiontohead}} wird das +optionale Argument bei \KOMAScript{} hingegen nur noch für den Kolumnentitel +verwendet. Ein konkreter Eintrag in den Kolumnentitel erfolgt natürlich nur, +wenn ein Seitenstil\Index{Seiten>Stil} gewählt wird, bei dem die entsprechende +Gliederungsebene überhaupt für den Kolumnentitel verwendet wird. Siehe hierzu +\autoref{sec:\LabelBase.pagestyle} sowie \autoref{cha:scrlayer-scrpage}. Mit +der Einstellung \OptionValueRef{\LabelBase}{headings}{optiontotoc}% +\IndexOption[indexmain]{headings~=\textKValue{optiontotoc}} wird das optionale +Argument hingegen ausschließlich für den Eintrag ins Inhaltsverzeichnis +verwendet. Auch dies selbstverständlich nur, wenn die Einstellung für den +Zähler \DescRef{\LabelBase.counter.tocdepth} (siehe +\autoref{sec:\LabelBase.toc}, \DescPageRef{\LabelBase.counter.tocdepth}) einen +Eintrag der entsprechenden Ebene überhaupt vorsieht. Mit der Einstellung +\OptionValueRef{\LabelBase}{headings}{optiontoheadandtoc}% +\IndexOption[indexmain]{headings~=\textKValue{optiontoheadandtoc}} findet +schließlich das optionale Argument wieder sowohl für den Kolumnentitel als +auch den Eintrag ins Inhaltsverzeichnis Verwendung. Allen drei Einstellungen +ist gemeinsam, dass sie im Gegensatz zur Voreinstellung die erweiterte +Interpretation des optionalen Arguments aktivieren. + +Bei\ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} der erweiterten Interpretation des optionalen Arguments +wird geprüft, ob sich ein Gleichheitszeichen in \PName{Kurzform} befindet. Ist +dies der Fall, so wird das optionale Argument der Gliederungsbefehle selbst +statt als \PName{Kurzform} als \PName{Optionenliste} interpretiert. Dabei +werden die drei Optionen +\OptionVName{head}{Kolumnentitel}\important{\Option{head}\\ + \Option{tocentry}\\ + \Option{reference}}, \OptionVName{tocentry}{Inhaltsverzeichniseintrag} und +\OptionVName{reference}{Querverweistitel}% +\ChangedAt{v3.22}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} +akzeptiert. Um ein Gleichheitszeichen oder ein Komma in einem der beiden Werte +dieser Optionen unterzubringen, muss dieses in zusätzliche geschweifte +Klammern gesetzt werden. + +Bitte\textnote{Achtung!} beachten Sie, dass dieser Mechanismus nur +funktioniert, solange \KOMAScript{} die Kontrolle über die Gliederungsbefehle +besitzt. Wird hingegen ein Paket verwendet, dass die Gliederungsbefehle oder +die internen \LaTeX-Kern-Anweisungen für Gliederungsbefehle umdefiniert, so +kann \KOMAScript{} diese erweiterte Funktionalität nicht mehr zur Verfügung +stellen. Dies gilt auch für die immer aktive Erweiterung, dass +leere\textnote{leere Inhalts\-verzeichnis\-einträge} +Inhaltsverzeichniseinträge nicht zu einem Eintrag ohne Text führen, sondern +gänzlich unterbleiben. Soll tatsächlich einmal ein leerer Eintrag ins +Inhaltsverzeichnis erfolgen, so kann dies mit einem unsichtbaren Eintrag +wie \lstinline|\mbox{}| erreicht werden. + +\begin{Example} + Angenommen, Sie haben ein Dokument mit teilweise sehr langen + Kapitelüberschriften. Diese langen Kapitelüberschriften sollen auch im + Inhaltsverzeichnis ausgegeben werden. Die Kolumnentitel wollen Sie jedoch + auf einzeilige Kurztexte beschränken. Dazu stellen Sie mit +\begin{lstcode} + \documentclass[headings=optiontohead]{scrbook} +\end{lstcode} + bereits beim Laden der Klasse ein, dass das optionale Argument der + Gliederungsbefehle nur für die Kolumnentitel verwendet werden soll. Im + Dokument nehmen Sie dann einen entsprechenden Eintrag über das optionale + Argument von \Macro{chapter} vor. +\begin{lstcode} + \chapter[Kurzformen für Kapitel] + {Der Gliederungsbefehl für + Kapitelüberschriften erlaubt neben dem + Text für die eigentliche + Kapitelüberschrift auch eine Kurzform + mit steuerbarer Verwendung} +\end{lstcode} + + Etwas später wird Ihnen bewusst, dass diese lange Überschrift sehr ungünstig + umbrochen wird. Sie wollen deshalb die Umbrüche für diese Überschrift selbst + bestimmen. Im Inhaltsverzeichnis soll allerdings weiterhin automatisch + umbrochen werden. Mit +\begin{lstcode} + \chapter[head={Kurzformen für Kapitel}, + tocentry={Der Gliederungsbefehl für + Kapitelüberschriften erlaubt neben + dem Text für die eigentliche + Kapitelüberschrift auch eine Kurzform + mit steuerbarer Verwendung}] + {Der Gliederungsbefehl für + Kapitelüberschriften\\ + erlaubt neben dem\\ + Text für die eigentliche + Kapitelüberschrift\\ + auch eine Kurzform\\ + mit steuerbarer Verwendung} +\end{lstcode} + setzen Sie daher die Einträge für den Kolumnentitel und das + Inhaltsverzeichnis unabhängig voneinander und von der Überschrift selbst. + Die Argumente der beiden Optionen \Option{head} und \Option{tocentry} wurden + dabei in geschweifte Klammern gesetzt, damit der Inhalt der Argumente + beliebig sein kann. + + Die Notwendigkeit der geschweiften Klammern im vorherigen Beispiel lässt + sich am besten an einem weiteren Beispiel verdeutlichen. Angenommen, Sie + haben als Option \OptionValueRef{\LabelBase}{headings}{optiontotoc} gewählt + und setzen nun die Überschrift: +\begin{lstcode} + \section[head=\emph{Wert}] + {Die Option head=\emph{Wert}} +\end{lstcode} + Dies führt dazu, dass im Inhaltsverzeichnis der Eintrag »Die Option + head=\emph{Wert}« und im Kolumnentitel der Eintrag »\emph{Wert}« verwendet + wird. In Wirklichkeit wollten Sie aber, dass im Inhaltsverzeichnis der + Eintrag »head=\emph{Wert}« lautet und im Kolumnentitel der Text der + Überschrift übernommen wird. Dies ist dadurch zu erreichen, dass das + Gleichheitszeichen in geschweifte Klammern gesetzt wird: +\begin{lstcode} + \section[head{=}\emph{Wert}] + {Die Option head=\emph{Wert}} +\end{lstcode} + + Ein ähnlicher Fall betrifft das Komma. Bei gleicher Voreinstellung der + Optionen würde +\begin{lstcode} + \section[head=0, 1, 2, 3, \dots] + {Die natürlichen Zahlen mit der Null} +\end{lstcode} + zu einer Fehlermeldung führen, weil die Kommata als Trennzeichen zwischen + den einzelnen Optionen der Optionenliste »\lstinline|head=0, 1, 2, 3, \dots|« + interpretiert würden. Schreibt man hingegen +\begin{lstcode} + \section[head={0, 1, 2, 3, \dots}] + {Die natürlichen Zahlen mit der Null} +\end{lstcode} + so ist »\lstinline|0, 1, 2, 3, \dots|« das Argument der Option + \Option{head}. +\end{Example} + +So\ChangedAt{v3.22}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} +wie im Beispiel Option \Option{head} den Titel für den lebenden Kolumnentitel +und Option \Option{tocentry} den Titel für den Verzeichniseintrag bestimmt, +kann mit \Option{reference}\important{\Option{reference}} der Titel für einen +Querverweise durch die Pakete +\Package{nameref}\IndexPackage{nameref}\important{\Package{nameref}\\ + \Package{titleref}\\ + \Package{zref-titleref}}, \Package{titleref}\IndexPackage{titleref} oder das +\Package{titleref}\IndexPackage{zref-titleref}-Modul von +\Package{zref}\IndexPackage{zref} explizit vorgegeben werden. Die +Unterstützung für \Package{titleref} ist dabei eher rudimentär, da das Paket +mit der Leistungsfähigkeit der anderen beiden nur schlecht mithalten kann und +auch nicht mit +\Package{hyperref}\IndexPackage{hyperref}\important{\Package{hyperref}} +kompatibel ist. + +Die\important{\Macro{part}} Überschrift der Teile-Ebene (\Macro{part}) +unterscheidet sich von den anderen Gliederungsebenen dadurch, dass sie +unabhängig von den übrigen Ebenen nummeriert wird. Das bedeutet, dass die +Kapitel-Ebene (bei \Class{scrbook} oder \Class{scrreprt}) bzw. die +Abschnitt-Ebene (bei \Class{scrartcl}) über alle Teile hinweg durchgehend +nummeriert wird. Darüber hinaus steht bei den Klassen \Class{scrbook} und +\Class{scrreprt}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} die Überschrift +dieser Ebene zusammen mit ihrer Präambel (siehe Anweisung +\DescRef{\LabelBase.cmd.setpartpreamble}, +\DescPageRef{\LabelBase.cmd.setpartpreamble}) alleine auf einer Seite. + +\Macro{chapter}\important{\Macro{chapter}}\OnlyAt{\Class{scrbook}\and + \Class{scrreprt}} existiert nur bei Buch- und Berichtklassen, also bei +\Class{book}, \Class{scrbook}, \Class{report} und \Class{scrreprt}, nicht +jedoch bei den Artikelklassen \Class{article} und +\Class{scrartcl}. \Macro{chapter}\textnote{\KOMAScript{} + vs. Standardklassen} unterscheidet sich bei {\KOMAScript} außerdem +gravierend von der Version der Standardklassen. Bei den Standardklassen wird +die Kapitelnummer mit dem Präfix »Kapitel« beziehungsweise dem Kapitelnamen in +der gewählten Sprache in einer Zeile vor dem eigentlichen Text der Überschrift +ausgegeben. Diese\important{\DescRef{\LabelBase.option.chapterprefix}\\ + \DescRef{\LabelBase.option.appendixprefix}} sehr mächtige Form +wird bei {\KOMAScript} durch eine einfache Nummer vor dem Text abgelöst, lässt +sich aber durch die Optionen \DescRef{\LabelBase.option.chapterprefix} und +\DescRef{\LabelBase.option.appendixprefix} einstellen (siehe +\DescPageRef{\LabelBase.option.chapterprefix}). + +Bitte beachten\textnote{Achtung!} Sie, dass \Macro{part} und \Macro{chapter} +bei \Class{scrbook} und \Class{scrreprt}\OnlyAt{\Class{scrbook}\and + \Class{scrreprt}} den Seitenstil für eine Seite umschalten. Der jeweilige +Seitenstil ist bei \KOMAScript{} in den Makros +\DescRef{\LabelBase.cmd.partpagestyle} und +\DescRef{\LabelBase.cmd.chapterpagestyle} abgelegt (siehe +\autoref{sec:\LabelBase.pagestyle}, \DescPageRef{\LabelBase.cmd.partpagestyle}). + +\BeginIndexGroup +\BeginIndex[indexother]{}{Schrift>Art}% +\BeginIndex[indexother]{}{Schrift>Groesse=Größe}% +\BeginIndex{FontElement}{disposition}\LabelFontElement{disposition}% +\BeginIndex{FontElement}{part}\LabelFontElement{part}% +\BeginIndex{FontElement}{parnumber}\LabelFontElement{partnumber}% +\BeginIndex{FontElement}{chapter}\LabelFontElement{chapter}% +\BeginIndex{FontElement}{chapterprefix}\LabelFontElement{chapterprefix}% +\BeginIndex{FontElement}{section}\LabelFontElement{section}% +\BeginIndex{FontElement}{subsection}\LabelFontElement{subsection}% +\BeginIndex{FontElement}{subsubsection}\LabelFontElement{subsubsection}% +\BeginIndex{FontElement}{paragraph}\LabelFontElement{paragraph}% +\BeginIndex{FontElement}{subparagraph}\LabelFontElement{subparagraph}% +Die\ChangedAt{v2.8p}{% + \Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} Schriftart aller +sieben Gliederungsebenen kann mit den Anweisungen +\DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, \DescPageRef{\LabelBase.cmd.setkomafont}) +bestimmt werden. Dabei wird zunächst generell das Element +\FontElement{disposition}\important{\FontElement{disposition}} und +anschließend zusätzlich je Gliederungsebene ein spezifisches +Element\important{% + \FontElement{part}\\ + \FontElement{partnumber}\\ + \FontElement{chapter}\\ + \FontElement{chapterprefix}\\ + \FontElement{section}\\ + \FontElement{subsection}\\ + \FontElement{paragraph}\\ + \FontElement{subparagraph}} verwendet (siehe +\autoref{tab:maincls.fontelements}, +\autopageref{tab:maincls.fontelements}). Für den Nummernteil der +Teile-Überschrift wird zusätzlich das Element \FontElement{partnumber} +verwendet, für die optionale Präfixzeile der Kapitelüberschriften das Element +\FontElement{chapterprefix}. Die Schriftart für das Element +\FontElement{disposition} ist als +\Macro{normalcolor}""\Macro{sffamily}""\Macro{bfseries} vordefiniert. Die +Voreinstellungen für die spezifischen Elemente sind mit einer Schriftgröße +vorbelegt und daher von den Einstellungen \PValue{big}, \PValue{normal} und +\PValue{small} für die Option +\DescRef{\LabelBase.option.headings}\IndexOption{headings} abhängig (siehe +\DescPageRef{\LabelBase.option.headings}). Sie finden die Voreinstellungen in +\autoref{tab:maincls.structureElementsFont}. +% Umbruchkorrektur: Tabelle verschoben +\begin{table} +% \centering% +% \caption + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside}[{Schriftvoreinstellungen für die Elemente der Gliederung + bei\newline \Class{scrbook} und \Class{scrreprt}}]{% + \label{tab:maincls.structureElementsFont}% + \hspace{0pt plus .5em}Voreinstellungen der Schrift + für die Elemente der Gliederung bei \Class{scrbook} und \Class{scrreprt}} + [l] + \begin{tabular}[t]{lll} + \toprule + Klassenoption & Element & Voreinstellung \\ + \midrule + \OptionValueRef{\LabelBase}{headings}{big} + & \FontElement{part}\IndexFontElement{part} + & \Macro{Huge} \\ + & \FontElement{partnumber}\IndexFontElement{partnumber} + & \Macro{huge} \\ + & \FontElement{chapter}\IndexFontElement{chapter} + & \Macro{huge} \\ + & \FontElement{chapterprefix}\IndexFontElement{chapterprefix} + & \DescRef{\LabelBase.cmd.usekomafont}\PParameter{chapter} \\ + & \FontElement{section}\IndexFontElement{section} + & \Macro{Large} \\ + & \FontElement{subsection}\IndexFontElement{subsection} + & \Macro{large} \\ + & \FontElement{subsubsection}\IndexFontElement{subsubsection} + & \Macro{normalsize} \\ + & \FontElement{paragraph}\IndexFontElement{paragraph=} + & \Macro{normalsize} \\ + & \FontElement{subparagraph}\IndexFontElement{subparagraph} + & \Macro{normalsize} \\[1ex] + \OptionValueRef{\LabelBase}{headings}{normal} + & \FontElement{part} & \Macro{huge} \\ + & \FontElement{partnumber} & \Macro{huge} \\ + & \FontElement{chapter} & \Macro{LARGE} \\ + & \FontElement{chapterprefix}\IndexFontElement{chapterprefix} + & \DescRef{\LabelBase.cmd.usekomafont}\PParameter{chapter} \\ + & \FontElement{section} & \Macro{Large} \\ + & \FontElement{subsection} & \Macro{large} \\ + & \FontElement{subsubsection} & \Macro{normalsize} \\ + & \FontElement{paragraph} & \Macro{normalsize} \\ + & \FontElement{subparagraph} & \Macro{normalsize} \\[1ex] + \OptionValueRef{\LabelBase}{headings}{small} + & \FontElement{part} & \Macro{LARGE} \\ + & \FontElement{partnumber} & \Macro{LARGE} \\ + & \FontElement{chapter} & \Macro{Large} \\ + & \FontElement{chapterprefix}\IndexFontElement{chapterprefix} + & \DescRef{\LabelBase.cmd.usekomafont}\PParameter{chapter} \\ + & \FontElement{section} & \Macro{large} \\ + & \FontElement{subsection} & \Macro{normalsize} \\ + & \FontElement{subsubsection} & \Macro{normalsize} \\ + & \FontElement{paragraph} & \Macro{normalsize} \\ + & \FontElement{subparagraph} & \Macro{normalsize} \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} +% +\begin{Example} + Angenommen, Sie stellen bei Verwendung der Klassenoption + \OptionValueRef{\LabelBase}{headings}{big} fest, dass die sehr großen + Überschriften von Teildokumenten (\Macro{part} oder \DescRef{\LabelBase.cmd.addpart}) zu fett + wirken. Nun könnten Sie natürlich wie folgt % + \iftrue % Umbruchoptimierung!!!! + verfahren:% + \else % + für Abhilfe sorgen:% + \fi +\begin{lstcode} + \setkomafont{disposition}{\normalcolor\sffamily} + \part{\appendixname} + \addtokomafont{disposition}{\bfseries} +\end{lstcode} + Auf diese Weise würden Sie nur für die eine Überschrift »Anhang« + das Schriftattribut \textbf{Fett} abschalten. Sehr viel komfortabler + und eleganter ist es aber, stattdessen generell für + \Macro{part}-Überschriften eine entsprechende Änderung vorzunehmen. + Das ist wahlweise mit: +\begin{lstcode} + \addtokomafont{part}{\normalfont\sffamily} + \addtokomafont{partnumber}{\normalfont\sffamily} +\end{lstcode} + oder einfach mit: +\begin{lstcode} + \addtokomafont{part}{\mdseries} + \addtokomafont{partnumber}{\mdseries} +\end{lstcode} + möglich. Die Verwendung von \DescRef{\LabelBase.cmd.setkomafont} wäre zwar grundsätzlich + möglich, müsste aber auch die Auswahl der Schriftgröße enthalten und würde + damit die Größenänderung über die Option \DescRef{\LabelBase.option.headings} verhindern. + + Die zweite Version mit \Macro{mdseries} ist vorzuziehen, da diese auch dann + noch zum gewünschten Ergebnis führt, wenn Sie später das Element + \FontElement{disposition}\IndexFontElement{disposition} wie folgt ändern: +\begin{lstcode} + \setkomafont{disposition}{\normalcolor\bfseries} +\end{lstcode} + Mit dieser Änderung verzichten Sie darauf, für alle + Gliederungsebenen serifenlose Schrift voreinzustellen. +\end{Example} + +Ich möchte eindringlich davon abraten, die Möglichkeit zur +Schriftumschaltung zu missbrauchen, um wild Schriften, Schriftgrößen und +Schriftattribute miteinander zu mischen. Die Auswahl der richtigen Schrift für +die richtige Aufgabe ist eine Sache für Experten und hat sehr, sehr wenig mit +dem persönlichem Geschmack eines Laien zu tun. Siehe hierzu auch das Zitat am +Ende von \autoref{sec:typearea.tips}, \autopageref{sec:typearea.tips.cite} und +die folgende Erklärung. + +\begin{Explain} + Unterschiedliche Schriften für unterschiedliche Gliederungsebenen sind mit + {\KOMAScript}-Mitteln möglich. Der Laie sollte sie aber meiden wie der + Teufel das Weihwasser. Dies hat typografische Gründe. + + Eine Regel der Typografie besagt, dass man möglichst wenig Schriften + miteinander mischen soll. Serifenlose für die Überschriften scheinen bereits + ein Verstoß gegen diese Regel zu sein. Allerdings muss man wissen, dass + fette, große, serifenbehaftete Buchstaben oft viel zu mächtig für eine + Überschrift sind. Man müsste dann strenggenommen zumindest auf eine normale + statt eine fette oder halbfette Schrift ausweichen. In tiefen + Gliederungsebenen kann das aber wieder zu schwach sein. Andererseits haben + Serifenlose in Überschriften eine sehr angenehme Wirkung und fast nur für + Überschriften eine Berechtigung. Daher wurde diese Voreinstellung für + {\KOMAScript} mit gutem Grund gewählt. + + Größere Vielfalt sollte aber vermieden werden. Schriftenmischung ist etwas + für Profis. Aus den genannten Gründen sollten Sie bei Verwendung anderer als + der Standard-\TeX-Fonts -- egal ob CM"~\Index{CM-Fonts}, + EC"~\Index{EC-Fonts} oder LM-Fonts\Index{LM-Fonts} -- bezüglich der + Verträglichkeit der serifenlosen und serifenbehafteten Schrift einen + Experten zu Rate ziehen oder die Schrift für das Element + \FontElement{disposition}\IndexFontElement{disposition} vorsichtshalber wie + in obigem Beispiel umdefinieren. Die häufig anzutreffenden Kombinationen + Times mit Helvetica oder Palatino mit Helvetica werden vom Autor als + ungünstig betrachtet. +\end{Explain} +\EndIndexGroup +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{part*}\Parameter{Überschrift} + \Macro{chapter*}\Parameter{Überschrift} + \Macro{section*}\Parameter{Überschrift} + \Macro{subsection*}\Parameter{Überschrift} + \Macro{subsubsection*}\Parameter{Überschrift} + \Macro{paragraph*}\Parameter{Überschrift} + \Macro{subparagraph*}\Parameter{Überschrift} +\end{Declaration}% +Bei den Sternvarianten der Gliederungsbefehle erfolgt keine +Nummerierung\Index{Nummerierung}, wird kein +Kolumnentitel\Index{Kolumnentitel>automatisch} gesetzt und kein Eintrag im +Inhaltsverzeichnis\Index{Inhaltsverzeichnis} vorgenommen. Der Verzicht auf +den Kolumnentitel hat übrigens einen oftmals unerwünschten Effekt. Geht +beispielsweise ein mit \Macro{chapter*} gesetztes Kapitel über mehrere Seiten, +so taucht plötzlich der Kolumnentitel des letzten Kapitels wieder auf. +{\KOMAScript} bietet dafür aber eine Lösung, die im Anschluss beschrieben +wird. \OnlyAt{\Class{scrbook}\and \Class{scrreprt}}\Macro{chapter*} existiert +selbstverständlich nur bei Buch- und Berichtklassen, also bei \Class{book}, +\Class{scrbook}, \Class{report} und \Class{scrreprt}, nicht jedoch bei den +Artikelklassen \Class{article} und \Class{scrartcl}. + +Bitte\textnote{Achtung!} beachten Sie, dass \Macro{part*} und \Macro{chapter*} +den Seitenstil für eine Seite umschalten. Während die +Standardklassen\textnote{\KOMAScript{} vs. Standardklassen} dabei den +Seitenstil \PageStyle{plain} verwenden, ist bei \KOMAScript{} der zu +verwendende Seitenstil in den Makros \DescRef{\LabelBase.cmd.partpagestyle} +und \DescRef{\LabelBase.cmd.chapterpagestyle} abgelegt (siehe +\autoref{sec:\LabelBase.pagestyle}, +\DescPageRef{\LabelBase.cmd.titlepagestyle}). + +Bezüglich der Möglichkeiten der Schriftumschaltung\ChangedAt{v2.8p}{% + \Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} % +gilt das Gleiche, wie zuvor in der Erklärung zu den sternlosen +Varianten geschrieben. Die Elemente tragen die gleichen Namen, da sie +nicht Varianten, sondern Gliederungsebenen bezeichnen.% +% +\EndIndexGroup + + +\iffalse% Umbruchkorrekturtext +Bei den Standardklassen\textnote{\KOMAScript{} vs. Standardklassen} gibt +es keine weiteren Gliederungsbefehle. Es existieren also insbesondere keine +Anweisungen, mit denen man nicht nummerierte Kapitel oder nicht nummerierte +Abschnitte erzeugen kann, die ins Inhaltsverzeichnis aufgenommen werden und +bei denen ein automatischer Kolumnentitel erzeugt wird. +\fi + + +\begin{Declaration} + \Macro{addpart}\OParameter{Kurzform}\Parameter{Überschrift} + \Macro{addpart*}\Parameter{Überschrift} + \Macro{addchap}\OParameter{Kurzform}\Parameter{Überschrift} + \Macro{addchap*}\Parameter{Überschrift} + \Macro{addsec}\OParameter{Kurzform}\Parameter{Überschrift} + \Macro{addsec*}\Parameter{Überschrift} + \textnote[n]{\KOMAScript{} vs. Standardklassen} +\end{Declaration}% +{\KOMAScript} bietet über die Gliederungsbefehle der Standardklassen hinaus +die Anweisungen \Macro{addpart}, \Macro{addchap} und \Macro{addsec}. Diese +ähneln bis auf die fehlende Nummerierung sehr den Standardanweisungen +\DescRef{\LabelBase.cmd.part}\IndexCmd{part}% +\important{\DescRef{\LabelBase.cmd.part}, \DescRef{\LabelBase.cmd.chapter}, + \DescRef{\LabelBase.cmd.section}}, +\DescRef{\LabelBase.cmd.chapter}\IndexCmd{chapter} und +\DescRef{\LabelBase.cmd.section}\IndexCmd{section}. Sie erzeugen sowohl +einen automatischen Kolumnentitel als auch einen Eintrag im +Inhaltsverzeichnis, wobei auch die Einstellungen von Option +\DescRef{\LabelBase.option.headings}% +\important{\DescRef{\LabelBase.option.headings}} beachtet werden, +insbesondere auch die entsprechende Erweiterung des optionalen Arguments +verfügbar ist. + +Die Sternvarianten \Macro{addchap*} und \Macro{addsec*} gleichen hingegen den +Standardanweisungen \DescRef{\LabelBase.cmd.chapter*} und +\DescRef{\LabelBase.cmd.section*} mit einem winzigen, aber wichtigen +Unterschied: Die Kolumnentitel werden gelöscht. Dadurch wird der oben erwähnte +Effekt veralteter Kolumnentitel ausgeschlossen. Stattdessen bleibt der +Kolumnentitel auf Folgeseiten leer. \OnlyAt{\Class{scrbook}\and + \Class{scrreprt}}\Macro{addchap} und \Macro{addchap*} existieren +\iffree{% + selbstverständlich nur bei Buch- und Berichtklassen, also bei + \Class{scrbook} und \Class{scrreprt}, nicht jedoch bei der Artikelklasse + \Class{scrartcl}.% +}{% + nur bei \Class{scrbook} und \Class{scrreprt}, nicht jedoch bei + \Class{scrartcl}.% +} + +Die Anweisung \Macro{addpart} erstellt entsprechend einen nicht nummerierten +Dokumentteil mit einem Eintrag im Inhaltsverzeichnis. Da bereits +\DescRef{\LabelBase.cmd.part} und \DescRef{\LabelBase.cmd.part*} den +Kolumnentitel löschen, ergibt sich hier nicht das oben genannte Problem mit +veralteten Kolumnentiteln. Die Sternvariante \Macro{addpart*} ist daher +identisch mit der Sternvariante \DescRef{\LabelBase.cmd.part*} und wurde nur +aus Konsistenzgründen definiert. + +Bitte\textnote{Achtung!} beachten Sie, dass \Macro{addpart} und +\Macro{addchap} und deren Sternvarianten den Seitenstil für eine Seite +umschalten. Der jeweilige Seitenstil ist in den Makros +\DescRef{\LabelBase.cmd.partpagestyle} und +\DescRef{\LabelBase.cmd.chapterpagestyle} abgelegt (siehe +\autoref{sec:\LabelBase.pagestyle}, +\DescPageRef{\LabelBase.cmd.titlepagestyle}). +\iffree{\iffalse}{\csname iftrue\endcsname}% Umbruchkorrekturbeispiel +\begin{Example} + Sie schreiben ein Buch mit einem ausladenden Nachwort über mehrere + Seiten. Dieses soll weder einen Kolumnentitel noch einen Eintrag ins + Inhaltsverzeichnis erhalten. Daher verwenden Sie zunächst + \DescRef{\LabelBase.cmd.chapter*}: +\begin{lstcode} + \documentclass{scrbook} + \usepackage[ngerman]{babel} + \usepackage{blindtext} + \begin{document} + \tableofcontents + \blinddocument + \chapter*{Nachwort} + \Blindtext[10] + \end{document} +\end{lstcode} + Allerdings entdecken Sie, dass auf der zweiten und dritten Seite des + Nachworts der Kolumnentitel des vorherigen Kapitels wieder auftaucht. Das + wollen Sie natürlich nicht. Deshalb verwenden Sie nun \Macro{addchap*}: +\begin{lstcode} + \documentclass{scrbook} + \usepackage[ngerman]{babel} + \usepackage{blindtext} + \begin{document} + \tableofcontents + \blinddocument + \addchap*{Nachwort} + \Blindtext[10] + \end{document} +\end{lstcode} + Wunschgemäß ist das komplette Nachwort nun ohne Kolumnentitel. Doch auch das + entspricht nicht ganz Ihren Vorstellungen. Ein Kolumnentitel wäre doch + schön. Mit +\begin{lstcode} + \documentclass{scrbook} + \usepackage[ngerman]{babel} + \usepackage{blindtext} + \begin{document} + \tableofcontents + \blinddocument + \addchap{Nachwort} + \Blindtext[10] + \end{document} +\end{lstcode} + erhalten Sie nun sowohl »Nachwort« als Kolumnentitel der geraden Seiten, als + auch einen Inhaltsverzeichniseintrag. Genau an diesem Eintrag stört sich + dann aber der Verlag. Er besteht darauf, dass das Nachwort keinen Eintrag + ins Inhaltsverzeichnis zu erhalten hat. Auch wenn Ihnen das seltsam + erscheint, wollen Sie den Verlag zufriedenstellen. Also aktivieren Sie mit + \OptionValueRef{\LabelBase}{headings}{optiontotocandhead} zunächst die + erweiterte Funktion für das optionale Argument und setzen dann für das + Inhaltsverzeichnis explizit ein leeres Argument: +\begin{lstcode} + \documentclass[headings=optiontotocandhead] + {scrbook} + \usepackage[ngerman]{babel} + \usepackage{blindtext} + \begin{document} + \tableofcontents + \blinddocument + \addchap[tocentry={}]{Nachwort} + \Blindtext[10] + \end{document} +\end{lstcode} + Der Kolumnentitel wird von \OptionValue{tocentry}{\{\}} nicht verändert. + Da \Class{scrbook} leere Einträge ins Inhaltsverzeichnis automatisch + unterdrückt, ist nun auch der Verlag zufriedengestellt. +\end{Example}% +\fi + +Bezüglich der Möglichkeiten der Schriftumschaltung\ChangedAt{v2.8p}{% + \Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} % +gilt das Gleiche, wie zuvor in der Erklärung zu \DescRef{\LabelBase.cmd.part*}, +\DescRef{\LabelBase.cmd.chapter*} und \DescRef{\LabelBase.cmd.section*} +geschrieben. Die Elemente tragen die gleichen Namen, da sie nicht Varianten, +sondern Gliederungsebenen bezeichnen.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{minisec}\Parameter{Überschrift} +\end{Declaration}% +Manchmal ist eine Art Überschrift\Index{Ueberschriften=Überschriften} +wünschenswert, die zwar hervorgehoben wird, ansonsten aber eng mit dem +nachfolgenden Text zusammenhängt. Eine solche Überschrift soll dann ohne große +Abstände gesetzt werden. + +Der Befehl \Macro{minisec} bewirkt genau eine derartige Überschrift. Diese +Überschrift ist keiner Gliederungsebene\textnote{ohne Gliederungsebene} +zugeordnet. Eine solche \emph{Mini-Section} wird nicht in das +Inhaltsverzeichnis aufgenommen und erhält auch keine Nummerierung. + +\BeginIndexGroup +\BeginIndex{FontElement}{minisec}\LabelFontElement{minisec}% +Die Schriftart des Gliederungsbefehls \Macro{minisec} kann über die Elemente +\DescRef{\LabelBase.fontelement.disposition}% +\important{\DescRef{\LabelBase.fontelement.disposition}\\ + \FontElement{minisec}} und \FontElement{minisec}\ChangedAt{v2.96a}{% + \Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} beeinflusst +werden (siehe \autoref{tab:maincls.fontelements}, +\autopageref{tab:maincls.fontelements}). Die Voreinstellung für das Element +\FontElement{minisec} ist leer, so dass in der Voreinstellung nur das Element +\DescRef{\LabelBase.fontelement.disposition} wirkt.% +\EndIndexGroup + +\begin{Example} + Sie haben einen Bausatz für eine Mausefalle entwickelt und wollen + diesen getrennt nach den benötigten Materialien und der Anleitung für + die Montage beschreiben. Das könnte so gemacht werden: +\begin{lstcode} + \documentclass{scrartcl} + \usepackage[ngerman]{babel} + \usepackage{selinput} + \SelectInputMappings{ + adieresis={ä}, + germandbls={ß} + } + + \begin{document} + + \title{Selbstbauprojekte} + \author{Zwei Linke Daumen} + \date{\today} + \maketitle + + \section{Mausefalle} + Das erste Projekt ist auch für Anfänger geeignet + und benötigt lediglich einige wenige Bauteile, + die in jedem Haushalt zu finden sein sollten. + + \minisec{Bauteile} + + \begin{flushleft} + 1 Brett ($100\times 50 \times 12$)\\ + 1 Bierflaschenschnappverschluss\\ + 1 Kugelschreiberfeder\\ + 1 Reißzwecke\\ + 2 Schrauben\\ + 1 Hammer\\ + 1 Messer + \end{flushleft} + + \minisec{Montage} + + Zunächst suche man das Mauseloch. Dann lege man + die Reißzwecke innen unmittelbar hinter das Loch, + damit bei den folgenden Aktionen die Maus nicht + entschlüpfen kann. + Anschließend klopfe man mit dem Hammer den + Bierflaschenschnappverschluss in das Mauseloch. + Sollte der Verschluss nicht groß genug sein, um + das Loch vollständig und dauerhaft zu + verschließen, nehme man stattdessen das Brett + und schraube es unter Zuhilfenahme der beiden + Schrauben und des Messers vor das Loch. Statt + des Messers kann selbstverständlich auch ein + Schraubendreher verwendet werden. + Die Kugelschreiberfeder ist dem Tierschutz zum + Opfer gefallen. + \end{document} +\end{lstcode} + Der wesentliche Teil ab der Überschrift »Bauteile« sieht anschließend wie + folgt aus: + \begin{ShowOutput}[\baselineskip]\setlength{\parindent}{1em} + \minisec{Bauteile} + + \begin{flushleft} + 1 Brett ($100\times 50 \times 12$)\\ + 1 Bierflaschenschnappverschluss\\ + 1 Kugelschreiberfeder\\ + 1 Reißzwecke\\ + 2 Schrauben\\ + 1 Hammer\\ + 1 Messer + \end{flushleft} + + \minisec{Montage} + + Zunächst suche man das Mauseloch. Dann lege man die + Reißzwecke innen unmittelbar hinter das Loch, damit + bei den folgenden Aktionen die Maus nicht + entschlüpfen kann. + Anschließend klopfe man mit dem Hammer den + Bierflaschenschnappverschluss in das Mauseloch. + Sollte der Verschluss nicht groß genug sein, um das + Loch vollständig und dauerhaft zu verschließen, + nehme man stattdessen das Brett und schraube es + unter Zuhilfenahme der beiden Schrauben und des + Messers vor das Loch. Statt des Messers kann + selbstverständlich auch ein Schraubendreher + verwendet werden. + Die Kugelschreiberfeder ist dem Tierschutz zum + Opfer gefallen. +% Mit der Kugelschreiberfeder hat es eine besondere +% Bewandtnis. Sie stammt noch aus dem Selbstbauprojekt +% »Mauseschnappfalle«, das dem Tierschutz zum Opfer gefallen ist. + \end{ShowOutput} + Zum Verständnis der Verwendung des Pakets + \Package{selinput}\IndexPackage{selinput}\important{\Package{selinput}} und + % + \iffalse % Umbruchkorrektur + der darin definierten Anweisung % + \else % + von % + \fi % + \Macro{SelectInputMappings} sei auf \cite{package:selinput} + verwiesen. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{raggedsection} + \Macro{raggedchapter} + \Macro{raggedpart} +\end{Declaration}% +Bei den Standardklassen\textnote{\KOMAScript{} vs. Standardklassen} werden die +Überschriften ganz normal im Blocksatz ausgegeben. Dadurch können in den +Überschriften Trennungen auf"|treten und mehrzeilige Überschriften werden auf +Textbreite gedehnt. Dieses Vorgehen ist in der Typografie eher +unüblich. {\KOMAScript} setzt Überschriften von +\DescRef{\LabelBase.cmd.chapter} bis \DescRef{\LabelBase.cmd.subparagraph} +daher in linksbündigem Flattersatz mit hängendem Einzug. Verantwortlich ist +dafür die Anweisung \Macro{raggedsection}, die vordefiniert ist als: +\begin{lstcode} + \let\raggedsection\raggedright +\end{lstcode} +Die Anweisung \Macro{raggedsection} kann mit \Macro{renewcommand} umdefiniert +werden. +\begin{Example} + Sie wollen auch für Überschriften Blocksatz. Dazu schreiben Sie in + die Präambel Ihres Dokuments: +\begin{lstcode} + \renewcommand*{\raggedsection}{} +\end{lstcode} + oder kürzer: +\begin{lstcode} + \let\raggedsection\relax +\end{lstcode} + Sie erreichen somit eine ähnliche Formatierung der Überschriften wie + bei den Standardklassen. Noch ähnlicher wird es, wenn Sie diese + Änderung mit der oben vorgestellten Änderung für das Element + \DescRef{\LabelBase.fontelement.disposition}\IndexFontElement{disposition} + kombinieren. +\end{Example} + +Da\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}} manche Anwender für +die Kapitelebene eine andere Ausrichtung wünschen als für alle anderen Ebenen, +kann diese über \Macro{raggedchapter} auch getrennt verändert werden. In der +Voreinstellung verwendet die Anweisung jedoch einfach \Macro{raggedsection}, +so dass eine Änderung von \Macro{raggedsection} sich indirekt auch auf +\Macro{raggedchapter} auswirkt. + +Die Überschriften von Teilen (\DescRef{\LabelBase.cmd.part}) werden in der Voreinstellung als +einzige nicht in linksbündigem Flattersatz, sondern zentriert gesetzt. Dafür +ist die Anweisung \Macro{raggedpart} verantwortlich, die als: +\begin{lstcode} + \let\raggedpart\centering +\end{lstcode} +vordefiniert ist. Auch diese Anweisung kann mit \Macro{renewcommand} +umdefiniert werden. +\begin{Example} + Sie wollen, dass Überschriften mit \DescRef{\LabelBase.cmd.part} in der + gleichen Weise formatiert werden wie alle anderen Ebenen. Dazu schreiben + Sie +\begin{lstcode} + \renewcommand*{\raggedpart}{\raggedsection} +\end{lstcode} + in die Präambel Ihres Dokuments. An\textnote{Tipp!} dieser Stelle wurde im + Gegensatz zu oben absichtlich nicht \Macro{let} verwendet, da mit + \Macro{let} der Anweisung \Macro{raggedpart} die aktuelle Bedeutung von + \Macro{raggedsection} zugewiesen würde. Spätere Änderungen von + \Macro{raggedsection} blieben also bei \Macro{raggedpart} + unberücksichtigt. Bei der Umdefinierung mit \Macro{renewcommand} erhält + \Macro{raggedpart} dagegen nicht die Bedeutung von \Macro{raggedsection} zum + Zeitpunkt dieser Umdefinierung, sondern zum Zeitpunkt der Verwendung von + \Macro{raggedpart}. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{partformat} + \Macro{chapterformat} + \Macro{sectionformat} + \Macro{subsectionformat} + \Macro{subsubsectionformat} + \Macro{paragraphformat} + \Macro{subparagraphformat} + \Macro{othersectionlevelsformat}\Parameter{Gliederungsname}\Parameter{} + \Parameter{Zählerausgabe} + \Macro{IfUsePrefixLine}\Parameter{Dann-Teil}\Parameter{Sonst-Teil} + \Macro{autodot} +\end{Declaration}% +\KOMAScript{} fügt der Ausgabe der Gliederungsnummern oberhalb von +\Macro{the\PName{Gliederungsname}} (siehe \Macro{the\PName{Zähler}}, +\DescPageRef{maincls-experts.cmd.the/Zaehler/}) eine weitere logische Ebene +hinzu. Die Zähler werden für die jeweilige Überschrift nicht einfach nur +ausgegeben. Sie werden mit Hilfe der parameterlosen Anweisungen +\Macro{partformat}, \Macro{chapterformat} bis +\Macro{subparagraphformat}\ChangedAt{v3.17}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} formatiert. +\OnlyAt{\Class{scrbook}\and \Class{scrreprt}}Die Anweisung +\Macro{chapterformat} existiert, wie bereits \Macro{thechapter}, +selbstverständlich nicht in der Klasse \Class{scrartcl}, sondern nur in den +Klassen \Class{scrbook} und \Class{scrreprt}. + +Wie bereits bei Option \DescRef{\LabelBase.option.numbers}% +\important{\DescRef{\LabelBase.option.numbers}} am Anfang dieses Abschnitts +(siehe \DescPageRef{\LabelBase.option.numbers}) erläutert wurde, müssen gemäß +\cite{DUDEN} die Gliederungsnummern je nach Gliederung mit einem nachfolgenden +Punkt versehen werden oder dieser hat zu entfallen. Die Anweisung +\Macro{autodot} ist bei {\KOMAScript} für die Einhaltung dieser Regel +verantwortlich. Auf den Punkt folgt bei allen Gliederungsebenen außer +\DescRef{\LabelBase.cmd.part} noch ein \Macro{enskip}. Dies entspricht einem +Leerraum von 0,5\Unit{em}, also einem Halbgeviert. + +Die Anweisung +\Macro{othersectionlevelsformat}\ChangedAt{v3.17}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} wird seit \KOMAScript~3.17 nur noch +in Ausnahmefällen verwendet, wenn für eine Gliederungsebene keine +Format-Anweisung definiert oder diese \Macro{relax} ist, was jedoch in der +Voreinstellung für die Gliederungsebenen von KOMA-Script nicht zutrifft. Daher +wird sie auch nicht mehr offiziell dokumentiert. Bei einer +Kompatibilitätseinstellung zu Versionen vor +3.17\important{\OptionValueRef{\LabelBase}{version}{3.17}} (siehe Option +\DescRef{\LabelBase.option.version}, +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}) haben hingegen die Anweisungen +\Macro{sectionformat} bis \Macro{subparagraphformat} keine interne +Funktion. Stattdessen wird für diese Ebenen dann weiterhin +\Macro{othersectionlevelsformat} verwendet. + +Mit Hilfe von \Macro{renewcommand} kann jede der +Formatierungsanweisungen umdefiniert werden, um sie eigenen Anforderungen +anzupassen. Nachfolgend finden Sie einige Definitionen, die denen aus den +{\KOMAScript}-Klassen entsprechen: +\begin{lstcode} + \newcommand*{\partformat}{\partname~\thepart\autodot} + \newcommand*{\chapterformat}{% + \mbox{\chapappifchapterprefix{\nobreakspace}\thechapter + \autodot\IfUsePrefixLine{}{\enskip}}} + \newcommand*{\sectionformat}{\thesection\autodot\enskip} + \newcommand*{\subsectionformat}{% + \thesubsection\autodot\enskip} + \newcommand*{\subsubsectionformat}{% + \thesubsubsection\autodot\enskip} + \newcommand*{\paragraphformat}{\theparagraph\autodot\enskip} + \newcommand*{\subparagraphformat}{% + \thesubparagraph\autodot\enskip} + \newcommand*{\othersectionlevelsformat}[3]{% + #3\autodot\enskip} +\end{lstcode} + +Wegen\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}} der Verwendung +von \Macro{IfUsePrefixLine} sollte die Anweisung \Macro{chapterformat} nicht +außerhalb von \DescRef{\LabelBase.cmd.chapter} verwendet +werden. \Macro{IfUsePrefixLine} ist nur innerhalb der Gliederungsbefehle von +\KOMAScript{} wohldefiniert. Dort wird dann im Falle der Verwendung einer +Präfixzeile für die Nummer der Überschrift der \PName{Dann-Teil} ausgeführt, +während im anderen Fall der \PName{Sonst-Teil} zur Ausführung kommt. + +Bitte\textnote{Achtung!} beachten Sie außerdem, dass bei der Umdefinierung +selbstverständlich \Macro{newcommand} durch \Macro{renewcommand} zu ersetzen +ist. + +\begin{Example} + Angenommen, Sie wollen, dass bei \DescRef{\LabelBase.cmd.part} das Wort + »Teil« vor der Nummer nicht ausgegeben wird. Dann können Sie beispielsweise + folgende Anweisung in die Präambel Ihres Dokuments schreiben: +\begin{lstcode} + \renewcommand*{\partformat}{\thepart\autodot} +\end{lstcode} + Genau genommen könnten Sie an dieser Stelle auch auf \Macro{autodot} + verzichten und stattdessen einen festen Punkt setzen. Da + \DescRef{\LabelBase.cmd.part} mit römischen Zahlen nummeriert wird, muss der + Punkt laut \cite{DUDEN} folgen. Allerdings bringen Sie sich dann um die + Möglichkeit, die Option \DescRef{\LabelBase.option.numbers}% + \important{\DescRef{\LabelBase.option.numbers}} einzusetzen und so von der + Regel abzuweichen. Näheres zu der Option siehe + \DescPageRef{\LabelBase.option.numbers}. + + Eine weitere Möglichkeit besteht darin, die Nummerierung der Abschnitte + so in den Rand zu platzieren, dass der Überschriftentext + links mit dem umgebenden Text abschließt. Dies erreicht man + mit: +\begin{lstcode} + \renewcommand*{\sectionformat}{% + \makebox[0pt][r]{\thesection\autodot\enskip}} + \renewcommand*{\subsectionformat}{% + \makebox[0pt][r]{\thesubsection\autodot\enskip}} + \renewcommand*{\subsubsectionformat}{% + \makebox[0pt][r]{% + \thesubsubsection\autodot\enskip}} + \renewcommand*{\paragraphformat}{% + \makebox[0pt][r]{\theparagraph\autodot\enskip}} + \renewcommand*{\paragraphformat}{% + \makebox[0pt][r]{% + \thesubparagraph\autodot\enskip}} +\end{lstcode} + Die optionalen Argumente der \Macro{makebox}-Anweisungen fordern von + \LaTeX{} dabei eine Box der Breite Null, deren Inhalt rechtsbündig + angeordnet ist. Im Ergebnis wird der Inhalt der Box links von der aktuellen + Position ausgegeben.\iffree{}{ %Umbruchkorrekturtext + Mit diesem beliebten Trick wird vermieden, dass zunächst die Breite von + Nummer und Abstand ausgemessen werden muss, um dann die aktuelle Position + entsprechend mit \Macro{hspace} zu verändern.} + Näheres zu den optionalen Argumenten von \Macro{makebox} ist + \cite{latex:usrguide} zu entnehmen. +\end{Example} + +Für Formatierungsänderungen bei den Überschriften, die über die reine Ausgabe +der Nummer hinaus gehen, sei ausdrücklich auf +\DescRef{maincls-experts.cmd.partlineswithprefixformat}% +\IndexCmd{partlineswithprefixformat}, +\DescRef{maincls-experts.cmd.chapterlineswithprefixformat}% +\IndexCmd{chapterlineswithprefixformat} und +\DescRef{maincls-experts.cmd.chapterlinesformat}\IndexCmd{chapterlinesformat} +sowie +\DescRef{maincls-experts.cmd.sectionlinesformat}\IndexCmd{sectionlinesformat} +und das zugehörige \DescRef{maincls-experts.cmd.sectioncatchphraseformat}% +\IndexCmd{sectioncatchphraseformat} in \autoref{sec:maincls-experts.experts}, +ab \DescPageRef{maincls-experts.cmd.partlineswithprefixformat} verwiesen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{chapappifchapterprefix}\Parameter{Zusatztext} + \Macro{chapapp} +\end{Declaration}% +Diese \OnlyAt{\Class{scrbook}\and \Class{scrreprt}}% +\ChangedAt{v2.8o}{\Class{scrbook}\and \Class{scrreprt}}% +beiden Anweisungen werden nicht nur intern von {\KOMAScript} verwendet, +sondern stehen auch dem Anwender zur Verfügung. Nachfolgend werden sie +beispielsweise für die Umdefinierung anderer Anweisungen verwendet. + +Bei Verwendung von Option \OptionValueRef{\LabelBase}{chapterprefix}{true}% +\important{\DescRef{\LabelBase.option.chapterprefix}} (siehe +\DescPageRef{\LabelBase.option.chapterprefix}) setzt +\Macro{chapappifchapterprefix} im Hauptteil des Dokuments das Wort +»Kapitel«\Index{Kapitel>Ueberschrift=Überschrift} in der aktuellen Sprache, +gefolgt vom \PName{Zusatztext}. Im Anhang\Index{Anhang} wird stattdessen das +Wort »Anhang« in der aktuellen Sprache, ebenfalls gefolgt vom +\PName{Zusatztext}, ausgegeben. Bei der Einstellung +\OptionValueRef{\LabelBase}{chapterprefix}{false} wird hingegen nichts +ausgegeben. + +Die Anweisung \Macro{chapapp} setzt immer das Wort »Kapitel« +beziehungsweise »Anhang«. Dabei spielt die Einstellung der Option +\DescRef{\LabelBase.option.chapterprefix} keine Rolle. + +Da es Kapitel nur bei den Klassen \Class{scrbook} und \Class{scrreprt} +gibt, existieren die beiden Anweisungen auch nur bei diesen Klassen.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{chaptermark}\Parameter{Kolumnentitel} + \Macro{addchapmark}\Parameter{Kolumnentitel} + \Macro{sectionmark}\Parameter{Kolumnentitel} + \Macro{addsecmark}\Parameter{Kolumnentitel} + \Macro{subsectionmark}\Parameter{Kolumnentitel} + \Macro{chaptermarkformat} + \Macro{sectionmarkformat} + \Macro{subsectionmarkformat} +\end{Declaration}% +\begin{Explain} + Wie bereits in \autoref{sec:\LabelBase.pagestyle} erwähnt, arbeitet der + Seitenstil \DescRef{\LabelBase.pagestyle.headings}\IndexPagestyle{headings}% + \important{\DescRef{\LabelBase.pagestyle.headings}} mit automatischen + Kolumnentiteln\Index{Kolumnentitel>automatisch}. Dazu werden die + Anweisungen \Macro{chaptermark} und \Macro{sectionmark} beziehungsweise + \Macro{sectionmark} und \Macro{subsectionmark} entsprechend definiert. + Gliederungsbefehle (\DescRef{\LabelBase.cmd.chapter}, + \DescRef{\LabelBase.cmd.section}~\dots) führen automatisch eine + entsprechende \Macro{\dots mark}-Anweisung aus. Der dabei übergebene + Parameter beinhaltet den Text der + Gliederungsüberschrift\Index{Ueberschriften=Überschriften}. Die zugehörige + Gliederungsnummer wird automatisch in der \Macro{\dots mark}-Anweisung + hinzugefügt. Die Formatierung erfolgt je nach Gliederungsebene mit einer der + drei Anweisungen \Macro{chaptermarkformat}, \Macro{sectionmarkformat} und + \Macro{subsectionmarkformat}. + + Es ist zu beachten\textnote{Achtung!}, dass die Kolumnentitel von + \DescRef{\LabelBase.cmd.addchap}\IndexCmd{addchap} und + \DescRef{\LabelBase.cmd.addsec}\IndexCmd{addsec} ebenfalls auf + \Macro{chaptermark} und \Macro{sectionmark} basieren. Dabei wird aber lokal + der Zähler \DescRef{\LabelBase.counter.secnumdepth} auf einen Wert gesetzt, + mit dem die Nummerierung von Kapiteln beziehungsweise Abschnitten + abgeschaltet wird. Dies sollte man beispielsweise bei der Umdefinierung von + \Macro{chaptermark} und \Macro{sectionmark} berücksichtigen (siehe + \Macro{ifnumbered} auf \DescPageRef{\LabelBase.cmd.ifnumbered}). Für die + Sternformen \DescRef{\LabelBase.cmd.addchap*} und + \DescRef{\LabelBase.cmd.addsec*} existieren außerdem die Anweisungen + \Macro{addchapmark} und \Macro{addsecmark}, die in der Voreinstellung + ebenfalls in der genannten Weise definiert sind. + + Während\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} bei \Class{scrartcl} + weder \Macro{chaptermark} noch \Macro{addchapmark} oder + \Macro{chaptermarkformat} existieren, gibt es die beiden Anweisungen + \OnlyAt{\Class{scrartcl}}\Macro{subsectionmark} und + \Macro{subsectionmarkformat} nur bei \Class{scrartcl}. Bei Verwendung des + Pakets \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + \IndexPackage{scrlayer-scrpage} ändert sich dies jedoch (siehe + \autoref{cha:scrlayer-scrpage}). +\end{Explain} +So wie mit \DescRef{\LabelBase.cmd.partformat} bis +\DescRef{\LabelBase.cmd.subparagraphformat} die Nummern der +Gliederungsüberschriften formatiert ausgegeben werden, werden entsprechend mit +\Macro{chaptermarkformat}, \Macro{sectionmarkformat} und +\Macro{subsectionmarkformat} die Nummern der Gliederungsebenen in den +automatischen Kolumnentiteln formatiert ausgegeben. Mit \Macro{renewcommand} +können sie eigenen Anforderungen angepasst werden. Die Originaldefinitionen +aus den {\KOMAScript}-Klassen sind: +\begin{lstcode} + \newcommand*{\chaptermarkformat}{% + \chapappifchapterprefix{\ }\thechapter\autodot\enskip} + \newcommand*{\sectionmarkformat}{% + \thesection\autodot\enskip} + \newcommand*{\subsectionmarkformat}{% + \thesubsection\autodot\enskip} +\end{lstcode} +\begin{Example} + Angenommen, Sie wollen, dass der Kapitelnummer in den Kolumnentiteln + das Wort »Kapitel« vorangestellt wird. Dann setzen Sie + beispielsweise diese Definition in die Präambel Ihres Dokuments: +\begin{lstcode} + \renewcommand*{\chaptermarkformat}{% + \chapapp~\thechapter\autodot\enskip} +\end{lstcode} +\end{Example} +Wie Sie sehen, finden hier die beiden Anweisungen +\DescRef{\LabelBase.cmd.chapapp} und +\DescRef{\LabelBase.cmd.chapappifchapterprefix} Verwendung, die weiter oben +erklärt wurden.% +\EndIndexGroup + + +\begin{Declaration} + \Counter{secnumdepth} + \Macro{partnumdepth} + \Macro{chapternumdepth} + \Macro{sectionnumdepth} + \Macro{subsectionnumdepth} + \Macro{subsubsectionnumdepth} + \Macro{paragraphnumdepth} + \Macro{subparagraphnumdepth} +\end{Declaration}% +\BeginIndex{}{Nummerierung}% +Normalerweise werden bei den Klassen \Class{scrbook}\IndexClass{scrbook} und +\Class{scrreprt}\IndexClass{scrreprt} die Gliederungsebenen +\DescRef{\LabelBase.cmd.part}\IndexCmd{part}\IndexCmd{chapter}% +\IndexCmd{section} bis +\DescRef{\LabelBase.cmd.subsection}\IndexCmd{subsection} und bei der Klasse +\Class{scrartcl}\IndexClass{scrartcl} die Ebenen \DescRef{\LabelBase.cmd.part} +bis \DescRef{\LabelBase.cmd.subsubsection}\IndexCmd{subsubsection} +nummeriert. Gesteuert wird dies über den \LaTeX-Zähler \Counter{secnumdepth}. + +Damit\ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} sich der Anwender keine abstrakten Nummern merken muss, um +einstellen zu können, bis zu welcher Gliederungsebene die Überschriften +nummeriert werden sollen, gibt es die Anweisungen \Macro{partnumdepth} bis +\Macro{subparagraphnumdepth}. Diese liefern die entsprechende Nummer zur +jeweiligen Gliederungsebene. +\begin{Example} + Sie wollen, dass in einem Buchprojekt nur die Gliederungsebenen vom Teil + (engl. \emph{part}) über das Kapitel (engl. \emph{chapter}) bis zum + Abschnitt (engl. \emph{section}) nummeriert werden. Dazu müssen Sie + in der Dokumentpräambel den Zähler \Counter{secnumdepth} auf den Wert + setzen, den die Anweisung \Macro{sectionnumdepth} liefert: +\begin{lstcode} + \setcounter{secnumdepth}{\sectionnumdepth} +\end{lstcode} +\end{Example} +Eine Umdefinierung der Anweisungen ist nicht vorgesehen und wird ausdrücklich +nicht empfohlen, da dies zu unvorhergesehenen Ergebnissen sowohl mit +\KOMAScript{} als auch bei Verwendung von Drittpaketen führen kann. + +Der\textnote{Achtung!} Zähler \Counter{secnumdepth} ist nicht zu verwechseln +mit dem Zähler \DescRef{\LabelBase.counter.tocdepth} (siehe +\autoref{sec:\LabelBase.toc}, \DescPageRef{\LabelBase.counter.tocdepth}). Auch +sind die Werte je nach Klasse nicht eins zu eins übertragbar.% +% +\EndIndexGroup + +\begin{Declaration} + \Macro{ifnumbered}\Parameter{Gliederungsebene}% + \Parameter{Dann-Teil}\Parameter{Else-Teil} + \Macro{ifunnumbered}\Parameter{Gliederungsebene}% + \Parameter{Dann-Teil}\Parameter{Else-Teil} +\end{Declaration} +Nachdem\ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} zuvor erklärt wurde, wie man bestimmen kann, welche +Gliederungsebenen nummeriert werden sollen, kann mit diesen Anweisungen nun +Code abhängig davon, ob eine \PName{Gliederungsebene} nummeriert wird oder +nicht, ausgeführt werden. Wird mit den aktuellen Einstellungen eine +\PName{Gliederungsebene} nummeriert, so führt \Macro{ifnumbered} den +\PName{Dann-Teil} aus, während \Macro{ifunnumbered} den \PName{Else-Teil} +ausführt. Wird mit den aktuellen Einstellungen eine \PName{Gliederungsebene} +nicht nummeriert, dann führt \Macro{ifnumbered} den \PName{Else-Teil} aus, +wohingegen \Macro{ifunnumbered} den \PName{Dann-Teil} ausführt. Als +\PName{Gliederungsebene} wird der englische Name der Ebene angegeben, also +\PValue{part}, \PValue{chapter}, \PValue{section}, \PValue{subsection}, +\PValue{subsubsection}, \PValue{paragraph} oder \PValue{subparagraph}. + +\KOMAScript{} selbst verwendet diesen Test beispielsweise in der Definition +von \DescRef{\LabelBase.cmd.chaptermark}\IndexCmd{chaptermark} beim Seitenstil +\DescRef{\LabelBase.pagestyle.headings}\IndexPagestyle{headings}. Dadurch wird +indirekt auch sichergestellt, dass Überschriften mit +\DescRef{\LabelBase.cmd.addchap} den Kolumnentitel nicht mit einer Nummer +versehen (siehe auch \DescRef{\LabelBase.cmd.addchapmark}, +\DescPageRef{\LabelBase.cmd.addchapmark}).% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setpartpreamble}% + \OParameter{Position}\OParameter{Breite}\Parameter{Präambel} + \Macro{setchapterpreamble}% + \OParameter{Position}\OParameter{Breite}\Parameter{Präambel} +\end{Declaration}% +\OnlyAt{\Class{scrbook}\and + \Class{scrreprt}}Teile\Index{Teil>Praeambel=Präambel} und +Kapitel\Index{Kapitel>Praeambel=Präambel} können bei {\KOMAScript} mit einer +\PName{Präambel} versehen werden. Dies ist insbesondere im zweispaltigen +Layout mit der Klassenoption \Option{twocolumn}\IndexOption{twocolumn} +nützlich, da die \PName{Präambel} zusammen mit der Überschrift einspaltig +gesetzt wird. Die \PName{Präambel} kann auch mehrere Absätze beinhalten. Die +Anweisung zum Setzen der \PName{Präambel} muss vor der jeweiligen +\DescRef{\LabelBase.cmd.part}- oder \DescRef{\LabelBase.cmd.addpart}- +bzw. \DescRef{\LabelBase.cmd.chapter}- oder +\DescRef{\LabelBase.cmd.addchap}-Anweisung stehen. +\begin{Example} + Sie schreiben einen Bericht über den Zustand einer Firma. Dabei + organisieren Sie den Bericht so, dass jeder Abteilung ein eigener + Teilbericht spendiert wird. Jedem dieser Teile soll außerdem eine + Zusammenfassung vorangestellt werden. Diese Zusammenfassung soll auf + der Titelseite jedes Teils stehen. Das ist wie folgt möglich: +\begin{lstcode} + \setpartpreamble{% + \begin{abstract} + Dies ist ein Blindtext zur Demonstration. + \end{abstract}} + \part{Abteilung Grünschnitt} +\end{lstcode} + Je nach Einstellung der Optionen für die + Überschriftengröße\Index{Ueberschriften=Überschriften} (siehe + \DescPageRef{\LabelBase.option.headings}) und der Optionen für die Form + der \DescRef{\LabelBase.env.abstract}-Umgebung\IndexEnv{abstract} (siehe + \autoref{sec:\LabelBase.abstract}, \DescPageRef{\LabelBase.option.abstract}), + sieht das Ergebnis ungefähr wie folgt aus: + \begin{ShowOutput}\centering + {\LARGE\usekomafont{disposition} Teil III.\par\vspace{14pt}} + {\LARGE\usekomafont{disposition} Abteilung Grünschnitt\strut\par} + \begin{quote}\small + \vspace{4ex} + \begin{center} + \usekomafont{disposition}\abstractname + \end{center} + \vspace{2ex} + Dies ist ein Blindtext zur Demonstration. + \end{quote} + \end{ShowOutput} +\end{Example} +Bitte\textnote{Achtung!} beachten Sie, dass Sie für die Abstände der Präambel +zur Teilüberschrift bzw. zum Kapiteltext selbst verantwortlich sind. Bitte +beachten Sie auch, dass die \DescRef{\LabelBase.env.abstract}-Umgebung bei der +Klasse \Class{scrbook} nicht existiert (siehe \autoref{sec:\LabelBase.abstract}, +\DescPageRef{\LabelBase.env.abstract}). + +Das\ChangedAt{v2.8p}{\Class{scrbook}\and \Class{scrreprt}} erste +optionale Argument \PName{Position} bestimmt über ein bis zwei +Buchstaben die Position, an der die Präambel ausgegeben wird. Für die +vertikale Position existieren derzeit zwei Möglichkeiten: +%\iffree{}{\pagebreak}% Umbruchoptimierung +\begin{labeling}[~--]{\quad\PValue{o}}\itemsep=-\parsep +\item [\quad\PValue{o}] über der Überschrift +\item [\quad\PValue{u}] unter der Überschrift +\end{labeling}\pagebreak[3]% Umbruchkorrektur +Es kann so jeweils eine Präambel unter und über der Überschrift gesetzt werden, +mit drei Möglichkeiten für die horizontale Position: +\begin{labeling}[~--]{\quad\PValue{o}}\itemsep=-\parsep +\item [\quad\PValue{l}] linksbündig +\item [\quad\PValue{r}] rechtsbündig +\item [\quad\PValue{c}] zentriert +\end{labeling} +Dabei wird allerdings nicht der Text der \PName{Präambel} entsprechend +angeordnet, sondern eine Box, deren Breite durch das zweite optionale +Argument \PName{Breite} bestimmt wird. Wird auf das zweite optionale +Argument verzichtet, so wird stattdessen die gesamte Textbreite +verwendet. Damit bleibt die Option zur horizontalen Positionierung in +diesem Fall wirkungslos. Es kann jeweils ein Buchstabe für die +vertikale mit einem Buchstaben für die horizontale Anordnung +kombiniert werden. + +Eine häufigere Anwendung von \Macro{setchapterpreamble} dürfte ein Spruch oder +Zitat zu einer Überschrift sein. Die dazu verwendbare Anweisung +\DescRef{\LabelBase.cmd.dictum}\IndexCmd{dictum} ist im nachfolgenden +Abschnitt erläutert. Dort findet sich auch ein entsprechendes Beispiel. + +Bitte\textnote{Achtung!} beachten Sie, dass \PName{Präambel} bei der +Platzierung über der Überschrift in den dort vorhandenen freien Platz gesetzt +wird. Die Überschrift wird dabei nicht nach unten verschoben. Der Anwender ist +also selbst dafür verantwortlich dass \PName{Präambel} nicht zu groß ist und +der vorhandene freie Platz über der Überschrift genügt. Siehe dazu auch +Einstellung \Option{beforeskip} für +\DescRef{maincls-experts.cmd.RedeclareSectionCommand} in +\autoref{sec:maincls-experts.experts}, +\autoref{tab:maincls-experts.declarechapterstyle.keys}, +\autopageref{tab:maincls-experts.declarechapterstyle.keys}. +% +% +\EndIndexGroup +% +\EndIndexGroup + + +\LoadCommonFile{dictum}% \section{Schlauer Spruch} + +\LoadCommonFile{lists}% \section{Listen} + +\section{Mathematik} +\seclabel{math}% +\BeginIndexGroup +\BeginIndex{}{Mathematik}% +\BeginIndex{}{Formeln}% +\BeginIndex{}{Gleichungen}% + +Die \KOMAScript-Klassen stellen keine eigenen Umgebungen für mathematische +Formeln, Gleichungssysteme oder ähnliche Elemente der Mathematik +bereit. Stattdessen stützt sich \KOMAScript{} im Bereich der Mathematik voll +und ganz auf den \LaTeX-Kern. Dies gilt auch für die Realisierung der beiden +Optionen \DescRef{\LabelBase.option.leqno} und +\DescRef{\LabelBase.option.fleqn}. + +Auf eine Beschreibung der Mathematikumgebungen des \LaTeX-Kerns, also +\Environment{displaymath}\IndexEnv{displaymath}, +\Environment{equation}\IndexEnv{equation} und +\Environment{eqnarray}\IndexEnv{eqnarray}, wird an dieser Stelle +verzichtet. Wer diese verwenden möchte, sei auf \cite{l2kurz} verwiesen. Für +mehr als nur einfachste mathematische Formeln und Gleichungen sei jedoch +die Verwendung von Paket \Package{amsmath}\textnote{Tipp!} empfohlen (siehe +\cite{package:amsmath}).% + +\begin{Declaration} + \Option{leqno} +\end{Declaration}% +Gleichungen\Index{Gleichungen>Nummern} werden normalerweise auf der rechten +Seite nummeriert. Mit Hilfe der Standardoption \Option{leqno} wird die +Standardoptionsdatei \File{leqno.clo} geladen. Dadurch erfolgt die +Nummerierung von Gleichungen links. Diese Option ist als optionales +Argument\textnote{Achtung!} von \DescRef{\LabelBase.cmd.documentclass} zu +verwenden. Eine Einstellung per \DescRef{\LabelBase.cmd.KOMAoptions} oder +\DescRef{\LabelBase.cmd.KOMAoption} wird nicht unterstützt. Dies wäre auch +deshalb nicht sinnvoll, weil das für den Mathematiksatz empfohlene Paket +\Package{amsmath} ebenfalls nur beim Laden, nicht aber zur Laufzeit auf diese +Option reagieren kann.% +% +\EndIndexGroup + + +\begin{Declaration} + \Option{fleqn} +\end{Declaration}% +Gleichungen\Index{Gleichungen>Ausrichtung} werden normalerweise horizontal +zentriert ausgegeben. Mit Hilfe der Standardoption \Option{fleqn} wird die +Standardoptionsdatei \File{fleqn.clo} geladen. Dadurch erfolgt die Ausgabe von +Gleichungen linksbündig. Diese Option ist als optionales +Argument\textnote{Achtung!} von \DescRef{\LabelBase.cmd.documentclass} zu +verwenden. Eine Einstellung per \DescRef{\LabelBase.cmd.KOMAoptions} oder +\DescRef{\LabelBase.cmd.KOMAoption} wird nicht unterstützt. Dies wäre auch +deshalb nicht sinnvoll, weil das für den Mathematiksatz empfohlene Paket +\Package{amsmath} ebenfalls nur beim Laden, nicht aber zur Laufzeit auf diese +Option reagieren kann.% +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Gleitumgebungen für Tabellen und Abbildungen} +\seclabel{floats} +\BeginIndexGroup +\BeginIndex{}{Gleitumgebungen} +\BeginIndex{}{Tabellen} +\BeginIndex{}{Abbildungen} + +{\LaTeX} bietet mit den Gleitumgebungen einen sehr leistungsfähigen und +komfortablen Mechanismus für die automatische Anordnung von Abbildungen und +Tabellen. Genau genommen sollte von »Tafeln«\Index{Tafeln} statt von +»Tabellen« die Rede sein. Dies wäre auch zur Unterscheidung der Umgebungen +\Environment{table}\IndexEnv{table} und +\Environment{tabular}\IndexEnv{tabular} von Vorteil. Es hat sich im Deutschen +aber für beides die Bezeichnung »Tabelle« eingebürgert. Das kommt vermutlich +daher, dass man in \Environment{table}-Umgebungen üblicherweise +\Environment{tabular}-Umgebungen setzt, auch wenn dies keineswegs zwingend +ist. + +Häufig\textnote{Achtung!} werden die Gleitumgebungen von Anfängern nicht +richtig verstanden. So wird oft die Forderung aufgestellt, eine Tabelle oder +Abbildung genau an einer bestimmten Position im Text zu setzen. Dies ist +jedoch nicht erforderlich, da auf Gleitumgebungen im Text über eine Referenz +verwiesen wird. Es ist auch nicht sinnvoll, da ein solches Objekt an einer +Stelle nur dann gesetzt werden kann, wenn auf der Seite noch genügend Platz +für das Objekt vorhanden ist. Ist dies nicht der Fall, müsste das Objekt auf +die nächste Seite umbrochen werden und auf der aktuellen Seite würde ein +möglicherweise sehr großer leerer Raum bleiben. + +Häufig\textnote{Achtung!} findet sich in einem Dokument auch bei jedem +Gleitobjekt das gleiche optionale Argument zur Platzierung des Objekts. Auch +dies ist nicht sinnvoll. In solchen Fällen sollte man besser den Standardwert +global ändern. Näheres dazu ist \cite{DANTE:FAQ} zu entnehmen. + +\iffree{}{\pagebreak[3]}% Umbruchoptimierung!!! +Ein\textnote{Achtung!} wichtiger Hinweis sei diesem Abschnitt noch +vorangestellt: Die meisten Mechanismen, die hier vorgestellt werden und über +die Fähigkeiten der Standardklassen hinaus gehen, funktionieren nicht mehr, +wenn Sie ein Paket verwenden, das in die Generierung von Tabellen- und +Abbildungstiteln eingreift und deren Aussehen verändert. Dies sollte +selbstverständlich sein, wird aber leider häufig nicht bedacht. + + +\begin{Declaration} + \OptionVName{captions}{Einstellung} +\end{Declaration} +Bei den Standardklassen werden die Titel von Gleitumgebungen, die mit der +Anweisung \DescRef{\LabelBase.cmd.caption}\IndexCmd{caption} (siehe unten) +gesetzt werden, als Unterschrift formatiert. Darüber hinaus wird zwischen +ein"~ und mehrzeiligen Unterschriften unterschieden, wobei einzeilige +Unterschriften horizontal zentriert werden. + +\leavevmode\LabelOptionValue{captions}{tableheading}\nobreak% +Tabellen werden jedoch häufig mit +Überschriften\important{\OptionValue{captions}{tableheading}} statt mit +Unterschriften versehen. Das liegt daran, dass es auch Tabellen geben kann, +die sich über mehrere Seiten erstrecken. Bei solchen Tabellen möchte man +natürlich bereits auf der ersten Seite wissen, worum es sich handelt. Darüber +hinaus werden Tabellen zeilenweise von oben nach unten gelesen. Damit gibt es +mindestens zwei gute Gründe, in der Regel alle Tabellen mit Überschriften zu +versehen. \KOMAScript{} bietet daher mit der Einstellung +\OptionValue{captions}{tableheading}% +\IndexOption{captions~=\textKValue{tableheading}} die Möglichkeit, bei +Tabellen die Formatierung auf Überschriften zu ändern. + +Es\textnote{Achtung!} sei an dieser Stelle darauf hingewiesen, dass +mehrseitige Tabellen nicht als Gleitumgebungen gesetzt werden können. Für den +automatischen Seitenumbruch von Tabellen werden außerdem Zusatzpakete wie +\Package{longtable}\IndexPackage{longtable} (siehe \cite{package:longtable}) +oder \Package{supertabular}\IndexPackage{supertabular} (siehe +\cite{package:supertabular}) benötigt. + +Mit\important{\OptionValue{captions}{tablesignature}} +der Einstellung +\OptionValue{captions}{tablesignature}% +\IndexOption{captions~=\textKValue{tablesignature}} +wird wieder die Voreinstellung der Formatierung als Tabellenunterschrift +gewählt. Es\textnote{Achtung!} sei an dieser Stelle darauf hingewiesen, dass +die beiden Werte lediglich die Formatierung ändern. Der Ort, an dem die Über"~ +oder Unterschrift gesetzt wird, hängt bei den Gleitumgebungen von +\KOMAScript{} allein vom Ort ab, an dem die Anweisung +\DescRef{\LabelBase.cmd.caption} verwendet wird. Dies ändert sich jedoch bei +Verwendung des Pakets \Package{float}\IndexPackage{float} mit der Anweisung +\Macro{restylefloat}\IndexCmd{restylefloat}\important{\Macro{restylefloat}} +(siehe \cite{package:float}). + +Natürlich\important{\OptionValue{captions}{figureheading}\\ + \OptionValue{captions}{figuresignature}} +existiert\ChangedAt{v3.09}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} mit den Optionen \OptionValue{captions}{figureheading}% +\IndexOption{captions~=\textKValue{figureheading}} und +\OptionValue{captions}{figuresignature}% +\IndexOption{captions~=\textKValue{figuresignature}} auch die entsprechende +Funktion für Abbildungen. Allerdings werden Abbildungen in der Regel wie im +Falle von Fotos eher als Ganzes und im Falle von Diagrammen oder Graphen eher +von unten links her betrachtet. In den wenigsten Fällen dürfte es daher +sinnvoll sein, nur bei Abbildungen die Formatierung von Unterschriften in +Überschriften zu ändern. + +Manchmal wird jedoch gewünscht, alle Gleitumgebungen mit Überschriften zu +versehen. Daher gibt es bei \KOMAScript{} die Einstellungen\important{% + \OptionValue{captions}{heading}\\ + \OptionValue{captions}{signature}} \OptionValue{captions}{heading}% +\IndexOption{captions~=\textKValue{heading}} und +\OptionValue{captions}{signature}\IndexOption{captions~=\textKValue{signature}}, +mit der man die Formatierungen aller Gleitumgebungen entsprechend ändern +kann. Diese entfalten ihre Wirkung auch noch, wenn sie innerhalb einer +Gleitumgebung verwendet werden. + +Bitte\textnote{Achtung!}\OnlyAt{\Package{float}}\IndexPackage{float} beachten +Sie, dass bei Verwendung des \Package{float}-Pakets die Einstellungen von +Unterschriften oder Überschriften nicht mehr funktionieren, sobald Sie +\Macro{restylefloat} auf Tabellen oder Abbildungen anwenden. Näheres zum +\Package{float}-Paket und \Macro{restylefloat} entnehmen Sie bitte +\cite{package:float}. Dies gilt ebenso für \DescRef{\LabelBase.cmd.caption} +innerhalb von neuen Gleitumgebungen, die mit \Package{float} definiert +wurden. Zusätzliche Unterstützung, die \KOMAScript{} bei Verwendung des +\Package{float}-Pakets bietet, finden Sie bei der Erklärung zu +\PValue{komaabove} (siehe \DescPageRef{\LabelBase.floatstyle.komaabove}). Als +Alternative zu \Package{float} sei auch die Verwendung von +\DescRef{\LabelBase.cmd.captionof} (siehe +\DescPageRef{\LabelBase.cmd.captionof}) und +\DescRef{tocbasic.cmd.DeclareNewTOC} (siehe +\DescPageRef{tocbasic.cmd.DeclareNewTOC}) erwähnt. Darüber hinaus sei bei +Verwendung von \Package{float} ausdrücklich Paket +\hyperref[cha:scrhack]{\Package{scrhack}}\IndexPackage{scrhack}% +\important{\hyperref[cha:scrhack]{\Package{scrhack}}} (siehe +\autoref{cha:scrhack} ab \autopageref{cha:scrhack} in +\autoref{part:forExperts}) empfohlen. + +\leavevmode\LabelOptionValue{captions}{nooneline}\nobreak +Bei\important{\OptionValue{captions}{nooneline}} \KOMAScript{} besteht darüber +hinaus auch die Möglichkeit, mit der Einstellung +\OptionValue{captions}{nooneline}\IndexOption{captions~=\textKValue{nooneline}} +die Unterscheidung zwischen ein"~ und mehrzeiligen Über"~ bzw. Unterschriften +abzuschalten. Dies ist beispielsweise dann wichtig, wenn man keine Zentrierung +wünscht. Die\important{\OptionValue{captions}{oneline}}% +\LabelOptionValue{captions}{oneline} +Voreinstellung\textnote{Voreinstellung}, bei der einzeilige Über"~ und +Unterschriften automatisch horizontal zentriert werden, entspricht der +Einstellung \OptionValue{captions}{oneline}. + +Als Besonderheit bietet \KOMAScript{} innerhalb von Gleitumgebungen die +Möglichkeit, den Titel statt als Über"~ oder Unterschrift neben den +eigentlichen Inhalt zu +setzen. Die\important{\DescRef{\LabelBase.env.captionbeside}} dazu notwendige +Umgebung \DescRef{\LabelBase.env.captionbeside}\IndexEnv{captionbeside} ist ab +\DescPageRef{\LabelBase.env.captionbeside} erklärt. Die Einstellungen für +diese Umgebung können ebenfalls mit der Option \Option{captions} geändert +werden. Die dabei möglichen Werte für die jeweilige \PName{Einstellung} sind +\autoref{tab:maincls.captions} zu entnehmen. +% +\iffree{}{% Umbruchoptimierung!!!! + \enlargethispage*{\dp\strutbox}}% +\begin{desclist} + \desccaption[{Mögliche Werte für Option \Option{captions}}]{M% + ögliche Werte für Option \Option{captions} zur Einstellung der + Formatierung von Über"~ und Unterschriften in + Gleitumgebungen\label{tab:maincls.captions}% + }{% + Mögliche Werte für Option \Option{captions} (\emph{Fortsetzung})% + }% + \entry{\PValue{bottombeside}, \PValue{besidebottom}}{% + Gleitumgebungstitel der Umgebung \DescRef{\LabelBase.env.captionbeside} + (siehe \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) werden mit der untersten + Grundlinie auf Höhe der untersten Grundlinie des Inhalts der Gleitumgebung + ausgerichtet.% + \IndexOption{captions~=\textKValue{bottombeside}}}% + \entry{\PValue{centeredbeside}, \PValue{besidecentered}, + \PValue{middlebeside}, \PValue{besidemiddle}}{% + Gleitumgebungstitel der Umgebung \DescRef{\LabelBase.env.captionbeside} + (siehe \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) werden zum Inhalt der + Gleitumgebung vertikal zentriert ausgerichtet.% + \IndexOption{captions~=\textKValue{centeredbeside}}}% + \entry{\PValue{figureheading}, \PValue{figureabove}, \PValue{abovefigure}, + \PValue{topatfigure}% + \IndexOption{captions~=\textKValue{figureheading}}}{% + \ChangedAt{v3.09}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Bei Abbildungen wird (gegebenenfalls abweichend von + \OptionValue{captions}{signature}) die Formatierung als Überschrift + gewählt.}% + \entry{\PValue{figuresignature}, \PValue{figurebelow}, \PValue{belowfigure}, + \PValue{bottomatfigure}% + \IndexOption{captions~=\textKValue{figuresignature}}}{% + \ChangedAt{v3.09}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Bei Abbildungen wird (gegebenenfalls abweichend von + \OptionValue{captions}{heading}) die Formatierung als Unterschrift + gewählt.}% + \entry{\PValue{heading}, \PValue{above}, \PValue{top}% + \IndexOption{captions~=\textKValue{heading}}}{% + Gleitumgebungstitel\ChangedAt{v3.09}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} werden als Überschriften + formatiert. Dies hat jedoch keinen Einfluss darauf, ob sie über oder unter + der Gleitumgebung platziert werden. Die Option impliziert auch + \OptionValue{captions}{tableheading} und + \OptionValue{captions}{figureheading}.}% + \entry{\PValue{innerbeside}, + \PValue{besideinner}\IndexOption{captions~=\textKValue{innerbeside}}}{% + Gleitumgebungstitel der Umgebung \DescRef{\LabelBase.env.captionbeside} + (siehe \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) werden bei doppelseitigem Satz + in der Voreinstellung innen neben dem Inhalt der Gleitumgebung + gesetzt. Dies entspricht im einseitigen Satz + \OptionValue{captions}{leftbeside}.}% + \entry{\PValue{leftbeside}, + \PValue{besideleft}\IndexOption{captions~=\textKValue{leftbeside}}}{% + Gleitumgebungstitel der Umgebung \DescRef{\LabelBase.env.captionbeside} + (siehe \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) werden in der Voreinstellung + links neben dem Inhalt der Gleitumgebung gesetzt.}% + \pventry{nooneline}{% + Einzeilige Über"~ und Unterschriften von Gleitumgebungen werden nicht + gesondert, sondern genau wie mehrzeilige behandelt.% + \IndexOption{captions~=\textKValue{nooneline}}}% + \pventry{oneline}{% + Einzeilige Über"~ und Unterschriften von Gleitumgebungen werden gesondert + behandelt, um sie horizontal zu zentrieren.% + \IndexOption{captions~=\textKValue{oneline}}}% + \entry{\PValue{outerbeside}, \PValue{besideouter}% + \IndexOption{captions~=\textKValue{outerbeside}}}{% + Gleitumgebungstitel der Umgebung \DescRef{\LabelBase.env.captionbeside} + (siehe \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) werden bei doppelseitigem Satz + in der Voreinstellung außen neben dem Inhalt der Gleitumgebung + gesetzt. Dies entspricht im einseitigen Satz + \OptionValue{captions}{rightbeside}.}% + \entry{\PValue{rightbeside}, \PValue{besideright}% + \IndexOption{captions~=\textKValue{rightbeside}}}{% + Gleitumgebungstitel der Umgebung \DescRef{\LabelBase.env.captionbeside} + (siehe \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) werden in der Voreinstellung + rechts neben dem Inhalt der Gleitumgebung gesetzt.}% + \entry{\PValue{signature}, \PValue{below}, \PValue{bot}, \PValue{bottom}% + \IndexOption{captions~=\textKValue{signature}}}{% + \ChangedAt{v3.09}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Gleitumgebungstitel werden als Unterschriften formatiert. Dies hat jedoch + keinen Einfluss darauf, ob sie über oder unter der Gleitumgebung platziert + werden. Die Option impliziert auch \OptionValue{captions}{tablesignature} + und \OptionValue{captions}{figuresignature}.}% + \entry{\PValue{tableheading}, \PValue{tableabove}, \PValue{abovetable}, + \PValue{abovetabular}, \PValue{topattable}% + \IndexOption{captions~=\textKValue{tableheading}}}{% + Bei Tabellen wird (gegebenenfalls abweichend von + \OptionValue{captions}{signature}) die Formatierung als Überschrift + gewählt.}% + \entry{\PValue{tablesignature}, \PValue{belowtable}, \PValue{belowtabular}, + \PValue{bottomattable}% + \IndexOption{captions~=\textKValue{tablesignature}}}{% + Bei Tabellen wird (gegebenenfalls abweichend von + \OptionValue{captions}{heading}) die Formatierung als Unterschrift + gewählt.}% + \entry{\PValue{topbeside}, \PValue{besidetop}}{% + Gleitumgebungstitel der Umgebung \DescRef{\LabelBase.env.captionbeside} + (siehe \autoref{sec:\LabelBase.floats}, + \DescPageRef{\LabelBase.env.captionbeside}) werden mit der obersten + Grundlinie auf Höhe der obersten Grundlinie des Inhalts der Gleitumgebung + ausgerichtet.% + \IndexOption{captions~=\textKValue{topbeside}}}% +\end{desclist}% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{caption}\OParameter{Verzeichniseintrag}\Parameter{Titel} + \Macro{captionbelow}\OParameter{Verzeichniseintrag}\Parameter{Titel} + \Macro{captionabove}\OParameter{Verzeichniseintrag}\Parameter{Titel} +\end{Declaration}% +Tabellen und Abbildungen werden bei den Standardklassen mit Hilfe der +Anweisung \Macro{caption} mit einem \PName{Titel} in Form einer +Unterschrift\Index{Tabellen>Unterschrift} versehen. Bei Abbildungen ist dies +grundsätzlich korrekt. Bei Tabellen wird gestritten, ob der \PName{Titel} als +Überschrift über oder konsistent mit der +Bildunterschrift\Index{Bildunterschrift} unter die Tabelle gehört. Daher +bietet \KOMAScript{}\textnote{\KOMAScript{} vs. Standardklassen} im +Gegensatz zu den Standardklassen die Anweisungen \Macro{captionbelow} für +\PName{Titel} in Form von Unterschriften und \Macro{captionabove} für +\PName{Titel} in Form von Überschriften. + +Sowohl bei Tabellen als auch bei Abbildungen oder generell für alle +Gleitumgebungen lässt sich das Verhalten von \Macro{caption} mit der Option +\DescRef{\LabelBase.option.captions}\IndexOption{captions} steuern, die am +Anfang dieses Abschnitts zu finden ist. Aus Gründen der Kompatibilität ist +voreingestellt, dass sich \Macro{caption} bei allen Gleitumgebungen wie +\Macro{captionbelow} verhält. Es wird jedoch empfohlen\textnote{Tipp!}, +Tabellenüberschriften zu verwenden und auf die Formatierung mit +\OptionValueRef{\LabelBase}{captions}{tableheading} entsprechend umzustellen +oder bei Tabellen auf \Macro{captionabove} zurück zu greifen. +% +\begin{Example} + Sie wollen mit + Tabellenüberschriften\Index{Tabellen>Ueberschrift=Überschrift} statt mit + Tabellenunterschriften arbeiten, weil Sie teilweise Tabellen haben, die über + mehr als eine Seite gehen. Mit den Standardklassen bliebe Ihnen nur die + Möglichkeit: +\begin{lstcode} + \begin{table} + \caption{Dies ist nur eine Beispieltabelle} + \begin{tabular}{llll} + Dies & ist & ein & Beispiel.\\\hline + Bitte & lassen & Sie & den \\ + Inhalt & dieser & Tabelle & unbeachtet. + \end{tabular} + \end{table} +\end{lstcode} + Damit hätten Sie das unschöne Ergebnis: + \begin{ShowOutput}\centering + {\usekomafont{caption}{\usekomafont{captionlabel}\tablename~30.2:} + Dies ist nur eine + Beispieltabelle}\\ + \begin{tabular}{llll} + Dies & ist & ein & Beispiel.\\\hline + Bitte & lassen & Sie & den \\ + Inhalt & dieser & Tabelle & unbeachtet. + \end{tabular} + \end{ShowOutput} + Bei \KOMAScript{} schreiben Sie hingegen: +\begin{lstcode} + \begin{table} + \captionabove{Dies ist nur eine Beispieltabelle} + \begin{tabular}{llll} + Dies & ist & ein & Beispiel.\\\hline + Bitte & lassen & Sie & den \\ + Inhalt & dieser & Tabelle & unbeachtet. + \end{tabular} + \end{table} +\end{lstcode} + Sie erhalten dann das gewünschte Ergebnis: + \begin{ShowOutput}\centering + {\usekomafont{caption}{\usekomafont{captionlabel}\tablename~30.2:} + Dies ist nur eine + Beispieltabelle}\\\vskip\abovecaptionskip + \begin{tabular}{llll} + Dies & ist & ein & Beispiel.\\\hline + Bitte & lassen & Sie & den \\ + Inhalt & dieser & Tabelle & unbeachtet. + \end{tabular} + \end{ShowOutput} + Da Sie konsequent nicht nur eine, sondern alle Tabellen mit Überschriften + versehen, können Sie stattdessen auch die Option + \OptionValueRef{\LabelBase}{captions}{tableheading} setzen (siehe + \DescPageRef{\LabelBase.option.captions.tableheading}). Dann genügt es, + wenn Sie wie bei den Standardklassen \Macro{caption} verwenden. Sie + erhalten trotzdem das Ergebnis von \Macro{captionabove}. +\end{Example} + +\BeginIndex[indexother]{}{Schrift>Art}% +\BeginIndex{FontElement}{caption}\LabelFontElement{caption}% +\BeginIndex{FontElement}{captionlabel}\LabelFontElement{captionlabel}% +Die Schriftart\ChangedAt{v2.8p}{% + \Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} für die +Beschreibung und das Label~-- »Abbildung« oder »Tabelle«, gefolgt von der +Nummer und einem Trennzeichen -- kann über die Anweisungen +\DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, \DescPageRef{\LabelBase.cmd.setkomafont}) +verändert werden. Zuständig sind hier die Elemente \FontElement{caption}% +\important[i]{\FontElement{caption}\\\FontElement{captionlabel}} und +\FontElement{captionlabel} (siehe \autoref{tab:maincls.fontelements}, +\autopageref{tab:maincls.fontelements}). Dabei wird die Schriftart für das +Element \FontElement{caption} zunächst auch auf das Element +\FontElement{captionlabel} angewandt, bevor dessen spezifische Schriftart +Anwendung findet. Die Vorbelegungen sind \autoref{tab:maincls.captionFont} zu +entnehmen. +% +\begin{table} +% \centering% +% \caption + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt} + \begin{captionbeside} + [{Schriftvoreinstellungen für die Elemente der Tabellen- + oder\newline Abbildungsunterschrift + bzw. "~überschrift}] + {\label{tab:maincls.captionFont}% + Voreinstellungen der Schrift für die Elemente der Tabellen- + oder Abbildungsunterschrift bzw. "~überschrift} + [l] + \begin{tabular}[t]{ll} + \toprule + Element & Voreinstellung \\ + \midrule + \FontElement{caption} & \Macro{normalfont} \\ + \FontElement{captionlabel} & \Macro{normalfont} \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} +% +\begin{Example} + Sie wollen, dass Tabellen- und Abbildungsbeschreibungen in einer + kleineren Schriftart gesetzt werden. Also setzen Sie + beispielsweise in der Präambel Ihres Dokuments: +\begin{lstcode} + \addtokomafont{caption}{\small} +\end{lstcode} + Außerdem hätten Sie gerne, dass das Label serifenlos und fett + gedruckt wird. Sie setzen also außerdem: +\begin{lstcode} + \setkomafont{captionlabel}{\sffamily\bfseries} +\end{lstcode} + Das Ergebnis wäre bei Verwendung von \DescRef{\LabelBase.cmd.addtokomafont} + in diesem Fall übrigens gleich. +\end{Example}% +\EndIndexGroup + + +\begin{Declaration} + \Macro{captionof}\Parameter{Objekttyp}\OParameter{Verzeichniseintrag} + \Parameter{Titel} + \Macro{captionaboveof}\Parameter{Objekttyp}\OParameter{Verzeichniseintrag} + \Parameter{Titel} + \Macro{captionbelowof}\Parameter{Objekttyp}\OParameter{Verzeichniseintrag} + \Parameter{Titel} +\end{Declaration} +Ähnlich wie die Pakete \Package{caption}\IndexPackage{caption} und +\Package{capt-of}\IndexPackage{capt-of} bietet auch \KOMAScript{} die +Anweisung \Macro{captionof}\ChangedAt{v3.05}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} mit der man auch außerhalb einer +Gleitumgebung oder in einer fremden Gleitumgebung einen entsprechenden Titel +mit Eintrag in das jeweilige Verzeichnis setzen kann. Dabei muss im Gegensatz +zu \DescRef{\LabelBase.cmd.caption} die Art des Gleitobjekts als zusätzliches +erstes Argument angegeben werden. + +Darüber hinaus bietet \KOMAScript{} zusätzlich auch die Anweisungen +\Macro{captionaboveof}\ChangedAt{v3.09}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} und \Macro{captionbelowof}. Diese +dienen als Gegenstücke zu \DescRef{\LabelBase.cmd.captionabove} und +\DescRef{\LabelBase.cmd.captionbelow}. + +Selbstverständlich berücksichtigt\ChangedAt{v3.09a}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} \Macro{captionof} auch die +Einstellungen von Option \DescRef{\LabelBase.option.captions} bezüglich der +Formatierung des Titels als Über- oder Unterschrift. Diese Fähigkeit geht +jedoch eventuell durch das Laden von Paketen wie +\Package{capt-of}\IndexPackage{capt-of} oder +\Package{caption}\IndexPackage{caption} verloren. Bei Verwendung von +\Package{caption} ist die Anleitung zu diesem Paket zu beachten (siehe +\cite{package:caption})!% +\begin{Example} + Angenommen, Sie wollen ein Gleitobjekt erstellen, bei dem eine Tabelle und + eine Abbildung nebeneinander stehen. Da es keine gemischten Gleitobjekte gibt, + verwenden Sie primär eine \Environment{figure}-Umgebung: +\begin{lstcode} + \begin{figure} + \begin{minipage}{.5\linewidth} + \centering + \rule{4cm}{5cm} + \caption{Ein Rechteck}\label{fig:rechteck} + \end{minipage}% + \begin{minipage}{.5\linewidth} + \centering + \captionaboveof{table} + [Maße des Rechtecks aus + Abbildung~\ref{fig:rechteck}]% + {Rechtecksmaße} + \label{tab:rechteck} + \begin{tabular}{ll} + Breite: & 4\,cm\\ + Höhe: & 5\,cm + \end{tabular} + \end{minipage} + \end{figure} +\end{lstcode} + Um Abbildung und Tabelle nebeneinander zu setzen, wurden zwei + \Environment{minipage}-Umgebungen verwendet. Wichtig\textnote{Achtung!} ist + hier das Prozentzeichen nach der ersten \Environment{minipage}, ohne das ein + zusätzlicher Wortabstand zwischen die beiden + \Environment{minipage}-Umgebungen gesetzt würde. + + Die Abbildungsunterschrift wurde mit \DescRef{\LabelBase.cmd.caption} + gesetzt. Für die Tabellenüberschrift wurde \Macro{captionaboveof} + verwendet. Als erstes Argument wurde \PValue{table} angegeben. Dadurch weiß + \KOMAScript{}, dass es sich trotz \Environment{figure}-Umgebung um eine + Tabellenüberschrift handelt. + + Das optionale Argument von \Macro{captionaboveof} setzt den Eintrag in das + Tabellenverzeichnis. Ohne das optionale Argument würde der als letztes + Argument angegebene Titel ebenfalls in das Tabellenverzeichnis + geschrieben. Während dieser Titel im Gleitobjekt selbst völlig ausreichend + ist, wäre er jedoch im Tabellenverzeichnis wenig aussagekräftig. Daher wird + hier für das Verzeichnis ein abweichender Titel über das optionale Argument + verwendet. Das Ergebnis der Bemühungen zeigt + \autoref{fig:maincls.captionaboveof}.% +% +\begin{figure} +% \centering +% \caption + \KOMAoptions{captions=bottombeside}% + \setcapindent{0pt}% + \begin{captionbeside} + [{Beispiel: Verwendung von \Macro{captionaboveof} innerhalb einer + fremden Gleitumgebung}] + {\hspace{0pt plus 1ex}Verwendung von \Macro{captionaboveof} innerhalb einer + fremden Gleitumgebung\label{fig:maincls.captionaboveof}} + [l] + \begin{minipage}[b]{.66\linewidth}% + \raisebox{\depth}{\fbox{\KOMAoptions{captions=oneline}% + \begin{minipage}{.5\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax} + \centering + \rule{4cm}{5cm} + \caption[Beispiel: Ein Rechteck]{Ein Rechteck}\label{fig:maincls.rechteck} + \end{minipage}% + \begin{minipage}{.5\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax} + \centering + \captionaboveof{table}[Beispiel: Maße des Rechtecks aus + Abbildung~\ref{fig:maincls.rechteck}]{Rechteckmaße} + \label{tab:maincls.rechteck} + \begin{tabular}{ll} + Breite: & 4\,cm\\ + Höhe: & 5\,cm + \end{tabular} + \end{minipage}}}% + \end{minipage}% + \end{captionbeside}% +\end{figure}% +\end{Example}% +In gleicher Weise, wie in obigem Beispiel eine Tabelle innerhalb einer +Abbildungsumgebung gesetzt und mit einem Titel versehen wird, könnte man auch +eine nicht gleitende Tabelle außerhalb jeder Gleitumgebung setzen. Auch dabei +sollte in der Regel eine \Environment{minipage} verwendet werden, um zu +verhindern, dass zwischen Überschrift und Tabelle ein Seitenumbruch erfolgen +kann. Zusätzlich sollte man die \Environment{minipage} dann noch in eine +\Environment{flushleft}-Umgebung einbetten, um einerseits einen gefälligen +Abstand zum Text davor und dahinter zu erreichen und andererseits den +Absatzeinzug vor der \Environment{minipage} zu verhindern.% +\EndIndexGroup + + +\begin{Declaration} + \begin{Environment}{captionbeside} + \OParameter{Verzeichnistitel} + \Parameter{Titel} + \OParameter{Anordnung} + \OParameter{Breite} + \OParameter{Offset} + \begin{Body}\BodyDots\end{Body} + \end{Environment} + \labelsuffix[*] + \begin{Environment}{captionbeside} + \OParameter{Verzeichnistitel} + \Parameter{Titel} + \OParameter{Anordnung} + \OParameter{Breite} + \OParameter{Offset}\PValue{*} + \begin{Body}\BodyDots\end{Body} + \end{Environment} +\end{Declaration} +Neben \ChangedAt{v2.8q}{% + \Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}% +den Unter- und Überschriften findet man insbesondere bei kleineren Abbildungen +häufiger Beschreibungen, die neben der Abbildung gesetzt werden. Dabei +schließt normalerweise die Unterkante der Beschreibung mit der Unterkante der +Abbildung ab. Natürlich kann man mit etwas Geschick und beispielsweise zwei +\Macro{parbox}-Anweisungen dergleichen auch in den Standardklassen +erreichen. \KOMAScript{} bietet jedoch eine spezielle Umgebung. Diese Umgebung +kann innerhalb der Gleitumgebungen verwendet werden. Der erste optionale +Parameter \PName{Verzeichnistitel}% +\important{\PName{Verzeichnistitel}\\\PName{Titel}} und der obligatorische +Parameter \PName{Titel} entsprechen genau den gleichnamigen Parametern von +\DescRef{\LabelBase.cmd.caption}, \DescRef{\LabelBase.cmd.captionabove} oder +\DescRef{\LabelBase.cmd.captionbelow}. Der \PName{Titel} wird neben den Inhalt +der Umgebung gesetzt. + +Ob\important{\PName{Anordnung}} der \PName{Titel} rechts oder links daneben +gesetzt wird, kann mit dem optionalen Parameter \PName{Anordnung} bestimmt +werden. Es darf genau einer der folgenden Buchstaben angegeben werden: +\begin{labeling}[~--]{\quad\PValue{o}}\setlength{\itemsep}{-1\parsep plus 1ex}% +\item[\quad\PValue{l}] links +\item[\quad\PValue{r}] rechts +\item[\quad\PValue{i}] innen: auf rechten Seiten links, auf + linken Seiten rechts +\item[\quad\PValue{o}] außen: auf rechten Seiten rechts, auf + linken Seiten links +\end{labeling} +Voreingestellt ist rechts neben dem Inhalt der Umgebung. Diese +Voreinstellung\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} kann jedoch mit der Option +\DescRef{\LabelBase.option.captions}\IndexOption{captions}% +\important{\DescRef{\LabelBase.option.captions}} (siehe +\DescPageRef{\LabelBase.option.captions}) und deren Werte +\PValue{innerbeside}\IndexOption[indexmain]{captions~=\textKValue{innerbeside}}, +\PValue{leftbeside}\IndexOption[indexmain]{captions~=\textKValue{leftbeside}}, +\PValue{outerbeside}\IndexOption[indexmain]{captions~=\textKValue{outerbeside}} +und +\PValue{rightbeside}\IndexOption[indexmain]{captions~=\textKValue{rightbeside}} +verändert werden. Bei Verwendung der Anordnung außen oder innen werden unter +Umständen zwei \LaTeX-Läufe benötigt, um die korrekte Anordnung zu erreichen. + +Normalerweise\important{\PName{Breite}} nehmen der Inhalt der Umgebung und der +\PName{Titel} die gesamte verfügbare Breite ein. Es besteht jedoch die +Möglichkeit, mit dem optionalen Parameter \PName{Breite} eine andere Breite +anzugeben. Diese kann auch größer als die Breite des Textkörpers sein. + +Bei Angabe einer \PName{Breite}\important{\PName{Breite}\\\PName{Offset}} wird +die genutzte Breite normalerweise bezüglich der Breite des Textkörpers +zentriert. Mit dem optionalen Argument \PName{Offset} kann stattdessen eine +Verschiebung relativ zum linken Rand angegeben werden. Ein positiver Wert +entspricht einer Verschiebung nach rechts, ein negativer Wert einer +Verschiebung nach links. Mit einem \PName{Offset} von 0\Unit{pt} erfolgt die +Ausgabe linksbündig. + +Wird\important{\PValue{*}} hinter den optionalen Parameter \PName{Offset} noch +ein Stern gesetzt, so stellt der \PName{Offset} im doppelseitigen Druck auf +linken Seiten eine Verschiebung relativ zum rechten Rand dar. Ein positiver +Wert entspricht dann einer Verschiebung nach außen, während ein negativer Wert +für eine Verschiebung nach innen steht. Ein \PName{Offset} von 0\Unit{pt} wäre +dann also bündig zum inneren Rand. Diese Variante benötigt unter Umständen +zwei \LaTeX-Durchläufe, um die korrekte Verschiebung zu erreichen. + +Vertikal erfolgt die Ausrichtung in der Voreinstellung unten. Das bedeutet, +dass die untere Grundlinie des Inhalts des Gleitobjekts und die untere +Grundlinie von \PName{Titel} auf einer Höhe liegen. Diese +Einstellung\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} kann mit der Option +\DescRef{\LabelBase.option.captions}\IndexOption{captions}% +\important{\DescRef{\LabelBase.option.captions}} (siehe +\DescPageRef{\LabelBase.option.captions}) und deren Werte +\PValue{topbeside}\IndexOption[indexmain]{captions~=\textKValue{topbeside}}, +\PValue{centeredbeside}% +\IndexOption[indexmain]{captions~=\textKValue{centeredbeside}} und +\PValue{bottombeside}\IndexOption[indexmain]{captions~=\textKValue{bottombeside}} +verändert werden. Bei der Einstellung \PValue{topbeside} werden die oberen +Grundlinien von Gleitobjektinhalt und \PName{Titel} auf einer Höhe +ausgerichtet, während bei \PValue{centeredbeside} eine Zentrierung +stattfindet. In diesem Zusammenhang sei erwähnt, dass Abbildungen +normalerweise die Grundlinie unten haben. Dies kann beispielsweise mit der +Anweisung \Macro{raisebox}\IndexCmd{raisebox} verändert werden. + +\begin{Example} + Ein Beispiel für die Verwendung der + \Environment{captionbeside}-""Umgebung ist in + \autoref{fig:maincls.captionbeside} zu finden. Gesetzt wurde + diese Abbildung mit: +\begin{lstcode} + \begin{figure} + \begin{captionbeside}% + [Beispiel: Bildbeschreibung daneben, unten]% + {Eine Bildbeschreibung weder über noch unter + der Abbildung, sondern unten daneben}% + [i][\linewidth][% + \dimexpr\marginparwidth+\marginparsep\relax]* + \fbox{% + \parbox[b][5\baselineskip][c]{.25\textwidth} + {% + \hspace*{\fill}\KOMAScript + \hspace*{\fill}\par + }% + } + \end{captionbeside} + \label{fig:maincls.captionbeside} + \end{figure} +\end{lstcode} + \begin{figure} + \begin{captionbeside}[Beispiel: Bildbeschreibung daneben, unten]% + {Eine Bildbeschreibung weder über noch unter der Abbildung, + sondern unten daneben}[i][\linewidth] + \fbox{\parbox[b][5\baselineskip][c]{.25\textwidth}{% + \hspace*{\fill}\KOMAScript\hspace*{\fill}\par}} + \end{captionbeside} + \label{fig:maincls.captionbeside} + \end{figure} + Die Gesamtbreite ist also die aktuell verfügbare Breite + \PValue{\Macro{linewidth}}. Diese wird jedoch um $\Length{marginparwidth} + + \Length{marginparsep}$ nach + außen verschoben. Der Titel oder die Beschreibung steht innen neben + der Abbildung. Damit erscheint die Abbildung selbst bis in die + Marginalienspalte in den Rand gerückt. + +\iffalse% Umbruchkorrekturtext + Mit \Macro{dimexpr} wird hier eine \eTeX-Anweisung verwendet, da + \KOMAScript{} dessen Verwendung voraussetzt und bei jeder halbwegs aktuellen + \LaTeX-Distribution ohnehin \eTeX{} verwendet wird.% +\fi + + Die Zentrierung der Bildbeschreibung mit +\begin{lstcode} + \KOMAoption{captions}{centeredbeside} +\end{lstcode} + zeigt \autoref{fig:maincls.captionbesidecentered}. % +\iffalse % Umbruchalternativen + Auch der typografisch weniger bewanderte Anfänger wird sofort + erkennen, dass von dieser Ausrichtung normalerweise abzusehen ist.% +\else + Das ist jedoch sicher keine empfehlswerte Lösung.% +\fi + + \begin{figure} + \KOMAoption{captions}{centeredbeside} + \begin{captionbeside}[Beispiel: Bildbeschreibung daneben, mittig]% + {Eine Bildbeschreibung weder über noch unter der Abbildung, + sondern mittig daneben}[i][\linewidth] + \fbox{\parbox[b][5\baselineskip][c]{.25\textwidth}{% + \hspace*{\fill}\KOMAScript\hspace*{\fill}\par}} + \end{captionbeside} + \label{fig:maincls.captionbesidecentered} + \end{figure} + + Demgegenüber kann die Ausrichtung oben, die bei + \autoref{fig:maincls.captionbesidetop} zu sehen ist, durchaus verwendet + werden. Zur Verdeutlichung, wie man \Macro{raisebox} zur Verschiebung der + Grundlinie nutzen kann, sei hier ein komplettes Beispiel angegeben. Eine + solche Verschiebung kann man nicht nur bei einer Ersatzgrafik wie zuvor + angegeben, sondern auch beispielsweise auf \Macro{includegraphics} (siehe + \cite{package:graphics}) anwenden: +\begin{lstcode} + \documentclass[captions=topbeside]{scrbook} + \usepackage[ngerman]{babel} + \usepackage{graphics} + \begin{document} + \chapter{Ein Beispiel} + \begin{figure} + \begin{captionbeside}% + [Beispiel: Bildbeschreibung daneben, oben]% + {Eine Bildbeschreibung oben, neben einem + Beispielbild aus Paket \texttt{mwe}}% + [i][\linewidth][% + \dimexpr\marginparwidth+\marginparsep\relax + ]* + \raisebox{% + \dimexpr\baselineskip-\totalheight\relax + }{% + \includegraphics{example-image-1x1}% + }% + \end{captionbeside} + \label{fig:maincls.captionbesidetop} + \end{figure} + \end{document} +\end{lstcode} + \begin{figure} + \KOMAoption{captions}{topbeside} + \begin{captionbeside}[Beispiel: Bildbeschreibung daneben, oben]% + {Eine Bildbeschreibung weder über noch unter der Abbildung, + sondern oben daneben}[i][\linewidth] + \raisebox{\dimexpr\baselineskip-\totalheight}{% + \fbox{% + \parbox[b][5\baselineskip][c]{.25\textwidth}{% + \hspace*{\fill}\KOMAScript\hspace*{\fill}\par}}% + }% + \end{captionbeside} + \label{fig:maincls.captionbesidetop} + \end{figure} +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \begin{Environment}{captionofbeside} + \Parameter{Objekttyp} + \OParameter{Verzeichnistitel} + \Parameter{Titel} + \OParameter{Anordnung} + \OParameter{Breite} + \OParameter{Offset} + \begin{Body}\BodyDots\end{Body} + \end{Environment} + \labelsuffix[*] + \begin{Environment}{captionofbeside} + \Parameter{Objekttyp} + \OParameter{Verzeichnistitel} + \Parameter{Titel} + \OParameter{Anordnung} + \OParameter{Breite} + \OParameter{Offset}\PValue{*} + \begin{Body}\BodyDots\end{Body} + \end{Environment} +\end{Declaration} +Wie\ChangedAt{v3.10}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} zu \DescRef{\LabelBase.cmd.caption} mit +\DescRef{\LabelBase.cmd.captionof} eine Variante existiert, bei der der +\PName{Objekttyp} nicht durch die Verwendung innerhalb einer Gleitumgebung +dieses Typs bestimmt wird, so gibt es passend zur Umgebung +\DescRef{\LabelBase.env.captionbeside} mit \Environment{captionofbeside} auch +eine entsprechende Umgebung. Im Unterschied zu +\DescRef{\LabelBase.env.captionbeside} ist auch hier der \PName{Objekttyp} als +zusätzliches, erstes Argument anzugeben.% +% +\EndIndexGroup + +\begin{Declaration} + \FloatStyle{komaabove} + \FloatStyle{komabelow} +\end{Declaration}% +Bei\OnlyAt{\Package{float}} Verwendung des +\Package{float}-Pakets\IndexPackage{float} wird das Aussehen der damit +definierten Gleitumgebungen allein vom \emph{float}-Stil bestimmt. Dies +schließt auch die Frage ein, ob mit Überschriften oder Unterschriften +gearbeitet wird. Im \Package{float}-Paket gibt es keinen vordefinierten Stil, +der im Aussehen dem von \KOMAScript{} entspricht und dieselben +Einstellmöglichkeiten (siehe unten) bietet. \KOMAScript{} definiert deshalb +zusätzlich die beiden Stile \PValue{komaabove} und \PValue{komabelow}. Diese +können bei Verwendung des \Package{float}-Pakets wie die dort definierten +Stile \PValue{plain}\IndexFloatstyle{plain}, +\PValue{boxed}\IndexFloatstyle{boxed} oder +\PValue{ruled}\IndexFloatstyle{ruled} aktiviert werden. Siehe dazu +\cite{package:float}. Beim Stil \PValue{komaabove} werden \DescRef{\LabelBase.cmd.caption}, +\DescRef{\LabelBase.cmd.captionabove} und \DescRef{\LabelBase.cmd.captionbelow} als Überschrift, beim Stil +\PValue{komabelow} als Unterschrift gesetzt.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{captionformat} +\end{Declaration}% +Bei {\KOMAScript} gibt es verschiedene Eingriffsmöglichkeiten, um die +Formatierung der Beschreibung zu ändern. Die Änderung der Schriftart +wurde bereits erläutert. Das oder die Trennzeichen zwischen dem Label +und dem eigentlichen Beschreibungstext sind im Makro +\Macro{captionformat} abgelegt. Abweichend von allen anderen +\Macro{\dots}format-Anweisungen ist hier also nicht der Zähler, +sondern nur die auf den Zähler folgenden Angaben enthalten. Die +Originaldefinition lautet: +\begin{lstcode} + \newcommand*{\captionformat}{:\ } +\end{lstcode} +Auch diese kann mit \Macro{renewcommand} geändert werden. +\begin{Example} + Aus mir unerfindlichen Gründen wollen Sie als Trennzeichen + keinen Doppelpunkt, gefolgt von einem Leerzeichen, sondern einen + Gedankenstrich einschließlich der notwendigen Leerzeichen. + Daher definieren Sie: +\begin{lstcode} + \renewcommand*{\captionformat}{~--~} +\end{lstcode} + Diese Definition sollten Sie beispielsweise in die Präambel Ihres + Dokuments stellen. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{figureformat} + \Macro{tableformat} +\end{Declaration}% +Es wurde schon darauf hingewiesen, dass \DescRef{\LabelBase.cmd.captionformat} +keine Formatierung für das Label selbst enthält. Dieses sollte nun keineswegs +über Umdefinierung der Anweisungen für die Zählerausgabe, \Macro{thefigure} +oder \Macro{thetable}, verändert werden. Eine solche Umdefinierung hätte +nämlich auch Auswirkungen auf die Ausgabe von \Macro{ref} oder der +Verzeichnisse. Stattdessen bietet {\KOMAScript} auch hier zwei \Macro{\dots + format}-Anweisungen. Diese sind wie folgt vordefiniert: +% Umbruchkorrektur: listings +\begin{lstcode} + \newcommand*{\figureformat}{\figurename~\thefigure\autodot} + \newcommand*{\tableformat}{\tablename~\thetable\autodot} +\end{lstcode} +Sie können ebenfalls mit \Macro{renewcommand} eigenen Anforderungen +angepasst werden. +\begin{Example} + Hin und wieder wird gewünscht, dass die Beschreibungstexte ganz ohne + Label und natürlich auch ohne Trennzeichen ausgegeben werden. Bei + {\KOMAScript} genügen folgende Definitionen, um dies zu erreichen: +\begin{lstcode} + \renewcommand*{\figureformat}{} + \renewcommand*{\tableformat}{} + \renewcommand*{\captionformat}{} +\end{lstcode} + Dabei ist jedoch zu beachten, dass die Nummerierung damit zwar nicht + ausgegeben, aber dennoch fortgezählt wird. Dies ist insbesondere dann + von Bedeutung, wenn die Umdefinierungen nur auf einzelne + \Environment{figure}- oder \Environment{table}-Umgebungen angewendet + werden. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setcapindent}\Parameter{Einzug} + \Macro{setcapindent*}\Parameter{XEinzug} + \Macro{setcaphanging} +\end{Declaration}% +Wie bereits erwähnt wurde, werden in den +Standardklassen\textnote{\KOMAScript{} vs. Standardklassen} die +Beschreibungen nicht hängend gesetzt. Das heißt: In mehrzeiligen +Beschreibungen beginnt die zweite Zeile direkt unter dem Labeltext. +Es gibt bei den Standardklassen auch keinen Mechanismus, dies direkt +zu beeinflussen. Bei {\KOMAScript} werden hingegen alle Zeilen ab der +zweiten so weit eingerückt, dass diese nicht mehr unter dem Label, +»Abbildung~\dots:« oder »Tabelle~\dots:«, sondern unter dem +eigentlichen Text der ersten Zeile beginnen. + +Dieses Verhalten, das der Verwendung von \Macro{setcaphanging} +entspricht, kann bei {\KOMAScript} jederzeit durch Verwendung der Anweisung +\Macro{setcapindent} oder \Macro{setcapindent*} geändert werden. Dabei gibt +der Parameter \PName{Einzug} an, wie weit ab der zweiten Zeile eingerückt +werden soll. Soll nach dem Label und vor dem Beschreibungstext noch ein +Zeilenumbruch erfolgen, so definieren Sie die Einrücktiefe \PName{XEinzug} der +Beschreibung stattdessen mit der Sternvariante der Anweisung: +\Macro{setcapindent*}. +Mit einem negativen \PName{Einzug} erreicht man hingegen, dass vor der +Beschreibung ebenfalls ein Umbruch erfolgt und nur die erste Zeile der +Beschreibung, nicht jedoch die folgenden, um den Betrag von \PName{Einzug} +eingerückt werden. + +Ob einzeilige Beschreibungen wie mehrzeilige Beschreibungen gesetzt werden +oder eine Sonderbehandlung erfahren, wird über die Option +\DescRef{\LabelBase.option.captions} gewählt. Siehe hierzu die Erklärung zu +den Werten \PValue{oneline} und \PValue{nooneline} dieser Option auf +\DescPageRef{\LabelBase.option.captions.oneline}. + +\begin{Example} + Die Abbildungen~\ref{fig:maincls.caption.first} bis + \ref{fig:maincls.caption.last} zeigen die Auswirkungen unterschiedlicher + Einstellungen. Dabei wird deutlich, dass bei geringer Spaltenbreite der + komplett hängende Einzug unvorteilhaft ist. Der Quelltext der zweiten + Abbildung sei hier mit abgewandelter Unterschrift beispielhaft + wiedergegeben: +\begin{lstcode} + \begin{figure} + \setcapindent{1em} + \fbox{\parbox{.95\linewidth}{% + \centering\KOMAScript}} + \caption{Beispiel mit teilweise hängendem Einzug + ab der zweiten Zeile} + \end{figure} +\end{lstcode} + Wie zu sehen ist, kann die Formatierung also auch lokal innerhalb + der \Environment{figure}-Umgebung\IndexEnv{figure} geändert werden. Die + Änderung gilt dann nur für die eine Abbildung. Nachfolgende Abbildungen + werden wieder mit den Grundeinstellungen oder den globalen Einstellungen, + die Sie beispielsweise in der Dokumentpräambel vorgenommen haben, + gesetzt. Das gilt für Tabellen natürlich genauso. + \begin{figure} + \typeout{^^J--- Ignore underfull and overfull \string\hbox:} + \addtokomafont{caption}{\small} + \addtokomafont{captionlabel}{\bfseries} + \centering% + \begin{minipage}{.92\linewidth} + \begin{minipage}[t]{.48\linewidth}\sloppy + \fbox{\parbox{.95\linewidth}{\centering{\KOMAScript}}} + \caption[Beispiel: Bildunterschrift mit Voreinstellung]% + {Mit der Stan\-dard\-ein\-stel\-lung, also wie bei + Verwendung von \Macro{setcaphanging}} + \label{fig:maincls.caption.first} + \end{minipage} + \hspace{.02\linewidth} + \begin{minipage}[t]{.48\linewidth}\sloppy + \setcapindent{1em} + \fbox{\parbox{.95\linewidth}{\centering{\KOMAScript}}} + \caption[Beispiel: Bildunterschrift mit teilweise hängendem Einzug]% + {Mit teilweise häng"-endem Einzug ab der zweiten Zeile durch + Verwendung von \Macro{setcapindent}\PParameter{1em}} + \end{minipage} + \end{minipage} + + \vspace*{2ex}\noindent% + \begin{minipage}{.9\linewidth} + \begin{minipage}[t]{.48\linewidth}\sloppy + \setcapindent*{1em} + \fbox{\parbox{.95\linewidth}{\centering{\KOMAScript}}} + \caption[Beispiel: Bildunterschrift mit hängendem Einzug und Umbruch]% + {Mit hängendem Einzug ab der zweiten Zeile und Umbruch vor + der Beschreibung durch Verwendung von + \Macro{setcapindent*}\PParameter{1em}} + \end{minipage} + \hspace{.02\linewidth} + \begin{minipage}[t]{.48\linewidth}\sloppy + \setcapindent{-1em} + \fbox{\parbox{.95\linewidth}{\centering{\KOMAScript}}} + \caption[Beispiel: Bildunterschrift mit Einzug in der zweiten Zeile]% + {Mit Einzug lediglich in der zweiten Zeile und einem Umbruch + vor der Beschreibung durch Verwendung von + \Macro{setcapindent}\PParameter{-1em}} + \label{fig:maincls.caption.last} + \end{minipage} + \end{minipage} + \typeout{^^J--- Don't ignore underfull and overfull + \string\hbox:^^J} + \end{figure} +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setcapwidth}\OParameter{Ausrichtung}\Parameter{Breite} + \Macro{setcapdynwidth}\OParameter{Ausrichtung}\Parameter{Breite} + \Macro{setcapmargin}\OParameter{Rand \kern-.25em links}\Parameter{Rand} + \Macro{setcapmargin*}\OParameter{Rand \kern-.25em innen}\Parameter{Rand} +\end{Declaration} +Mit \ChangedAt{v2.8q}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Hilfe dieser drei Befehle kann die Breite und Anordnung +der Beschreibung beeinflusst werden. Normalerweise steht die gesamte Text- +oder Spaltenbreite für den Text der Beschreibung zur Verfügung. + +Mit\important{\Macro{setcapwidth}} der Anweisung \Macro{setcapwidth} kann +diese \PName{Breite} reduziert werden. Dabei gibt das obligatorische Argument +die maximale für die Beschreibung verwendete \PName{Breite} an. Als optionales +Argument kann genau ein Buchstabe übergeben werden, der die horizontale +Ausrichtung der Beschreibung angibt. Die möglichen Ausrichtungen finden Sie in +der folgenden Liste. +\begin{labeling}[~--]{\quad\PValue{o}}% + \itemsep=.5\topsep plus .5\topsep minus .5\topsep + \rightskip=1em +\item[\quad\PValue{l}] linksbündig +\item[\quad\PValue{c}] zentriert +\item[\quad\PValue{r}] rechtsbündig +\item[\quad\PValue{i}] innen: auf rechten Seiten linksbündig, auf + linken Seiten rechtsbündig +\item[\quad\PValue{o}] außen: auf rechten Seiten rechtsbündig, auf + linken Seiten linksbündig +\end{labeling} +Die Ausrichtung innen und außen entspricht im einseitigen Satz linksbündig und +rechtsbündig. Innerhalb\textnote{Achtung!} von +\Package{longtable}\IndexPackage{longtable}-Tabellen% +\important{\Package{longtable}} funktioniert die Ausrichtung innen und außen +nicht korrekt. Insbesondere werden Beschreibungen von Folgeseiten bei diesen +Tabellen immer nach den Beschreibungen der ersten Teiltabelle +ausgerichtet. Dies ist ein konzeptionelles Problem des Pakets +\Package{longtable}. + +Zu\ChangedAt{v3.20}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}\textnote{Achtung!} beachten ist, dass die an +\Macro{setcapwidth} übergebene \PName{Breite} wie bei \Macro{setlength} zum +Zeitpunkt der Zuweisung ausgewertet +wird. Will\important{\Macro{setcapdynwidth}} man hingegen, dass \PName{Breite} +erst bei der Verwendung ausgewertet wird, dann sollte man stattdessen +\Macro{setcapdynwidth} verwenden. Entscheidende Unterschiede gibt es +beispielsweise, wenn Längen wie \Length{linewidth} oder andere Anweisungen als +Argument verwendet werden. + +Mit\important{\Macro{setcapmargin}} der Anweisung \Macro{setcapmargin} kann +statt der Breite der Beschreibung ein \PName{Rand} angegeben werden, der neben +der Beschreibung zusätzlich zum normalen Textrand eingehalten werden soll. +Sollen der Rand rechts und links nicht identisch gewählt werden, kann mit dem +optionalen Argument ein von \PName{Rand} abweichender \PName{Rand \kern-.25em + links} von der Beschreibung eingestellt +werden. Bei\important{\Macro{setcapmargin*}} der Sternvariante +\Macro{setcapmargin*} wird statt \PName{Rand \kern-.25em links} im +doppelseitigen Satz \PName{Rand \kern-.25em innen} abweichend definiert. +Hier\textnote{Achtung!} ergibt sich bei +\Package{longtable}\IndexPackage{longtable}-Tabellen% +\important{\Package{longtable}} das gleiche Problem wie bei der Ausrichtung +außen oder innen bei der Anweisung \Macro{setcapwidth}. Die Verwendung von +\Macro{setcapmargin} oder \Macro{setcapmargin*} aktiviert außerdem +\OptionValueRef{\LabelBase}{captions}{nooneline} (siehe +\DescPageRef{\LabelBase.option.captions.nooneline}) für die Beschreibungen, +die mit dieser Randeinstellung gesetzt werden. + +Man\textnote{Tipp!} kann übrigens auch negative Werte für \PName{Rand} und +\PName{Rand \kern-.25em rechts} oder \PName{Rand \kern-.25em außen} +angeben. Dadurch erreicht man, dass die Beschreibung in den entsprechenden +Rand hineinragt.% +\iffalse\par% Anhang wurde entfernt. +Für\textnote{Tipp!} Experten und versierte Anwender ist eine etwas +trickreiche Anwendung für \Macro{setcapwidth} in +\iffree{\cite{book:komascript}}{\autoref{cha:floattricks}, + \autopageref{cha:floattricks}} zu finden.% +\fi% +% +\EndIndexGroup + +\begin{Declaration} + \Macro{setcaptionalignment}\OParameter{Gleitumgebung}\Parameter{Ausrichtung} +\end{Declaration} +Normalerweise\ChangedAt{v3.25}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} werden mehrzeilige\textnote{Ausrichtung mehrzeiliger + Beschreibungen} Beschreibungen im Blocksatz gesetzt. Dies entspricht +\Macro{setcaptionalignment}\PParameter{j}. Manchmal wird allerdings eine davon +abweichende Ausrichtung gewünscht, beispielsweise linksbündiger +Flattersatz. Eine entsprechende Änderung ist mit \Macro{setcaptionalignment} +jederzeit möglich. Für \PName{Ausrichtung} kann dabei genau einer der +Buchstaben aus \autoref{tab:maincls.captionalignment} angegeben werden. Wird +eine unbekannte \PName{Ausrichtung} angegeben, so resultiert dies in einer +Fehlermeldung. +% +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside} + [{Ausrichtungen für mehrzeilige Beschreibungen von Gleitumgebungen}] + {\label{tab:maincls.captionalignment}% + Ausrichtungen für mehrzeilige Beschreibungen von Gleitumgebungen} + [l] + \begin{tabular}[t]{ll} + \toprule + c & zentriert \\ + j & Blocksatz \\ + l & linksbündig \\ + r & rechtsbündig \\ + C & zentriert mit \Package{ragged2e} \\ + J & Blocksatz mit \Package{ragged2e} \\ + L & linksbündig mit \Package{ragged2e} \\ + R & rechtsbündig mit \Package{ragged2e} \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} + +Die vier Möglichkeiten mit Paket +\Package{ragged2e}\important{\Package{ragged2e}}\IndexPackage{ragged2e} stehen +nur zur Verfügung, wenn das Paket vor Verwendung von +\Macro{setcaptionalignment} geladen wurde. Anderenfalls werden sie auf die +entsprechenden Möglichkeiten ohne \Package{ragged2e} abgebildet. Zur +Sicherheit wird in diesem Fall eine Warnung ausgegeben. + +Verwendet man den Befehl ohne\textnote{kein optionaler Parameter} den +optionalen Parameter, so hängt das Ergebnis davon ab, ob der Aufruf innerhalb +oder außerhalb einer Gleitumgebung stattfindet. Innerhalb einer Gleitumgebung +wird dann die Ausrichtung für diese Gleitumgebung gesetzt. Außerhalb wird +hingegen ein leerer optionaler Parameter angenommen. + +Beim Aufruf mit einem leeren\textnote{leerer optionaler Parameter} optionalen +Parameter oder außerhalb einer Gleitumgebung auch komplett ohne optionalen +Parameter wird die allgemeine Ausrichtung festgelegt. Diese wird immer dann +verwendet, wenn keine Ausrichtung für den aktuellen Gleitumgebungstyp +definiert ist. + +Will man nur die Ausrichtung eines bestimmen Typs\textnote{mit + \PName{Gleitumgebung}} von Gleitumgebungen festlegen, ohne +\PName{Ausrichtung} auch für andere Arten von Gleitumgebungen zu verändern, so +gibt man den Typ der Gleitumgebung, beispielsweise \PValue{figure} oder +\PValue{table}, als optionalen Parameter \PName{Gleitumgebung} an. +% +\begin{Example} + Sie wollen, dass Bildunterschriften auch dann vollständig zentriert unter + den Bildern stehen, wenn sie mehrzeilig sind. Um das zunächst einmal nur für + eine einzige Abbildung zu testen, verwenden Sie\textnote{in der + Gleitumgebung}: +\begin{lstcode} + \begin{figure} + \centering + \setcaptionalignment{c} + \includegraphics{example-image} + \caption{\blindtext} + \end{figure} +\end{lstcode} + Da Sie mit dem Ergebnis zufrieden sind, verschieben Sie die + Anweisung\textnote{in der Dokumentpräambel} +\begin{lstcode} + \setcaptionalignment{c} +\end{lstcode} + in die Dokumentpräambel. Daraufhin bemerken Sie allerdings, dass Ihnen + diese Änderung für Tabellenüberschriften überhaupt nicht gefällt. Daher + beschränken Sie mit\textnote{nur für Abbildungen} +\begin{lstcode} + \setcaptionalignment[figure]{c} +\end{lstcode} + die Zentrierung auf Abbildungen. + + Etwas später stellen Sie fest, dass die Zentrierung doch nicht so günstig + ist. Stattdessen wollen Sie nun lieber eine linksbündige Ausrichtung im + Flattersatz haben. Also ändern Sie die Anweisung erneut zu: +\begin{lstcode} + \setcaptionalignment[figure]{l} +\end{lstcode} + Allerdings gefällt Ihnen nun nicht, dass die Zeilen sehr unterschiedlich + lang werden. Als Ursache machen Sie die fehlende Trennung aus, wodurch lange + Wörter komplett in die nächste Zeile rutschen und so große Lücken + hinterlassen. Also wollen Sie zusätzlich Trennung nach Bedarf + ermöglichen. Dies ist mit Hilfe des Pakets + \Package{ragged2e}\important{\Package{ragged2e}}\IndexPackage{ragged2e} + leicht möglich. Dabei genügt es allerdings nicht, das Paket mit +\begin{lstcode} + \usepackage{ragged2e} +\end{lstcode} + zu laden. Auch Option \Option{newcommands} beim Laden des Pakets bringt + keine Abhilfe. Stattdessen muss zusätzlich die \PName{Ausrichtung} geändert + werden: +\begin{lstcode} + \usepackage{ragged2e} + \setcaptionalignment[figure]{L} +\end{lstcode} + Beachten\textnote{Achtung!} Sie den Großbuchstabe für \PName{Ausrichtung}. +\end{Example} +\EndIndexGroup + + +\begin{Declaration} + \Option{origlongtable} +\end{Declaration}% +\BeginIndex{Package}{longtable}% +Falls die Tabellenüberschriften des \Package{longtable}-Pakets (siehe +\cite{package:longtable}) von den \KOMAScript-Klassen nicht umdefiniert werden +sollen, kann die Option \Option{origlongtable} gesetzt werden. Diese +Option\textnote{Achtung!} ist als optionales Argument von +\DescRef{\LabelBase.cmd.documentclass} zu verwenden. Eine Einstellung per +\DescRef{\LabelBase.cmd.KOMAoptions} oder \DescRef{\LabelBase.cmd.KOMAoption} +wird nicht unterstützt. +% +\EndIndexGroup +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{listof}{Einstellung} +\end{Declaration} +Normalerweise\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} werden Verzeichnisse von Gleitumgebungen --~wie das +Tabellen"~\Index{Tabellen>Verzeichnis} und das +Abbildungsverzeichnis\Index{Abbildungen>Verzeichnis}~-- nicht nummeriert oder +in das Inhaltsverzeichnis aufgenommen. In \autoref{sec:\LabelBase.toc} wurde +dies bereits näher ausgeführt. Alternativ zu den dort erwähnten Einstellungen +\OptionValueRef{\LabelBase}{toc}{nolistof}% +\IndexOption{toc~=\textKValue{nolistof}}, +\OptionValueRef{\LabelBase}{toc}{listof}\IndexOption{toc~=\textKValue{listof}} +und \OptionValueRef{\LabelBase}{toc}{listofnumbered}% +\IndexOption{toc~=\textKValue{listofnumbered}}, kann dieses Verhalten auch aus +Sicht der Verzeichnisse selbst gesehen werden. Daher kann man die gleichen +Ergebnisse auch mit den Einstellungen \OptionValue{listof}{notoc}, +\OptionValue{listof}{totoc} und \OptionValue{listof}{numbered} erreichen. + +Dabei werden in der Voreinstellung für die Überschriften der Verzeichnisse die +oberste verfügbare Gliederungsebene unterhalb von +\DescRef{\LabelBase.cmd.part} verwendet. Bei \Class{scrbook} und +\Class{scrreprt} ist das die Kapitelebene, bei \Class{scrartcl} die +Abschnittsebene. Mit\important{\OptionValue{listof}{leveldown}}% +\ChangedAt{v3.06}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} +Hilfe der Einstellung \OptionValue{listof}{leveldown} kann hingegen die nächst +tiefere Gliederungsebene verwendet +werden. \important{\OptionValue{listof}{standardlevel}}% +\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}% +\OptionValue{listof}{standardlevel} schaltet bei Bedarf wieder zurück auf die +voreingestellte Gliederungsebene. +\begin{Example} + Sie wollen in einem Buch das Abbildungs- und das Tabellenverzeichnis als + Unterverzeichnisse eines gemeinsamen Verzeichnisses »Abbildungen und + Tabellen« setzen. Dazu verwenden Sie einfach: +\begin{lstcode} + \KOMAoption{listof}{leveldown} +\end{lstcode} + und dann an entsprechender Stelle Ihres Dokuments: +\begin{lstcode} + \addchap*{Abbildungs- und Tabellenverzeichnis} + \listoffigures + \listoftables +\end{lstcode} + Näheres zur Anweisung \DescRef{\LabelBase.cmd.addchap*} ist + \autoref{sec:\LabelBase.structure}, \DescPageRef{\LabelBase.cmd.addchap*} zu + entnehmen. +\end{Example} + +Normalerweise\ChangedAt{v2.8q}{% + \Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} werden die +Verzeichnisse\Index{Abbildungen>Verzeichnis}\Index{Tabellen>Verzeichnis} +der Gleitumgebungen so formatiert, dass für die Nummer ein Raum fester Breite +verwendet wird. Gleichzeitig werden alle Einträge leicht eingezogen. Dies +entspricht der Verwendung der Einstellung +\OptionValue{listof}{graduated}\IndexOption{listof~=\textKValue{graduated}}. + +Werden die Nummern sehr breit, weil beispielsweise sehr viele Tabellen +verwendet werden, so reicht der vorgesehene Platz irgendwann nicht mehr aus. +Vergleichbar\important{\OptionValue{listof}{flat}} zur Einstellung +\OptionValueRef{\LabelBase}{toc}{flat}\IndexOption{toc~=\textKValue{flat}} für das +Inhaltsverzeichnis bietet \KOMAScript{} daher die Einstellung +\OptionValue{listof}{flat}\IndexOption{listof~=\textKValue{flat}} für die +Verzeichnisse der Gleitumgebungen. Dabei wird die Breite der Nummern +automatisch ermittelt und der Platz entsprechend angepasst. Bezüglich der +Nebenwirkungen und Funktionsweise gilt, was in \autoref{sec:\LabelBase.toc}, +\DescPageRef{\LabelBase.option.toc.flat} für die Einstellung +\OptionValueRef{\LabelBase}{toc}{flat} erklärt wurde. Es sei an dieser Stelle +jedoch nochmals darauf hingewiesen, dass mit der Einstellung +\OptionValue{listof}{flat} mehrere \LaTeX-Durchläufe benötigt werden, bis die +Verzeichnisse ihre endgültige Form erhalten haben. + +Die Einstellung \OptionValue{listof}{flat} wird automatisch aktiviert, falls +die Einstellung +\OptionValue{listof}{entryprefix}\ChangedAt{v3.06}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} verwendet +wird. Normalerweise\important{\OptionValue{listof}{entryprefix}} ist es nicht +sinnvoll jeden Eintrag in eines der Verzeichnisse der Gleitumgebungen mit +einem Präfix wie »Abbildung« oder »Tabelle« zu versenden, da natürlich im +Abbildungsverzeichnis nur Abbildungen und im Tabellenverzeichnis nur Tabellen +zu finden sind. Damit hat ein solcher Präfix keinen zusätzlichen +Informationswert und wird in der Voreinstellung auch weggelassen. Mit der +Einstellung \OptionValue{listof}{entryprefix} wird ein solcher Präfix jedoch +gesetzt. Dabei erhalten alle Einträge eines Verzeichnisses denselben +Präfix. Dieser richtet sich nach dem Dateianhang der Hilfsdatei, die für das +Verzeichnis verwendet wird. Für das Abbildungsverzeichnis, das den Dateianhang +»\File{lof}« besitzt, wird beispielsweise \Macro{listoflofentryname} verwendet, +während für das Tabellenverzeichnis, das den Dateianhang »\File{lot}« besitzt, +\Macro{listoflotentryname} verwendet wird. + +Bei den Klassen \Class{scrbook} und +\Class{scrreprt}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} fügt +\KOMAScript{} in der Voreinstellung bei jedem Kapitelanfang einen vertikalen +Abstand in die Verzeichnisse der Gleitumgebungen ein. Dieses Verhalten, das es +auch bei den Standardklassen gibt, dient dazu, diese Verzeichnisse nach +Kapiteln zu gruppieren. Es entspricht bei \KOMAScript{} der +Einstellung\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} \OptionValue{listof}{chaptergapsmall}% +\LabelOptionValue{listof}{chaptergapsmall}% +\important{\OptionValue{listof}{chaptergapsmall}}% +\IndexOption{listof~=\textKValue{chaptergapsmall}}. Dabei wird ein fester +vertikaler Abstand von 10\Unit{pt} +verwendet. Mit\important{\OptionValue{listof}{chaptergapline}} der Einstellung +\OptionValue{listof}{chaptergapline}% +\IndexOption{listof~=\textKValue{chaptergapline}} kann man stattdessen einen +vertikalen Abstand von einer Zeile +erreichen. Mit\important{\OptionValue{listof}{nochaptergap}} +\OptionValue{listof}{nochaptergap}\IndexOption{listof~=\textKValue{nochaptergap}} +kann man den vertikalen Abstand komplett +abschalten. Eine\important{\OptionValue{listof}{chapterentry}} Besonderheit +stellt die Einstellung +\OptionValue{listof}{chapterentry}\IndexOption{listof~=\textKValue{chapterentry}} +dar. Dabei wird statt des Abstandes der Inhaltsverzeichniseintrag für das +Kapitel in das Verzeichnis der Gleitumgebungen +eingefügt. Es\textnote{Achtung!} wird darauf hingewiesen, dass ein solcher +Eintrag auch dann erfolgt, wenn das Kapitel keine Gleitumgebung enthält. Eine +Lösung, bei der nur Kapitel mit Gleitumgebungen im jeweiligen Verzeichnis +angezeigt werden, finden Sie unter +\cite{https://komascript.de/comment/5070}. Eine noch direktere Beeinflussung, +was in den Verzeichnissen der Gleitumgebungen bei neuen Kapiteln geschehen +soll, ist mit der Option \DescRef{\LabelBase.option.chapteratlists} zu +erreichen, die in \autoref{sec:\LabelBase.structure} auf +\DescPageRef{\LabelBase.option.chapteratlists} erläutert wird. + +Einen Überblick über alle möglichen Werte für die \PName{Einstellung} von +\Option{listof} ist in \autoref{tab:maincls.listof} zu finden. + +\begin{desclist} + \desccaption[{Mögliche Werte für Option \Option{listof}}]{% + Mögliche Werte für Option \Option{listof} zur Einstellung von Form und + Inhalt der Verzeichnisse der Gleitumgebungen\label{tab:maincls.listof}% + }{% + Mögliche Werte für Option \Option{listof} (\emph{Fortsetzung})% + }% + \entry{\PValue{chapterentry}, \PValue{withchapterentry}}{% + Kapitelanfänge werden in den Verzeichnissen der Gleitumgebungen durch + einen Inhaltsverzeichniseintrag des Kapitels markiert.% + \IndexOption{listof~=\textKValue{chapterentry}}}% + \entry{\PValue{chaptergapline}, \PValue{onelinechaptergap}}{% + Kapitelanfänge werden in den Verzeichnissen der Gleitumgebungen durch + einen Abstand von einer Zeile markiert.% + \IndexOption{listof~=\textKValue{chaptergapline}}}% + \entry{\PValue{chaptergapsmall}, \PValue{smallchaptergap}}{% + Kapitelanfänge werden in den Verzeichnissen der Gleitumgebungen durch + einen kleinen Abstand markiert.% + \IndexOption{listof~=\textKValue{chaptergapsmall}}}% + \entry{\PValue{entryprefix}}{% + \ChangedAt{v3.06}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Jeder Verzeichniseintrag wird mit einem vom Verzeichnis abhängenden Präfix + vor der Nummer versehen. Der Präfix ist normalerweise sprachabhängig, + beispielsweise bei deutschen Spracheinstellungen »Abbildung« für das + Abbildungsverzeichnis und »Tabelle« für das Tabellenverzeichnis, jeweils + gefolgt von einem Leerzeichen.% + \IndexOption{listof~=\textKValue{entryprefix}}}% + \entry{\PValue{flat}, \PValue{left}}{% + Die Verzeichnisse der Gleitumgebungen erhalten eine tabellarische + Form. Die Gleitumgebungsnummern sind dabei die erste Spalte, der Titel die + zweite Spalte, die Seitenzahlen die dritte Spalte. Der Platz, der für die + Gleitumgebungsnummern reserviert wird, richtet sich nach dem benötigten + Platz des vorherigen \LaTeX-Laufs.% + \IndexOption{listof~=\textKValue{flat}}}% + \entry{\PValue{graduated}, \PValue{indent}, \PValue{indented}}{% + Die Verzeichnisse der Gleitumgebungen erhalten eine hierarchische Form. Es + steht nur ein begrenzter Platz für die Gleitumgebungsnummern zur + Verfügung.% + \IndexOption{listof~=\textKValue{graduated}}}% + \entry{\PValue{indenttextentries}, \PValue{indentunnumbered}, + \PValue{numberline}}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Die Eigenschaft \PValue{numberline} (siehe \autoref{sec:tocbasic.toc}, + \DescPageRef{tocbasic.cmd.setuptoc}) wird für die Verzeichnisse der + Gleitumgebungen, beispielsweise das Abbildungs"~ und das + Tabellenverzeichnis, gesetzt. Dadurch werden nicht nummerierte Einträge + linksbündig mit dem Text von nummerierten Einträgen gleicher Ebene + gesetzt. Allerdings bieten die \KOMAScript-Klassen selbst keine nicht + nummerierten Einträge in diese Verzeichnisse. Dies hat daher nur + Auswirkungen auf entsprechende Einträge, die nicht von den Klassen selbst, + aber dennoch mit Hilfe von \DescRef{tocbasic.cmd.addxcontentsline} (siehe + \autoref{sec:tocbasic.toc}, \DescPageRef{tocbasic.cmd.addxcontentsline}) + erzeugt werden.% + \IndexOption{toc~=\textKValue{numberline}}}% + \entry{\PValue{leftaligntextentries}, \PValue{leftalignunnumbered}, + \PValue{nonumberline}}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Die Eigenschaft \PValue{numberline} (siehe \autoref{sec:tocbasic.toc}, + \DescPageRef{tocbasic.cmd.setuptoc}) wird für die Verzeichnisse der + Gleitumgebungen, beispielsweise das Abbildungs"~ und das + Tabellenverzeichnis, gelöscht. Dadurch werden nicht nummerierte Einträge + linksbündig mit der Nummer von nummerierten Einträgen gleicher Ebene + gesetzt. Allerdings bieten die \KOMAScript-Klassen selbst keine nicht + nummerierten Einträge in diese Verzeichnisse. Dies hat daher nur + Auswirkungen auf entsprechende Einträge, die nicht von den Klassen selbst, + aber dennoch mit Hilfe von \DescRef{tocbasic.cmd.addxcontentsline} (siehe + \autoref{sec:tocbasic.toc}, \DescPageRef{tocbasic.cmd.addxcontentsline}) + erzeugt werden.% + \IndexOption{toc~=\textKValue{numberline}}}% + \entry{\PValue{leveldown}}{% + Die Verzeichnisse werden um eine Gliederungsebene nach unten verschoben.% + \IndexOption{listof~=\textKValue{leveldown}}}% + \entry{\PValue{nochaptergap}, \PValue{ignorechapter}}{% + Kapitelanfänge werden in den Verzeichnissen der Gleitumgebungen nicht + markiert.% + \IndexOption{listof~=\textKValue{nochaptergap}}}% + \entry{\PValue{notoc}, \PValue{nottotoc}, \PValue{plainheading}}{% + Die Verzeichnisse der Gleitumgebungen, beispielsweise das Abbildungs"~ und + das Tabellenverzeichnis, erhalten keinen Eintrag im Inhaltsverzeichnis.% + \IndexOption{listof~=\textKValue{nottotoc}}}% + \entry{\PValue{numbered}, \PValue{totocnumbered}, \PValue{tocnumbered}, + \PValue{numberedtoc}, \PValue{numberedtotoc}}{% + Die Verzeichnisse der Gleitumgebungen, beispielsweise das Abbildungs"~ und + das Tabellenverzeichnis, erhalten einen Eintrag im Inhaltsverzeichnis und + werden nummeriert.% + \IndexOption{listof~=\textKValue{numbered}}}% + \entry{\PValue{standardlevel}}{% + Die Verzeichnisse liegen auf der üblichen Gliederungsebene.% + \IndexOption{listof~=\textKValue{standardlevel}}}% + \entry{\PValue{toc}, \PValue{totoc}, \PValue{notnumbered}}{% + Die Verzeichnisse der Gleitumgebungen, beispielsweise das Abbildungs"~ und + das Tabellenverzeichnis, erhalten einen Eintrag im Inhaltsverzeichnis, + ohne dass sie nummeriert werden.% + \IndexOption{listof~=\textKValue{totoc}}}% +\end{desclist} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{listoftables} + \Macro{listoffigures} +\end{Declaration}% +Mit diesen Anweisungen kann ein Verzeichnis der Tabellen beziehungsweise der +Abbildungen ausgegeben werden. Änderungen, die Auswirkungen auf diese +Verzeichnisse haben, werden erst nach zwei \LaTeX{}-Läufen sichtbar. Die Form +der Verzeichnisse kann durch die Option +\DescRef{\LabelBase.option.listof}\important{\DescRef{\LabelBase.option.listof}} +mit den Werten \PValue{graduated} und \PValue{flat} beeinflusst werden (siehe +\DescPageRef{\LabelBase.option.listof}). Darüber hinaus wirken sich indirekt +die Werte \PValue{listof} und \PValue{listofnumbered} für die Option +\DescRef{\LabelBase.option.toc}\important{\DescRef{\LabelBase.option.toc}} +(siehe \autoref{sec:\LabelBase.toc}, \DescPageRef{\LabelBase.option.toc}), +sowie die Werte \PValue{totoc} und \PValue{numbered} der oben erläuterten +Option \DescRef{\LabelBase.option.listof} auf die Verzeichnisse aus. + +In\textnote{Tipp!} der Regel findet man die Verzeichnisse der +Gleitumgebungen\Index{Gleitumgebungen}, also das +\index{Tabellen>Verzeichnis}Tabellen- und das +Abbildungsverzeichnis\index{Abbildungen>Verzeichnis}, unmittelbar nach dem +Inhaltsverzeichnis. In einigen Dokumenten wandern diese auch in den +Anhang. Der Autor bevorzugt jedoch die Platzierung unmittelbar nach dem +Inhaltsverzeichnis.% +% +\EndIndexGroup + + +\LoadCommonFile{marginpar}% \section{Randnotizen} + + +\section{Anhang} +\seclabel{appendix} +\BeginIndexGroup +\BeginIndex{}{Anhang} + +Der Anhang eines Dokuments besteht im Wesentlichen aus den Anlagen zu einem +Dokument. Typische Teile eines Anhangs sind Literaturverzeichnis, +Stichwortverzeichnis und Begriffsverzeichnis. Alleine für diese Teile würde +man jedoch keinen Anhang beginnen, da diese Teile normalerweise schon von sich +aus eine Auszeichnung besitzen, die sie als Anhang erkennbar macht. Enthält +der Anhang aber weitere Teile wie beispielsweise zitierte Fremddokumente, +Endnoten oder Tafeln, so werden die zuvor genannten Teile ebenfalls im Anhang +gesetzt. + + +\begin{Declaration} + \Macro{appendix} +\end{Declaration}% +Der Anhang wird in den Standardklassen und den {\KOMAScript}-Klassen mit der +Anweisung \Macro{appendix} eingeleitet. Diese Anweisung schaltet unter anderem +die Kapitelnummerierung auf Großbuchstaben um und sorgt gleichzeitig dafür, +dass die Regeln für die Nummerierung der Gliederungsebenen nach \cite{DUDEN} +eingehalten werden. Diese Regeln sind in der Beschreibung der Option +\DescRef{\LabelBase.option.numbers} in \autoref{sec:\LabelBase.structure}, +\DescPageRef{\LabelBase.option.numbers} näher erläutert. + +Die Form der Kapitelüberschriften\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} +im Anhang wird durch die Optionen \DescRef{\LabelBase.option.chapterprefix}% +\important{\DescRef{\LabelBase.option.chapterprefix}\\ + \DescRef{\LabelBase.option.appendixprefix}} und +\DescRef{\LabelBase.option.appendixprefix} bestimmt. Näheres dazu ist +\autoref{sec:\LabelBase.structure}, +\DescPageRef{\LabelBase.option.appendixprefix} zu entnehmen. + +Bitte\textnote{Achtung!} beachten Sie, dass es sich bei \Macro{appendix} um +eine Anweisung und \emph{nicht} um eine Umgebung handelt! Die Anweisung +erwartet auch nicht etwa ein Argument. Die Kapitel beziehungsweise Abschnitte +des Anhangs werden ganz normal mit \DescRef{\LabelBase.cmd.chapter} und +\DescRef{\LabelBase.cmd.section} gesetzt.% +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Literaturverzeichnis} +\seclabel{bibliography} +\BeginIndexGroup +\BeginIndex{}{Literaturverzeichnis} + +Das Literaturverzeichnis erschließt externe Quellen. In der Regel wird das +Literaturverzeichnis mit Hilfe des Programms \BibTeX{} aus einer Datei mit +datenbankähnlicher Struktur erzeugt. Dabei kann über den \BibTeX-Stil sowohl +die Form der Einträge als auch deren Sortierung verändert werden. Wird +zusätzlich ein Literaturpaket, beispielsweise +\Package{natbib}\IndexPackage{natbib}, +\Package{babelbib}\IndexPackage{babelbib} oder +\Package{biblatex}\IndexPackage{biblatex} verwendet, so schwindet der Einfluss +von \KOMAScript{} auf das Literaturverzeichnis. In diesen Fällen ist unbedingt +die Anleitung des verwendeten Pakets zu beachten! Zur generellen Verwendung +eines Literaturverzeichnisses sei auf \cite{l2kurz} verwiesen. + + +\begin{Declaration} + \OptionVName{bibliography}{Einstellung} +\end{Declaration} +Als \PName{Einstellung}\ChangedAt{v3.00}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} kann zunächst einmal jeder definierte +Formatierungsstil gewählt werden. Vordefiniert sind bei \KOMAScript{} zwei +solche Formatierungsstile für das Literaturverzeichnis. Diese sind jedoch +nicht zu verwechseln mit den unterschiedlichen Stilen für +\BibTeX\Index{BibTeX=\BibTeX}, die man mit \Macro{bibstyle} auswählt. Während +\BibTeX{} sowohl die Art der Sortierung als auch den Inhalt des +Literaturverzeichnisses bestimmt, können über die Einstellungen von +\KOMAScript{} nur grundlegende Eigenschaften des Literaturverzeichnisses oder +einige wenige Eigenschaften der Formatierung der Einträge beeinflusst werden. + +Mit\important{\OptionValue{bibliography}{oldstyle}} +\OptionValue{bibliography}{oldstyle}% +\IndexOption{bibliography~=\textKValue{oldstyle}} wird die kompakte Formatierung +gewählt. Dabei führt die Anweisung +\DescRef{maincls-experts.cmd.newblock}\IndexCmd{newblock} in den einzelnen +Einträgen lediglich zu einem dehnbaren horizontalen Abstand. Der Name kommt +daher, dass dies die häufigste klassische Form eines Literaturverzeichnisses +ist. Demgegenüber\important{\OptionValue{bibliography}{openstyle}} erreicht +man die etwas modernere, offene Form mit der Einstellung +\OptionValue{bibliography}{openstyle}% +\IndexOption{bibliography~=\textKValue{openstyle}}. Der Name kommt daher, dass +hier die Anweisung \DescRef{maincls-experts.cmd.newblock} einen Absatz +einfügt. Die Einträge im Literaturverzeichnis werden so stärker +gegliedert. Sie sind weniger kompakt und deutlich aufgelockerter oder +geöffnet. Bezüglich der Möglichkeit, neue Formatierungsstile zu definieren, +sei auf \DescRef{maincls-experts.cmd.newbibstyle}, +\autoref{sec:maincls-experts.experts}, +\DescPageRef{maincls-experts.cmd.newbibstyle} verwiesen. + +Neben dem Formatierungsstil gibt es eine weitere Eigenschaft, die über +\PName{Einstellung} verändert werden kann. Das Literaturverzeichnis stellt +eine Art von Verzeichnis dar, bei der nicht der Inhalt des vorliegenden Werks +aufgelistet, sondern auf externe Inhalte verwiesen wird. Mit dieser Begründung +könnte man argumentieren, dass das Literaturverzeichnis ein eigenes Kapitel +bzw. einen eigenen Abschnitt darstellt und somit eine Nummer verdiene. Die +Einstellung \OptionValue{bibliography}{numbered}% +\important{\OptionValue{bibliography}{numbered}}% +\IndexOption{bibliography~=\textKValue{numbered}} führt genau dazu, +einschließlich des dann fälligen Eintrags im Inhaltsverzeichnis. Ich selbst +bin der Meinung, dass bei dieser Argumentation auch ein klassisches, +kommentiertes Quellenverzeichnis ein eigenes Kapitel wäre. Außerdem ist das +Literaturverzeichnis letztlich nichts, was man selbst geschrieben +hat. Deshalb\important{\OptionValue{bibliography}{totoc}} verdient es +allenfalls einen nicht nummerierten Eintrag im Inhaltsverzeichnis, was mit der +Einstellung +\OptionValue{bibliography}{totoc}\IndexOption{bibliography~=\textKValue{totoc}} +erreicht wird. Die Voreinstellung, bei der das Literaturverzeichnis als nicht +nummeriertes Kapitel ohne eigenen Inhaltsverzeichniseintrag gesetzt wird, +entspricht \OptionValue{bibliography}{nottotoc}% +\important{\OptionValue{bibliography}{nottotoc}}% +\IndexOption{bibliography~=\textKValue{nottotoc}}. Siehe hierzu auch Option +\DescRef{\LabelBase.option.toc} in \autoref{sec:\LabelBase.toc}, insbesondere +die Werte \PValue{bibliographynumbered}, \PValue{bibliography} und +\PValue{nobibliography} ab \DescPageRef{\LabelBase.option.toc.bibliography}. + +In\ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} +einigen Fällen wird nicht das gesamte Dokument mit einem einzigen +Literaturverzeichnis versehen, sondern jedes Kapitel eines mit \Class{scrbook} +oder \Class{scrreprt} gesetzten Dokuments erhält sein eigenes +Literaturverzeichnis. In diesem Fall ist es sinnvoll, +wenn\important{\OptionValue{bibliography}{leveldown}} das Literaturverzeichnis +selbst nicht auf Kapitel, sondern etwas tiefer auf Abschnittsebene angesiedelt +wird. Dies ist mit Option \OptionValue{bibliography}{leveldown}% +\IndexOption{bibliography~=\textKValue{leveldown}} zu erreichen. Diese kann +beispielsweise auch verwendet werden, wenn das Literaturverzeichnis zusammen +mit anderen Verzeichnissen unter einer gemeinsamen Überschrift erscheinen +soll. Daher ist diese Option auch in \Class{scrartcl} verfügbar. + +Eine Zusammenfassung möglicher Werte für \PName{Einstellung} ist +\autoref{tab:maincls.bibliography} zu entnehmen. Es ist jedoch zu beachten, +dass mit \DescRef{maincls-experts.cmd.newbibstyle}\IndexCmd{newbibstyle} +weitere Werte definiert werden können. + +\begin{table} + \caption[{Mögliche Werte für Option \Option{bibliography}}]{Vordefinierte + Werte für Option \Option{bibliography} zur Einstellung der Form des + Literatur\-verzeichnisses} + \label{tab:maincls.bibliography} + \begin{desctabular} + \pventry{leveldown}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Das Literaturverzeichnis wird um eine Gliederungsebene nach unten + verschoben.% + \IndexOption{bibliography~=\textKValue{leveldown}}}% + \entry{\PValue{notoc}, \PValue{nottotoc}, \PValue{plainheading}}{% + Das Literaturverzeichnis erhält keinen Eintrag im Inhaltsverzeichnis und + wird auch nicht nummeriert.% + \IndexOption{bibliography~=\textKValue{nottotoc}}}% + \entry{\PValue{numbered}, \PValue{tocnumbered}, \PValue{totocnumbered}, + \PValue{numberedtoc}, \PValue{numberedtotoc}}{% + Das Literaturverzeichnis erhält einen Eintrag im Inhaltsverzeichnis und + wird nummeriert.% + \IndexOption{bibliography~=\textKValue{numbered}}}% + \pventry{oldstyle}{% + Es wird die klassische, kompakte Formatierung gewählt, bei der + \DescRef{maincls-experts.cmd.newblock}\IndexCmd{newblock} nur einen + dehnbaren horizontalen Abstand darstellt.% + \IndexOption{bibliography~=\textKValue{oldstyle}}}% + \pventry{openstyle}{% + Es wird eine untergliederte, offene Formatierung gewählt, bei der + \DescRef{maincls-experts.cmd.newblock}\IndexCmd{newblock} einen Absatz + darstellt.% + \IndexOption{bibliography~=\textKValue{openstyle}}}% + \pventry{standardlevel}{% + \ChangedAt{v3.12}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Das Literaturverzeichnis liegt auf der üblichen Gliederungsebene.% + \IndexOption{bibliography~=\textKValue{standardlevel}}}% + \entry{\PValue{toc}, \PValue{totoc}, \PValue{notnumbered}}{% + Das Literaturverzeichnis erhält einen Eintrag im Inhaltsverzeichnis, + ohne dass es nummeriert wird.% + \IndexOption{bibliography~=\textKValue{totoc}}}% + \end{desctabular} +\end{table} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setbibpreamble}\Parameter{Präambel} +\end{Declaration}% +Mit der Anweisung \Macro{setbibpreamble} kann eine Präambel für das +Literaturverzeichnis gesetzt werden. Bedingung dafür ist, dass die Präambel +vor der Anweisung zum Setzen des Literaturverzeichnisses gesetzt wird. Dies +muss nicht unmittelbar davor sein. Es kann also beispielsweise am Anfang des +Dokuments erfolgen. Ebenso\textnote{Achtung!} wie Option +\OptionValueRef{\LabelBase}{bibliography}{totoc} oder +\OptionValueRef{\LabelBase}{bibliography}{numbered} kann die Anweisung aber nur +erfolgreich sein, wenn nicht ein Paket geladen wird, das dies durch +Umdefinierung der \Environment{thebibliography}-Umgebung verhindert. Obwohl +das \Package{natbib}-Paket\IndexPackage{natbib} nicht freigegebene interne +Makros von {\KOMAScript} verwendet, konnte erreicht werden, dass +\Macro{setbibpreamble} auch mit der aktuellen Version von \Package{natbib} +funktioniert (siehe \cite{package:natbib}). +\begin{Example} + Sie wollen darauf hinweisen, dass das Literaturverzeichnis nicht in + der Reihenfolge der Zitierung im Dokument, sondern alphabetisch + sortiert ist. Daher setzen Sie folgende Anweisung: +\begin{lstcode} + \setbibpreamble{Die Literaturangaben sind + alphabetisch nach den Namen der Autoren + sortiert. Bei mehreren Autoren wird nach dem + ersten Autor sortiert.\par\bigskip} +\end{lstcode} + Die Anweisung \Macro{bigskip}\IndexCmd{bigskip} sorgt dafür, dass + zwischen der Präambel und der ersten Literaturangabe ein großer + Zwischenraum gesetzt wird.% +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{BreakBibliography}\Parameter{Unterbrechung} +\end{Declaration} +Diese\textnote{Achtung!}\ChangedAt{v3.00}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} Anweisung existiert nur, wenn +Umgebung \Environment{thebibliography} nicht durch ein Paket neu definiert +wurde. In diesem Fall ist es möglich, mit dieser Anweisung das +Literaturverzeichnis zu unterbrechen. Die \PName{Unterbrechung} wird dann +innerhalb einer Gruppe ausgegeben. Eine solche \PName{Unterbrechung} könnte +beispielsweise eine Überschrift mit Hilfe von \DescRef{\LabelBase.cmd.minisec} +sein. Leider gibt es bisher keine Möglichkeit, diese Anweisung beispielsweise +mit Hilfe eines speziellen Eintrags in der Literaturdatenbank von \BibTeX{} +erzeugen zu lassen. Daher kann sie derzeit nur von Anwendern verwendet werden, +die das Literaturverzeichnis selbst editieren. Ihr Nutzen ist damit sehr +beschränkt.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AfterBibliographyPreamble}\Parameter{Anweisungen} + \Macro{AtEndBibliography}\Parameter{Anweisungen} +\end{Declaration} +In\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} +einigen Fällen ist es nützlich, wenn man nach der Präambel des +Literaturverzeichnisses oder unmittelbar vor dem Ende des +Literaturverzeichnisses noch \PName{Anweisungen} ausführen kann. Dies ist mit +Hilfe dieser beiden Anweisungen möglich. +\begin{Example} + Sie wollen, dass das Literaturverzeichnis nicht im Blocksatz, sondern im + linksbündigen Flattersatz ausgegeben wird. Dies ist einfach mit: +\begin{lstcode} + \AfterBibliographyPreamble{\raggedright} +\end{lstcode} + zu erreichen. Sie können diese Anweisung an beliebiger Stelle vor dem + Literaturverzeichnis verwenden. Es wird jedoch empfohlen, sie in die + Präambel des Dokuments oder ein eigenes Paket zu schreiben. +\end{Example} +Die\textnote{Achtung!} Realisierung dieser Anweisung bedarf bei Verwendung +eines Pakets, das die Umgebung für Literaturverzeichnisse umdefiniert, der +Zusammenarbeit mit dem entsprechenden Paket (siehe +\autoref{sec:maincls-experts.coexistence}, +\DescPageRef{maincls-experts.cmd.AfterBibliographyPreamble}).% +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Stichwortverzeichnis} +\seclabel{index} +\BeginIndexGroup + +Das Stichwortverzeichnis ist auch unter den Bezeichnungen Index oder Register +bekannt. Zur generellen Verwendung eines Stichwortverzeichnisses sei auf +\cite{l2kurz} sowie auf \cite{makeindex} und \cite{xindy} verwiesen. Wird ein +Paket verwendet, das selbst Anweisungen und Umgebungen für das +Stichwortverzeichnis zur Verfügung stellt, so schwindet eventuell der +Einfluss, den \KOMAScript{} auf dieses Verzeichnis hat. Dies gilt +beispielsweise bei Verwendung von \Package{index}\IndexPackage{index}, +nicht jedoch bei Verwendung von +\Package{splitidx}\IndexPackage{splitidx} (siehe +\cite{package:splitindex}). + + +\begin{Declaration} + \OptionVName{index}{Einstellung}% +\end{Declaration} +\ChangedAt{v3.00}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}}% +In der Voreinstellung +\OptionValue{index}{nottotoc}\IndexOption{index~=\textKValue{nottotoc}} ist das +Stichwortverzeichnis ein nicht nummeriertes Kapitel ohne Eintrag im +Inhaltsverzeichnis. Da\important{\OptionValue{index}{totoc}} das +Stichwortverzeichnis normalerweise in einem Buch oder ähnlichen Dokument +zuletzt steht, benötigt es eigentlich auch keinen +Inhaltsverzeichniseintrag. Wird dieser dennoch gewünscht, beispielsweise weil +wie in \iffree{dieser Anleitung}{diesem Buch} mit einem mehrgliedrigen +Stichwortverzeichnis gearbeitet wird, so kann dies mit der Einstellung +\OptionValue{index}{totoc}\IndexOption{index~=\textKValue{totoc}} erreicht +werden. Soll\ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}\important{\OptionValue{index}{numbered}} der Index +entgegen aller Gepflogenheiten sogar nummeriert werden, so verwendet man +Option \OptionValue{index}{numbered}. Siehe hierzu auch Option +\DescRef{\LabelBase.option.toc} mit dem Wert \PValue{index} oder +\PValue{indexnumbered} in \autoref{sec:\LabelBase.toc} ab +\DescPageRef{\LabelBase.option.toc.index}. + +Werden beispielsweise mit Hilfe von \Package{splitidx}\IndexPackage{splitidx} +(siehe \cite{package:splitindex}) mehrere Stichwortverzeichnisse erstellt, so +kann es sinnvoll sein, diese unter einer gemeinsamen Überschrift zusammen zu +fassen. Um dies zu ermöglichen, kann mit \OptionValue{index}{leveldown}% +\ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}\important{\OptionValue{index}{leveldown}} das Verzeichnis +eine Gliederungsebene tiefer als üblich angesiedelt werden. Bei +\Class{scrbook} und \Class{scrreprt} ist es dann also kein Kapitel mehr, +sondern ein Abschnitt, bei \Class{scrartcl} entsprechend ein +Unterabschnitt. Option \OptionValue{index}{standardlevel}% +\ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}\important{\OptionValue{index}{standardlevel}} ist das +Gegenstück dazu und hebt ein eventuell zuvor verwendetes +\OptionValue{index}{leveldown} wieder auf. + +Eine Zusammenfassung der möglichen Werte für die \PName{Einstellung} von +\Option{index} ist in \autoref{tab:maincls.index} zu finden. + +\begin{table} + \caption[{Mögliche Werte für Option \Option{index}}]{Mögliche Werte für + Option \Option{index} zur Einstellung des Stich\-wort\-verzeichnisses} + \label{tab:maincls.index} + \begin{desctabular} + \pventry{leveldown}{% + \ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Der Index wird um eine Gliederungsebene nach unten verschoben.% + \IndexOption{index~=\textKValue{leveldown}}% + }% + \entry{\PValue{notoc}, \PValue{nottotoc}, \PValue{plainheading}}{% + Das Stichwortverzeichnis erhält keinen Eintrag im Inhaltsverzeichnis.% + \IndexOption{index~=\textKValue{nottotoc}}}% + \entry{\PValue{numbered}, \PValue{tocnumbered}, \PValue{totocnumbered}, + \PValue{numberedtoc}, \PValue{numberedtotoc}}{% + \ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Das Stichwortverzeichnis erhält einen Eintrag im Inhaltsverzeichnis und + wird nummeriert.% + \IndexOption{index~=\textKValue{numbered}}}% + \pventry{standardlevel}{% + \ChangedAt{v3.18}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + Der Index liegt auf der üblichen Gliederungsebene.% + \IndexOption{index~=\textKValue{standardlevel}}% + }% + \entry{\PValue{toc}, \PValue{totoc}, \PValue{notnumbered}}{% + Das Stichwortverzeichnis erhält einen Eintrag im Inhaltsverzeichnis, + ohne dass er nummeriert wird.% + \IndexOption{index~=\textKValue{totoc}}}% + \end{desctabular} +\end{table} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setindexpreamble}\Parameter{Präambel} +\end{Declaration}% +Analog zur Präambel des Literaturverzeichnisses können Sie auch das +Stichwortverzeichnis mit einer Präambel versehen. Dies findet häufig +dann Anwendung, wenn es mehr als einen Index gibt oder im Index +unterschiedliche Arten der Referenzierung durch unterschiedliche +Hervorhebung der Seitenzahlen markiert werden. +\begin{Example} + Sie haben ein Dokument, in dem Begriffe sowohl definiert als auch + verwendet werden. Die Seitenzahlen der Begriffsdefinitionen sind + fett dargestellt. Natürlich möchten Sie gerne auf diesen Umstand + hinweisen. Also setzen Sie eine entsprechende Präambel für den + Index: +\begin{lstcode} + \setindexpreamble{Alle \textbf{fett} gedruckten + Seitenzahlen sind Referenzen auf die Definition + des jeweiligen Begriffs. Demgegenüber geben + normal gedruckte Seitenzahlen die Seiten der + Verwendung des jeweiligen Begriffs wieder.\par + \bigskip} +\end{lstcode} +\end{Example} + +Bitte\textnote{Achtung!} beachten Sie, dass für die erste Seite des Index der +Seitenstil umgeschaltet wird. Welcher Seitenstil hierbei Verwendung findet, +ist im Makro \DescRef{\LabelBase.cmd.indexpagestyle} abgelegt (siehe +\autoref{sec:\LabelBase.pagestyle}, +\DescPageRef{\LabelBase.cmd.indexpagestyle}). + +Für die Erstellung, Sortierung und Ausgabe des Stichwortverzeichnisses +sind die üblichen Standard-\LaTeX-Pakete und Zusatzprogramme +zuständig.% +\iftrue % Umbruchoptimierung + \iffree{}{ % + Besonders empfehlenswert ist beispielsweise das Paket + \Package{imakeidx}\IndexPackage{imakeidx} (siehe \cite{package:imakeidx}), + das unter anderem den Aufruf des Programms \File{makeindex} oder + \File{xindy} automatisiert. Damit entfällt eine häufige Fehlerquelle + insbesondere für \LaTeX-Anfänger.% + } + Von {\KOMAScript} werden genau wie von den Standardklassen + lediglich die grundlegenden Makros und Umgebungen dafür zur Verfügung + gestellt.% +\fi +% +\EndIndexGroup +% +\EndIndexGroup +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "../guide.tex" +%%% End: + +% LocalWords: Teildokumenten Klassenoption Tabellenunterschrift float +% LocalWords: Satzspiegels Schrifteinstellung Abschnittseinträgen Nachspann +% LocalWords: Vakatseiten Kolumnentitel Sternformen Teiltabelle Seitenstil + + + + +% LocalWords: Bildunterschriften Dokumentpräambel Tabellenüberschriften +% LocalWords: Gleitumgebungstyp Kapitelüberschriften Standardklassen +% LocalWords: serifenlosen Abschnittseinträge Gliederungsebenen Paketoption +% LocalWords: Nummerierungsstilen Seitenstilen Seitenankern Vakatseite +% LocalWords: Nummerierungsstil Eingangskommentar Nummerierungsstils +% LocalWords: Standardanweisung Einstellmöglichkeiten Umbruchkorrekturtext +% LocalWords: Inhaltsverzeichniseintrag Formatierungsänderungen Präfixzeile diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrdatetime.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrdatetime.tex new file mode 100644 index 0000000000..0a39c2767b --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrdatetime.tex @@ -0,0 +1,459 @@ +% ====================================================================== +% scrdatetime.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrdatetime.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrpage2 of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel über scrpage2 in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{scrdatetime.tex} + [$Date: 2018-02-05 09:57:42 +0100 (Mon, 05 Feb 2018) $ + KOMA-Script guide (chapter: scrdate, scrtime)] + +\chapter{Der Wochentag mit \Package{scrdate}} +\labelbase{scrdate} +\BeginIndexGroup +\BeginIndex{Package}{scrdate} + +Ursprünglich sollte das Paket \Package{scrdate} lediglich den Wochentag zum +aktuellen Datum liefern. Inzwischen bietet es dies und etwas mehr für jedes +beliebige Datum im Gregorianischen Kalender. + +\begin{Declaration} + \Macro{CenturyPart}\Parameter{Jahr} + \Macro{DecadePart}\Parameter{Jahr} +\end{Declaration}% +Die\ChangedAt{v3.05a}{\Package{scrdate}} Anweisung \Macro{CenturyPart} ergibt +den Wert der Jahrhundert-Stellen eines Jahres. Die Anweisung +\Macro{DecadePart} ergibt hingegen den Wert der übrigen Stellen, also der +Einer und Zehner. Dabei darf die Jahreszahl beliebig viele Stellen aufweisen. +Der Wert kann direkt zur Zuweisung an einen Zähler oder für Berechnungen mit +Hilfe von \Macro{numexpr}\IndexCmd{numexpr} verwendet werden. Für die +Ausgabe\textnote{Achtung!} als arabische Zahl ist \Macro{the}\IndexCmd{the} +voran zu stellen. + +\begin{Example} + Sie wollen berechnen, in welchem Jahrhundert das aktuelle Jahr liegt und + dies ausgeben. +\begin{lstcode} + Das Jahr \the\year\ ist das Jahr + \the\DecadePart{\year} des + \the\numexpr \CenturyPart{\year}+1\relax. + Jahrhunderts. +\end{lstcode} + Als Ergebnis erhalten Sie: + \begin{quote} + Das Jahr \the\year\ ist das Jahr \the\DecadePart{\year} des \the\numexpr + \CenturyPart{\year}+1\relax. Jahrhunderts. + \end{quote} +\end{Example}% + +Bitte\textnote{Achtung!} beachten Sie, dass hier die Zählweise verwendet +wird, bei der das Jahr 2000 das Jahr~0 -- also das erste Jahr -- des +21.~Jahrhunderts ist. Bei Bedarf kann aber, wie im Beispiel für die +Ordnungszahl gezeigt, mit \Macro{numexpr} eine Korrektur herbeigeführt +werden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DayNumber}\Parameter{Jahr}\Parameter{Monat}\Parameter{Tag} + \Macro{ISODayNumber}\Parameter{ISO-Datum} +\end{Declaration}% +Diese\ChangedAt{v3.05a}{\Package{scrdate}} beiden Anweisungen geben den Wert +der Nummer des Wochentags\Index{Wochentag} zu einem Datum zurück. Sie +unterscheiden sich nur in der Art der Angabe des Datums. Während bei +\Macro{DayNumber} Jahr, Monat und Tag des gewünschten Datums eigene Parameter +sind, wird bei \Macro{ISODayNumber} das Datum in ISO-Schreibweise, +\PName{Jahr}\texttt{-}\PName{Monat}\texttt{-}\PName{Tag} angegeben. Dabei +spielt es keine Rolle, ob Monat und Tag ein- oder zweistellig angegeben +werden. Der Wert kann direkt zur Zuweisung an einen Zähler oder für +Berechnungen mit Hilfe von \Macro{numexpr}\IndexCmd{numexpr} verwendet +werden. Für die Ausgabe\textnote{Achtung!} als arabische Zahl ist +\Macro{the}\IndexCmd{the} voran zu stellen. + +\begin{Example} + Sie wollen die Nummer des Wochentags des 1.~Mai~2027 wissen. +\begin{lstcode} + Der 1.~Mai~2027 hat die Wochentagsnummer + \the\ISODayNumber{2027-5-1}. +\end{lstcode} + Als Ergebnis erhalten Sie: + \begin{quote} + Der 1.~Mai~2027 hat die Wochentagsnummer + \the\ISODayNumber{2027-5-1}. + \end{quote} +\end{Example} + +Als Besonderheit ist es sogar möglich, von einem vorgegebenen Datum eine +gewünschte Anzahl an Tagen in die Zukunft oder Vergangenheit zu gehen. +\begin{Example} + Sie wollen die Nummer des Wochentags wissen, den wir in 12~Tagen haben und + den wir 24~Tage vor dem 24.~Dezember~2027 gehabt haben werden. +\begin{lstcode} + In 12~Tagen haben wir die Wochentagsnummer + \the\DayNumber{\year}{\month}{\day+12} und + 24~Tage vor dem 24.~Dezember~2027 wird es + die Nummer \the\ISODayNumber{2027-12-24-24} + gewesen sein. +\end{lstcode} + Als Ergebnis erhalten Sie beispielsweise: + \begin{quote} + In 12~Tagen haben wir die Wochentagsnummer + \the\DayNumber{\year}{\month}{\day+12} und + 24~Tage vor dem 24.~Dezember~2027 wird es + die Nummer \the\ISODayNumber{2027-12-24-24} + gewesen sein. + \end{quote} +\end{Example} + +Die Wochentage werden dabei wie folgt nummeriert: Sonntag\,=\,0, Montag\,=\,1, +Dienstag\,=\,2, Mittwoch\,=\,3, Donnerstag\,=\,4, Freitag\,=\,5 und +Samstag\,=\,6.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DayNameByNumber}\Parameter{Wochentagsnummer} + \Macro{DayName}\Parameter{Jahr}\Parameter{Monat}\Parameter{Tag} + \Macro{ISODayName}\Parameter{ISO-Datum} +\end{Declaration}% +Üblicherweise\ChangedAt{v3.05a}{\Package{scrdate}} ist man weniger an der +Nummer eines Wochentags als dem Namen des Wochentags interessiert. Daher +liefert die Anweisung \Macro{DayNameByNumber} den Namen des Wochentags zu +einer Wochentagsnummer zurück, die man beispielsweise mit einer der beiden +zuvor erklärten Anweisungen \DescRef{\LabelBase.cmd.DayNumber} oder +\DescRef{\LabelBase.cmd.ISODayNumber} bestimmt hat. Die beiden Anweisungen +\Macro{DayName} und \Macro{ISODayName} liefern entsprechend den Wochentag zu +einem bestimmten Datum. + +\begin{Example} + Sie wollen den Wochentag des 24.~Dezembers~2027 wissen. +\begin{lstcode} + Bitte zahlen Sie bis zum \ISODayName{2027-12-24}, + den 24.\,12.~2027, die Summe von \dots +\end{lstcode} + Als Ergebnis erhalten Sie: + \begin{quote} + Bitte zahlen Sie bis zum + \ISODayName{2027-12-24}, den + 24.\,12.~2027, die Summe von \dots + \end{quote} +\end{Example} + +Als Besonderheit ist es auch hier möglich, in gewissem Umfang Berechnungen +anzustellen: +\begin{Example} + Sie wollen den Wochentag wissen, den wir in 12~Tagen haben und + den wir 24~Tage vor dem 24.~Dezember~2027 hatten. +\begin{lstcode} + In 12~Tagen haben wir einen + \DayName{\year}{\month}{\day+12} und + 24~Tage vor dem 24.~Dezember~2027 ist ein + \ISODayName{2027-12-24-24}, während zwei Wochen + und drei Tage nach einem Mittwoch ein + \DayNameByNumber{3+2*7+3} folgt. +\end{lstcode} + Als Ergebnis erhalten Sie beispielsweise: + \begin{quote} + In 12~Tagen haben wir einen + \DayName{\year}{\month}{\day+12} und + 24~Tage vor dem 24.~Dezember~2027 ist ein + \ISODayName{2027-12-24-24}, während + zwei Wochen und drei Tage nach + einem Mittwoch ein \DayNameByNumber{3+2*7+3} + folgt. + \end{quote} +\end{Example}% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ISOToday} + \Macro{IsoToday} + \Macro{todaysname} + \Macro{todaysnumber} +\end{Declaration}% +In den bisherigen Beispielen dieses Abschnitts wurde das aktuelle Datum immer +recht umständlich über die \TeX-Register \Macro{year}\IndexCmd{year}, +\Macro{month}\IndexCmd{month}, \Macro{day}\IndexCmd{day} bestimmt. Die +Anweisungen \Macro{ISOToday}\ChangedAt{v3.05a}{\Package{scrdate}} und +\Macro{IsoToday} liefern direkt das aktuelle Datum in ISO-Schreibweise. Sie +unterscheiden sich lediglich darin, dass \Macro{ISOToday} Monat und Tag immer +zweistellig ausgibt, während \Macro{IsoToday} Monat und Tag bei Werten kleiner +10 einstellig ausgibt. Die Anweisung \Macro{todaysname} bietet direkt den +aktuellen Wochentag, während \Macro{todaysnumber} den Wert des aktuellen +Wochentags liefert. Näheres zur Verwendung dieses Wertes ist den obigen +Erklärungen zu den Anweisungen \DescRef{scrdate.cmd.DayNumber} und \DescRef{scrdate.cmd.ISODayNumber} zu +entnehmen. + +\begin{Example} + Ich will Ihnen zeigen, an was für einem Wochentag dieses Dokument gesetzt + wurde. Dazu schreibe ich: +\begin{lstcode} + Dieses Dokument entstand an einem \todaysname. +\end{lstcode} + Das Ergebnis lautet: + \begin{quote} + Dieses Dokument entstand an einem \todaysname. + \end{quote} +\end{Example} + +\begin{Explain} + Wenn\textnote{Tipp!} Sie den Namen des Tages in Kleinbuchstaben benötigen, + weil das in der entsprechenden Sprache innerhalb des Satzes so üblich ist, + können Sie das erreichen, obwohl die Namen der Wochentage in + \Package{scrdate} alle groß geschrieben sind. Greifen Sie mit + % Umbruchkorrektur: listings +\begin{lstcode} + \MakeLowercase{\todaysname} +\end{lstcode} + einfach auf die \LaTeX-Anweisung + \Macro{MakeLowercase}\IndexCmd{MakeLowercase}% + \important{\Macro{MakeLowercase}} zurück. Diese wandelt ihr Argument + komplett in Kleinbuchstaben. Natürlich funktioniert dieser Tipp auch für + obige Anweisungen \DescRef{scrdate.cmd.DayNameByNumber}\IndexCmd{DayNameByNumber}, + \DescRef{scrdate.cmd.DayName}\IndexCmd{DayName} und + \DescRef{scrdate.cmd.ISODayName}\IndexCmd{ISODayName}.% +\end{Explain}% +\EndIndexGroup + + +\begin{Declaration} + \Macro{nameday}\Parameter{Name} +\end{Declaration}% +So wie mit \DescRef{maincls.cmd.date}\IndexCmd{date} die Ausgabe von +\Macro{today} direkt geändert werden kann, setzt \Macro{nameday} die Ausgabe +von \DescRef{scrdate.cmd.todaysname} auf den Wert \PName{Name}. +\begin{Example} + Sie setzen mit \DescRef{maincls.cmd.date} das aktuelle Datum auf einen + festen Wert. Für die Ausgabe des zugehörigen Wochentags interessiert es nur, + dass dieser Tag ein Werktag war. Daher schreiben Sie +\begin{lstcode} + \nameday{Werktag} +\end{lstcode} + und erhalten so mit dem Satz aus dem vorherigen Beispiel zu + \DescRef{scrdate.cmd.todaysname}: + \begin{quote}\nameday{Werktag} + Dieses Dokument entstand an einem {\todaysname}. + \end{quote} +\end{Example} +Für \DescRef{scrdate.cmd.ISOToday}\IndexCmd{ISOToday} und +\DescRef{scrdate.cmd.IsoToday}\IndexCmd{IsoToday} existieren keine entsprechenden +Anweisungen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{newdaylanguage}\Parameter{Sprache} + \Parameter{Montag}\Parameter{Dienstag} + \Parameter{Mittwoch}\Parameter{Donnerstag} + \Parameter{Freitag}\Parameter{Samstag} + \Parameter{Sonntag} +\end{Declaration} +Das \Package{scrdate}-Paket beherrscht derzeit die folgenden Sprachen: +\begin{itemize}\raggedright\setlength{\itemsep}{.5\itemsep} +\item Dänisch (\PValue{danish}), +\item Deutsch (\PValue{austrian}\ChangedAt{v3.08b}{\Package{scrdate}}, + \PValue{german}, \PValue{naustrian}, \PValue{ngerman}, \PValue{nswissgerman}, + \PValue{swissgerman}\ChangedAt{v3.13}{\Package{scrdate}}), +\item Englisch (\PValue{american}\ChangedAt{v3.13}{\Package{scrdate}}, + \PValue{australian}, \PValue{british}, \PValue{canadian}, \PValue{english}, + \PValue{newzealand}, \PValue{UKenglish}, \PValue{ukenglish}, + \PValue{USenglish}, \PValue{usenglish}), +\item Finnisch (\PValue{finnish}), +\item Französisch (\PValue{acadian}, \PValue{canadien}, + \PValue{francais}\ChangedAt{v3.13}{\Package{scrdate}}, \PValue{french}), +\item Italienisch (\PValue{italian}), +\item Kroatisch (\PValue{croatian}), +\item Niederländisch (\PValue{dutch}), +\item Norwegisch (\PValue{norsk}), +\item Polnisch (\PValue{polish}\ChangedAt{v3.13}{\Package{scrdate}}), +\item Schwedisch (\PValue{swedish}), +\item Slowakisch (\PValue{slovak}), +\item Spanisch (\PValue{spanish}), +\item Tschechisch (\PValue{czech}\ChangedAt{v3.13}{\Package{scrdate}}). +\end{itemize} +Es kann aber auch für andere Sprachen konfiguriert werden. Dazu gibt man als +erstes Argument von \Macro{newdaylanguage} den Namen der Sprache an und als +weitere Parameter die Namen der entsprechenden Wochentage. + +Bei der aktuellen Version ist es auch egal, ob \Package{scrdate} vor oder nach +\Package{ngerman}\IndexPackage{ngerman}, \Package{babel}\IndexPackage{babel} +oder ähnlichen Paketen geladen wird, in jedem Falle wird die korrekte Sprache +gewählt, vorausgesetzt diese wird unterstützt. + +\begin{Explain} + Etwas genauer ausgedrückt: Solange die Sprachauswahl in einer zu + \Package{babel}\IndexPackage{babel} kompatiblen Form erfolgt und die Sprache + \Package{scrdate} bekannt ist, wird die Sprache korrekt gewählt. Ist dies + nicht der Fall, werden (US-)englische Ausdrücke verwendet. +\end{Explain} + +Natürlich ist es sinnvoll Definitionen für bisher nicht unterstützte Sprachen +an den \KOMAScript-Autor zu melden. In diesem Fall stehen die Chancen gut, +dass künftige \KOMAScript-Versionen die Sprache ebenfalls unterstützen +werden.% +\EndIndexGroup +% +\EndIndexGroup + + +\chapter{Die aktuelle Zeit mit \Package{scrtime}} +\labelbase{scrtime} +\BeginIndexGroup +\BeginIndex{Package}{scrtime} + +Mit Hilfe dieses Pakets kann die Frage nach der aktuellen Zeit beantwortet +werden. Seit Version~3.05 unterstützt das Paket auch die von den +\KOMAScript-Klassen und diversen anderen \KOMAScript-Paketen bekannten +Möglichkeiten zur Angabe von Optionen. Siehe dazu beispielsweise +\autoref{sec:typearea.options}. + +\begin{Declaration}% + \Macro{thistime}\OParameter{Trennung} + \Macro{thistime*}\OParameter{Trennung} +\end{Declaration}% +\Macro{thistime} liefert die aktuelle Zeit\Index{Zeit} in Stunden und +Minuten. In der Ausgabe wird zwischen den Stunden und Minuten das optionale +Argument \PName{Trennung} gesetzt. Voreingestellt ist das Zeichen +»\PValue{:}«. + +\Macro{thistime*} funktioniert fast genau wie \Macro{thistime}. Der +einzige Unterschied besteht darin, dass im Gegensatz zu +\Macro{thistime} bei \Macro{thistime*} die Minutenangaben bei Werten +kleiner 10 nicht durch eine vorangestellte Null auf zwei Stellen +erweitert wird. +\begin{Example} + Die Zeile +\begin{lstcode} + Ihr Zug geht um \thistime\ Uhr. +\end{lstcode} + liefert als Ergebnis beispielsweise eine Zeile wie + \begin{quote} + Ihr Zug geht um \thistime\ Uhr. + \end{quote} + oder + \begin{quote} + Ihr Zug geht um 23:09 Uhr. + \end{quote} + \bigskip + Demgegenüber liefert die Zeile +\begin{lstcode} + Beim nächsten Ton ist es \thistime*[\ Uhr,\ ] + Minuten und 42 Sekunden. +\end{lstcode} + als mögliches Ergebnis etwas wie + \begin{quote} + Beim nächsten Ton ist es 8\ Uhr,\ 41 Minuten und 42 Sekunden. + \end{quote} + oder + \begin{quote} + Beim nächsten Ton ist es 23\ Uhr,\ 9 Minuten und 42 Sekunden. + \end{quote} +\end{Example} +\EndIndexGroup + + +\begin{Declaration}% + \Macro{settime}\Parameter{Wert} +\end{Declaration}% +\DescRef{scrtime.cmd.settime} setzt die Ausgabe von \DescRef{scrtime.cmd.thistime} und +\DescRef{scrtime.cmd.thistime*} auf einen festen \PName{Wert}% +%\footnote{Allerdings darf man nicht erwarten, dass nun die Zeit +% stillsteht!} +. % +Anschließend wird das optionale Argument von \DescRef{scrtime.cmd.thistime} bzw. +\DescRef{scrtime.cmd.thistime*} ignoriert, da ja die komplette Zeichenkette, die +\DescRef{scrtime.cmd.thistime} bzw. \DescRef{scrtime.cmd.thistime*} nun liefert, hiermit explizit +festgelegt wurde.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{12h}{Ein-Aus-Wert} +\end{Declaration}% +\BeginIndex{Option}{24h}% +Mit der Option \Option{12h}\ChangedAt{v3.05a}{\Package{scrtime}} kann gewählt +werden, ob die Zeit bei \DescRef{scrtime.cmd.thistime} und \DescRef{scrtime.cmd.thistime*} im 12-Stunden- +oder 24-Stunden-Format ausgegeben werden soll. Als \PName{Ein-Aus-Wert} kann +dabei einer der Standardwerte für einfache Schalter aus +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} verwendet +werden. Wird die Option ohne Wert-Angabe verwendet, so wird der Wert +\PValue{true} angenommen, also auf das 12-Stunden-Format geschaltet. +Voreingestellt\textnote{Voreinstellung} ist hingegen das 24-Stunden-Format.% +%\footnote{Leider beherrscht das \Package{scrtime}-Paket noch nicht die +% Sternzeit nach \textsc{StarTrek}\Index{StarTrek}, ein echter +% Mangel!} + +Die Option kann wahlweise als Klassenoption bei +\DescRef{typearea.cmd.documentclass}, als Paketoption bei +\DescRef{typearea.cmd.usepackage} oder auch nach dem Laden von +\Package{scrtime} per \DescRef{typearea.cmd.KOMAoptions} oder +\DescRef{typearea.cmd.KOMAoption} (siehe beispielsweise +\autoref{sec:typearea.options}, \DescPageRef{typearea.cmd.KOMAoptions}) +gesetzt werden. Sie verliert jedoch bei einem Aufruf von +\DescRef{scrtime.cmd.settime} ihre Gültigkeit. Die Uhrzeit wird nach +Verwendung dieser Anweisung nur noch mit dem dort angegebenen Wert im dort +verwendeten Format ausgegeben. + +Rein\textnote{Achtung!} aus Gründen der Kompatibilität zu früheren Versionen +von \Package{scrtime} wird bei \DescRef{typearea.cmd.documentclass} und +\DescRef{typearea.cmd.usepackage} auch noch die Option \Option{24h} zur +Umschaltung auf das 24-Stunden-Format unterstützt. Deren Verwendung wird +jedoch nicht mehr empfohlen.% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "scrlayer-de.tex" +%%% TeX-PDF-mode: t +%%% End: + +% LocalWords: Gregorianischen Zählweise Ordnungszahl diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrextend.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrextend.tex new file mode 100644 index 0000000000..c124db974c --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrextend.tex @@ -0,0 +1,230 @@ +% ====================================================================== +% scrextend.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrextend.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Package scrextend for Document Writers +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Paket scrextend für Dokument-Autoren +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{scrextend.tex} + [$Date: 2018-01-24 11:44:29 +0100 (Wed, 24 Jan 2018) $ + KOMA-Script package scrextend] + +\chapter[tocentry={Grundlegende Fähigkeiten der + \KOMAScript-Klassen\protect\linebreak + mit Hilfe des Pakets \Package{scrextend} anderen Klassen erschließen}, + head={Fähigkeiten von \KOMAScript-Klassen mit \Package{scrextend}}] +{Grundlegende Fähigkeiten der \KOMAScript-Klassen mit Hilfe des Pakets + \Package{scrextend} anderen Klassen erschließen} +\labelbase{scrextend} +\BeginIndexGroup +\BeginIndex{Package}{scrextend}% + +Es gibt einige Möglichkeiten, die allen \KOMAScript-Klassen gemeinsam +sind. Dies betrifft in der Regel nicht nur die Klassen \Class{scrbook}, +\Class{scrreprt} und \Class{scrartcl}, die als Ersatz für die Standardklassen +\Class{book}, \Class{report} und \Class{article} für Bücher, Berichte und +Artikel gedacht sind, sondern in weiten Teilen auch die \KOMAScript-Klasse +\Class{scrlttr2}, die als Nachfolger von \Class{scrlettr} für Briefe gedacht +ist. Diese grundlegenden Möglichkeiten, die in den genannten Klassen zu finden +sind, werden von \KOMAScript{} ab Version~3.00 auch vom Paket +\Package{scrextend} bereitgestellt. Dieses Paket sollte +nicht\textnote{Achtung!} mit \KOMAScript-Klassen verwendet werden. Es ist +ausschließlich zur Verwendung mit anderen Klassen gedacht. Der Versuch, das +Paket mit einer \KOMAScript-Klasse zu laden, wird von \Package{scrextend} +erkannt und mit einer Warnung abgelehnt. + +Dass \hyperref[cha:scrlttr2]{\Package{scrletter}}\IndexPackage{scrletter} +nicht nur mit \KOMAScript-Klassen, sondern auch mit den Standardklassen +verwendet werden kann, liegt übrigens teilweise an \Package{scrextend}. Stellt +\hyperref[cha:scrlttr2]{\Package{scrletter}} nämlich fest, dass es nicht mit +einer \KOMAScript-Klasse verwendet wird, so lädt es automatisch +\Package{scrextend}. Damit stehen dann alle unbedingt benötigten Möglichkeiten +der \KOMAScript-Klassen zur Verfügung. + +Es gibt natürlich keine Garantie, dass \Package{scrextend} mit jeder +beliebigen Klasse zusammenarbeitet. Es ist primär für die Erweiterung der +Standardklassen und davon abgeleiteten Klassen gedacht. In jedem Fall sollten +Benutzer zunächst prüfen, ob die verwendete Klasse nicht selbst entsprechende +Möglichkeiten bereitstellt. + +Neben den in diesem Kapitel beschriebenen Möglichkeiten gibt es einige +weitere, die jedoch hauptsächlich für Klassen- und Paketautoren gedacht +sind. Diese sind in \autoref{cha:scrbase}, ab \autopageref{cha:scrbase} zu +finden. Das dort dokumentierte Paket +\hyperref[cha:scrbase]{\Package{scrbase}}% +\important{\hyperref[cha:scrbase]{\Package{scrbase}}}\IndexPackage{scrbase} +wird von allen \KOMAScript-Klassen und dem Paket \Package{scrextend} +verwendet. + +Auch das Paket \hyperref[cha:scrlfile]{\Package{scrlfile}}% +\important{\hyperref[cha:scrlfile]{\Package{scrlfile}}}\IndexPackage{scrlfile} +aus \autoref{cha:scrlfile} ab \autopageref{cha:scrlfile} wird von allen +\KOMAScript-Klassen und dem Paket \Package{scrextend} geladen. Daher stehen +auch dessen Möglichkeiten bei Verwendung von \Package{scrextend} zur +Verfügung. + +\iftrue % Umbruchkorrekturtext +Im Unterschied dazu wird das ebenfalls für Klassen- und Paketautoren gedachte +Paket \hyperref[cha:tocbasic]{\Package{tocbasic}} (siehe +\autoref{cha:tocbasic} ab \autopageref{cha:tocbasic}) nur von den Klassen +\Class{scrbook}, \Class{scrreprt} und \Class{scrartcl} geladen, so dass die +dort definierten Möglichkeiten auch nur in diesen Klassen und nicht in +\Package{scrextend} zu finden sind. Natürlich kann +\hyperref[cha:tocbasic]{\Package{tocbasic}} aber auch zusammen mit +\Package{scrextend} verwendet werden.% +\fi + +\LoadCommonFile{options}% \section{Frühe oder späte Optionenwahl bei \KOMAScript} + +\LoadCommonFile{compatibility}% \section{Kompatibilität zu früheren Versionen von \KOMAScript} + + +\section{Optionale, erweiterte Möglichkeiten} +\seclabel{optionalFeatures} + +Das Paket \Package{scrextend} kennt optional verfügbare, erweiterte +Möglichkeiten. Das sind Möglichkeiten, die in der Grundeinstellung nicht +vorhanden sind, aber zusätzlich ausgewählt werden können. Diese +sind beispielsweise deshalb optional, weil sie potentiell in Konflikt mit den +Möglichkeiten der Standardklassen oder häufig benutzter Pakete stehen. + +\begin{Declaration} + \OptionVName{extendedfeature}{Möglichkeit} +\end{Declaration} +Mit dieser Option kann eine optionale Möglichkeit von \Package{scrextend} +ausgewählt werden. Diese Option steht nur während des Ladens von +\Package{scrextend} zur Verfügung. Anwender geben diese Option daher als +optionales Argument von +\DescRef{\LabelBase.cmd.usepackage}\PParameter{scrextend} an. % +\iffree{% + Eine Übersicht über die verfügbaren optionalen Möglichkeiten bietet + \autoref{tab:scrextend.optionalFeatures}. + + \begin{table} + \caption[{Optional verfügbare, erweiterte Möglichkeiten + von \Package{scrextend}}]{Übersicht über die optional verfügbaren, + erweiterten Möglichkeiten von \Package{scrextend}} + \label{tab:scrextend.optionalFeatures} + \begin{desctabular} + \entry{\PName{title}}{% + die Titelseiten werden auf die Möglichkeiten der \KOMAScript-Klassen + erweitert; dies betrifft neben den Anweisungen für die Titelseiten + auch die Option \DescRef{\LabelBase.option.titlepage} (siehe + \autoref{sec:scrextend.titlepage}, ab + \autopageref{sec:scrextend.titlepage})% + } + \end{desctabular} + \end{table}% +}{% + \par% + Die derzeit einzige optionale Möglichkeit ist + \PValue{title}\IndexOption[indexmain]{extendedfeature~=\textKValue{title}}% + \important{\OptionValue{extendedfeature}{title}}. + Damit werden die Titelseiten auf die Möglichkeiten der \KOMAScript-Klassen + erweitert, wie sie in \autoref{sec:scrextend.titlepage} ab + \autopageref{sec:scrextend.titlepage} beschrieben sind.% +}% +% +\EndIndexGroup + + +\LoadCommonFile{draftmode}% \section{Entwurfsmodus} + +\LoadCommonFile{fontsize} % \section{Wahl der Schriftgröße für das Dokument} + +\LoadCommonFile{textmarkup}% \section{Textauszeichnungen} + +\LoadCommonFile{titles}% \section{Dokumenttitel} + +\LoadCommonFile{oddorevenpage}% \section{Erkennung von rechten und linken Seiten} + + +\section{Wahl eines vordefinierten Seitenstils} +\seclabel{pagestyle} + +Eine der allgemeinen Eigenschaften eines Dokuments ist der +Seitenstil\Index[indexmain]{Seiten>Stil}. Bei {\LaTeX} versteht man unter dem +Seitenstil in erster Linie den Inhalt der Kopf- und Fußzeilen. Das Paket +\Package{scrextend} definiert selbst keine Seitenstile, nutzt aber +Seitenstile des \LaTeX-Kerns. + + +\begin{Declaration} + \Macro{titlepagestyle} +\end{Declaration}% +\BeginIndex{}{Titel>Seitenstil}% +Auf einigen Seiten wird mit Hilfe von +\DescRef{maincls.cmd.thispagestyle}\IndexCmd{thispagestyle} automatisch ein +anderer Seitenstil gewählt. Bei \Package{scrextend} betrifft dies bisher nur +die Titelseiten und auch dies nur, wenn mit +\OptionValueRef{\LabelBase}{extendedfeature}{title} gearbeitet wird (siehe +\autoref{sec:scrextend.optionalFeatures}, +\DescPageRef{scrextend.option.extendedfeature}). Welcher Seitenstil in diesem +Fall für einen +Titelkopf\important{\OptionValueRef{\LabelBase}{titlepage}{false}}% +\IndexOption{titlepage~=\textKValue{false}}\Index{Titel>Kopf} verwendet wird, +ist im Makro \Macro{titlepagestyle} festgelegt. In der Voreinstellung ist das +der Seitenstil \DescRef{maincls.pagestyle.plain}\IndexPagestyle{plain}. Dieser +Seitenstil wird bereits im \LaTeX-Kern vordefiniert und sollte daher immer +verfügbar sein.% +\EndIndexGroup + +\LoadCommonFile{interleafpage}% \section{Vakatseiten} + +\LoadCommonFile{footnotes}% \section{Fußnoten} + +\LoadCommonFile{dictum}% \section{Schlauer Spruch} + +\LoadCommonFile{lists}% \section{Listen} + +\LoadCommonFile{marginpar}% \section{Randnotizen} +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "guide.tex" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrhack.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrhack.tex new file mode 100644 index 0000000000..9d9b3faed2 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrhack.tex @@ -0,0 +1,285 @@ +% ====================================================================== +% scrhack.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrhack.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrhack of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------------- +% +% Kapitel über scrhack in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrhack.tex} + [$Date: 2018-02-05 10:50:56 +0100 (Mon, 05 Feb 2018) $ + KOMA-Script guide (chapter: scrhack)] + +\chapter{Fremdpakete verbessern mit \Package{scrhack}} +\labelbase{scrhack} + +\BeginIndexGroup +\BeginIndex{Package}{scrhack} +Einige Pakete außerhalb von \KOMAScript{} arbeiten nicht sehr gut mit +\KOMAScript{} zusammen. Für den \KOMAScript-Autor ist es dabei oftmals sehr +mühsam, die Autoren der jeweiligen Pakete von einer Verbesserung zu +überzeugen. Das betrifft auch Pakete, deren Entwicklung eingestellt +wurde. Deshalb wurde das Paket \Package{scrhack} begonnen. Dieses Paket ändert +Anweisungen und Definitionen anderer Pakete, damit sie besser mit +\KOMAScript{} zusammenarbeiten. Einige Änderungen sind auch bei +Verwendung anderer Klassen nützlich. + +\section{Entwicklungsstand} +\seclabel{draft} + +Obwohl das Paket bereits seit längerer Zeit Teil von \KOMAScript{} ist und +von vielen Anwendern genutzt wird, hat es auch ein Problem: Bei +der Umdefinierung von Makros fremder Pakete ist es von der genauen Definition +und Verwendung dieser Makros abhängig. Damit ist es gleichzeitig auch von +bestimmten Versionen dieser Pakete abhängig. Wird eine unbekannte Version +eines der entsprechenden Pakete verwendet, kann \Package{scrhack} den +notwendigen Patch eventuell nicht ausführen. Im Extremfall kann aber umgekehrt +der Patch einer unbekannten Version auch zu einem Fehler führen. + +Da also \Package{scrhack} immer wieder an neue Versionen fremder Pakete +angepasst werden muss, kann es niemals als fertig angesehen werden. Daher +existiert von \Package{scrhack} dauerhaft nur eine Beta-Version. Obwohl die +Benutzung in der Regel einige Vorteile mit sich bringt, kann die Funktion +nicht dauerhaft garantiert werden. + +\LoadCommonFile{options} + +\section{Verwendung von \Package{tocbasic}} +\seclabel{improvement} + +In den Anfängen von \KOMAScript{} gab es von Anwenderseite den Wunsch, dass +Verzeichnisse von Gleitumgebungen, die mit dem Paket +\Package{float}\IndexPackage{float}\important{\Package{float}} erzeugt werden, +genauso behandelt werden wie das Abbildungsverzeichnis oder das +Tabellenverzeichnis, das von den \KOMAScript-Klassen selbst angelegt +wird. Damals setzte sich der \KOMAScript-Autor mit dem Autor von +\Package{float} in Verbindung, um diesem eine Schnittstelle für entsprechende +Erweiterungen zu unterbreiten. In etwas abgewandelter Form wurde diese in +Gestalt der beiden Anweisungen +\Macro{float@listhead}\IndexCmd[indexmain]{float@listhead} und +\Macro{float@addtolists}\IndexCmd[indexmain]{float@addtolists} realisiert. + +Später zeigte sich, dass diese beiden Anweisungen nicht genug Flexibilität für +eine umfangreiche Unterstützung aller \KOMAScript-Möglichkeiten boten. Leider +hatte der Autor von \Package{float} die Entwicklung aber bereits eingestellt, +so dass hier keine Änderungen mehr zu erwarten sind. + +Andere Paketautoren haben die beiden Anweisungen ebenfalls übernommen. Dabei +zeigte sich, dass die Implementierung in einigen Paketen, darunter auch +\Package{float}, dazu führt, dass all diese Pakete nur in einer bestimmten +Reihenfolge geladen werden können, obwohl sie ansonsten in keinerlei Beziehung +zueinander stehen. + +Um all diese Nachteile und Probleme zu beseitigen, unterstützt \KOMAScript{} +diese alte Schnittstelle offiziell nicht mehr. Stattdessen wird bei Verwendung +dieser Schnittstelle von \KOMAScript{} gewarnt. Gleichzeitig wurde in +\KOMAScript{} das Paket +\Package{tocbasic}\IndexPackage{tocbasic}\important{\Package{tocbasic}} (siehe +\autoref{cha:tocbasic}) als zentrale Schnittstelle für die Verwaltung von +Verzeichnissen entworfen und realisiert. Die Verwendung dieses Pakets bietet +weit mehr Vorteile und Möglichkeiten als die beiden alten Anweisungen. + +Obwohl der Aufwand zur Verwendung dieses Pakets sehr gering ist, haben bisher +die Autoren der Pakete, die auf die beiden alten Anweisungen gesetzt haben, +keine Anpassung vorgenommen. Daher enthält \Package{scrhack} selbst +entsprechende Anpassungen für die Pakete +\Package{float}\IndexPackage{float}\important{\Package{float}, + \Package{floatrow}, \Package{listings}}, +\Package{floatrow}\IndexPackage{floatrow} und +\Package{listings}\IndexPackage{listings}. Allein durch das Laden von +\Package{scrhack} reagieren diese Pakete dann nicht nur auf die Einstellungen +von Option +\DescRef{maincls.option.listof}\IndexOption{listof~=\PName{Einstellung}}, +sondern beachten auch Sprachumschaltungen durch das +\Package{babel}-Paket\IndexPackage{babel}. Näheres zu den Möglichkeiten, die +durch die Umstellung der Pakete auf \Package{tocbasic} nun zur Verfügung +stehen, ist \autoref{sec:tocbasic.toc} zu entnehmen. + +Sollte diese Änderung für eines der Pakete nicht erwünscht sein oder zu +Problemen führen, so kann sie selektiv mit den Einstellungen +\OptionValue{float}{false}\IndexOption[indexmain]{float~=\textKValue{false}}, +\OptionValue{floatrow}{false}\IndexOption[indexmain]{floatrow~=\textKValue{false}} +und +\OptionValue{listings}{false}\IndexOption[indexmain]{listings~=\textKValue{false}} +abgeschaltet werden. Wichtig\textnote{Achtung!} dabei ist, dass eine Änderung +der Optionen nach dem Laden des zugehörigen Pakets keinen Einfluss mehr hat! + + +\section{Falsche Erwartungen an \Macro{@ptsize}} +\seclabel{ptsize} + +Einige Pakete gehen grundsätzlich davon aus, dass das klasseninterne Makro +\Macro{@ptsize}\IndexCmd{@ptsize} sowohl definiert ist als auch zu einer +ganzen Zahl expandiert. Aus Kompatibilitätsgründen definiert \KOMAScript{} +\Macro{@ptsize} auch bei anderen Grundschriftgrößen als 10\Unit{pt}, +11\Unit{pt} oder 12\Unit{pt}. Da \KOMAScript{} außerdem auch gebrochene +Schriftgrößen erlaubt, kann dabei \Macro{@ptsize} natürlich auch zu einem +Dezimalbruch expandieren. + +Eines\ChangedAt{v3.17}{\Package{scrhack}} der Pakete, die damit nicht zurecht +kommen, ist das Paket \Package{setspace}\IndexPackage[indexmain]{setspace}% +\important{\Package{setspace}}. Darüber hinaus sind die von diesem Paket +eingestellten Werte immer von der Grundschriftgröße abhängig, auch wenn die +Einstellung im Kontext einer anderen Schriftgröße erfolgt. Paket +\Package{scrhack} löst beide Probleme, indem es die Einstellungen von +\Macro{onehalfspacing} und \Macro{doublespacing} immer relativ zur aktuellen, +tatsächlichen Schriftgröße vornimmt. + +Sollte diese Änderung nicht erwünscht sein oder zu Problemen führen, so kann +sie selektiv mit der Einstellung +\OptionValue{setspace}{false}\IndexOption[indexmain]{setspace~=\textKValue{false}} +abgeschaltet werden. Wichtig\textnote{Achtung!} dabei ist, dass eine Änderung +der Option nach dem Laden von \Package{setspace} keinen Einfluss mehr hat! +Ebenso muss \Package{scrhack} vor \Package{setspace} geladen werden, falls +\Package{setspace} mit einer der Optionen \Option{onehalfspacing} oder +\Option{doublespacing} geladen wird und dieser Hack sich bereits darauf +auswirken soll. + + +\section{Sonderfall \Package{hyperref}} +\seclabel{hyperref} + +Ältere Versionen von +\Package{hyperref}\IndexPackage{hyperref}\important{\Package{hyperref}} vor +6.79h haben bei den Sternformen der Gliederungsbefehle hinter statt vor oder +auf die Gliederungsüberschriften verlinkt. Inzwischen ist dieses Problem auf +Vorschlag des \KOMAScript-Autors beseitigt. Da die entsprechende Änderung aber +über ein Jahr auf sich warten ließ, wurde in \Package{scrhack} ein +entsprechender Patch aufgenommen. Zwar kann dieser ebenfalls durch +\OptionValue{hyperref}{false} deaktiviert werden, empfohlen wird jedoch +stattdessen die aktuelle Version von \Package{hyperref} zu verwenden. In +diesem Fall wird die Änderung durch \Package{scrhack} automatisch verhindert. + + +\section{Inkonsistente Behandlung von \Length{textwidth} und \Length{textheight}} +\seclabel{lscape} + +Das\ChangedAt{v3.18}{\Package{scrhack}} Paket +\Package{lscape}\IndexPackage[indexmain]{lscape}% +\important{\Package{lscape}} definiert eine Umgebung +\Environment{landscape}\IndexEnv{landscape}, um den Inhalt einer Seite aber +nicht deren Kopf und Fuß quer zu setzen. Innerhalb dieser Umgebung wird +\Length{textheight}\IndexLength{textheight} auf den Wert von +\Length{textwidth} gesetzt. Umgekehrt wird jedoch \Length{textwidth} nicht auf +den vorherigen Wert von \Length{textheight} gesetzt. Das ist +inkonsistent. Meines Wissens wird \Length{textwidth} nicht entsprechend +geändert, weil andere Pakete oder Anwenderanweisungen gestört werden +könnten. Jedoch hat auch die Änderung von \Length{textwidth} dieses Potential +und in der Tat beschädigt sie die Funktion beispielsweise der Pakete +\Package{showframe}\IndexPackage{showframe} und +\Package{scrlayer}\IndexPackage{scrlayer}. Daher wäre es am besten, wenn +\Length{textheight} ebenfalls unverändert bliebe. \Package{scrhack} verwendet +Paket \Package{xpatch} (siehe \cite{package:xpatch}), um die Startanweisung +\Macro{landscape} der gleichnamigen Umgebung entsprechend zu ändern. + +Falls diese Änderung nicht gewünscht wird oder Probleme verursacht, kann sie +mit Option +\OptionValue{lscape}{false}\IndexOption[indexmain]{lscape~=\textKValue{false}} +deaktiviert werden. Es ist zu beachten\textnote{Achtung!}, dass eine +nachträgliche Zuweisung an Option \Option{lscape} mit +\DescRef{\LabelBase.cmd.KOMAoption}\IndexCmd{KOMAoption} oder +\DescRef{\LabelBase.cmd.KOMAoptions}\IndexCmd{KOMAoptions} nur eine Wirkung +hat, wenn sie während des Ladens von \Package{lscape} nicht \PValue{false} +war. + +Im übrigens wird \Package{lscape} auch von dem Paket +\Package{pdflscape}\IndexPackage[indexmain]{pdflscape}% +\important{\Package{pdflscape}} verwendet, so dass \Package{scrhack} sich auch +auf die Funktion dieses Pakets auswirkt.% + + +\section{Sonderfall \Package{nomencl}} +\seclabel{nomencl} + +Eine\ChangedAt{v3.23}{\Package{scrhack}} Besonderheit stellt der Hack für das +Paket +\Package{nomencl}\IndexPackage[indexmain]{nomencl}\important{\Package{nomencl}} +dar. Dieser rüstet einerseits nach, dass der optionale +Inhaltsverzeichniseintrag für die Nomenklatur Option +\OptionValueRef{maincls}{toc}{indentunnumbered} beachtet. Quasi nebenbei +werden über das Paket \Package{tocbasic} auch gleich die Endungen \File{nlo} +und \File{nls} für den Besitzer \PValue{nomencl} reserviert (siehe +\DescRef{tocbasic.cmd.addtotoclist}, \autoref{sec:tocbasic.basics}, +\DescPageRef{tocbasic.cmd.addtotoclist}). + +Außerdem wird die Umgebung +\Environment{thenomenclature}\IndexEnv{thenomenclature} so geändert, +dass \DescRef{tocbasic.cmd.tocbasic@listhead}\IndexCmd{tocbasic@listhead} für +die Überschrift verwendet wird (siehe \autoref{sec:tocbasic.internals}, +\DescPageRef{tocbasic.cmd.tocbasic@listhead}). Dadurch können mit dem Hack +diverse Attribute für die Endung \File{nls} über +\DescRef{tocbasic.cmd.setuptoc}\IndexCmd{setuptoc}% +\important{\DescRef{tocbasic.cmd.setuptoc}} gesetzt werden. So ist es +beispielsweise möglich, mit +\DescRef{tocbasic.cmd.setuptoc}\PParameter{nls}\PParameter{numbered} die +Nomenklatur nicht nur ins Inhaltsverzeichnis einzutragen sondern auch gleich +zu nummerieren. Näheres zu \DescRef{tocbasic.cmd.setuptoc} und den damit +möglichen Einstellungen ist in \autoref{sec:tocbasic.toc}, ab +\DescPageRef{tocbasic.cmd.setuptoc} zu finden. Als kleiner aber wichtiger +Nebeneffekt erhält die Nomenklatur mit diesem Patch außerdem einen passenden +Kolumnentitel, falls lebende Kolumnentitel beispielsweise durch Verwendung von +Seitenstil \DescRef{maincls.pagestyle.headings} aktiviert wurden. + +Dieser eher simple Patch ist damit ein Beispiel dafür, wie auch Pakete, die +keine Gleitumgebungen definieren, Nutzen aus der Verwendung von +\Package{tocbasic} ziehen könnten. Falls diese Änderung jedoch nicht +gewünscht wird oder Probleme verursacht, kann sie mit Option +\OptionValue{nomencl}{false}\IndexOption[indexmain]{nomencl~=\textKValue{false}} +deaktiviert werden. Entscheidend\textnote{Achtung!} ist dabei die Einstellung +der Option zum Zeitpunkt, zu dem \Package{nomencl} geladen wird! Spätere +Änderungen der Option mit \DescRef{\LabelBase.cmd.KOMAoption} oder +\DescRef{\LabelBase.cmd.KOMAoptions} haben also keinen Einfluss und führen zu +einer entsprechenen Warnung.% +\EndIndexGroup + + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: + +% LocalWords: Eindateiensystem Schreibdatei Zieldatei Zielendung Quellendung +% LocalWords: Verzeichnisüberschrift Dateiendung Zielendungen Verzeichnisdatei +% LocalWords: Benutzeranweisungen Dokumentpräambel Kapitelebene Sternformen +% LocalWords: Sprachumschaltungen Gliederungsüberschriften Gliederungsbefehle +% LocalWords: Paketautoren diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrjura.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrjura.tex new file mode 100644 index 0000000000..05503a86fe --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrjura.tex @@ -0,0 +1,1261 @@ +% ====================================================================== +% scrjura.tex +% Copyright (c) Markus Kohm, 2011-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrjura.tex +% Copyright (c) Markus Kohm, 2011-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrjura of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel ueber scrjura in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{scrjura.tex}% + [$Date: 2018-07-20 09:52:01 +0200 (Fri, 20 Jul 2018) $ + KOMA-Script guide (chapter: scrjura)] + +\chapter{Unterstützung für die Anwaltspraxis durch \Package{scrjura}} +\labelbase{scrjura} +\BeginIndexGroup +\BeginIndex{Package}{scrjura} + +Will man einen Vertrag\Index{Vertraege=Verträge}, die Satzung einer +Gesellschaft oder eines Vereins, ein Gesetz oder gleich einen +Gesetzeskommentar schreiben, so übernimmt das Paket \Package{scrjura} den +typografischen Teil der Unterstützung für diese Tätigkeit. Obwohl +\Package{scrjura} als allgemeine Hilfe für anwaltliche Schriftstücke angedacht +ist, hat sich gezeigt, dass der Vertrag dabei ein ganz zentrales Element +ist. Besonderes Augenmerk gilt hier dem +Paragraphen\Index{Paragraphen>juristische} mit Nummer, Titel, nummerierten +Absätzen -- falls es mehrere davon in einem Paragraphen gibt --, bedarfsweise +nummerierten Sätzen, Einträgen in das Inhaltsverzeichnis und Querverweisen in +den deutschen Gepflogenheiten entsprechenden Formen. + +Das Paket ist in Zusammenarbeit mit Rechtsanwalt Dr.\,Alexander Willand, +Karlsruhe, entstanden. Viele der Möglichkeiten gehen außerdem auf konstruktive +Nachfragen von Prof.\,Heiner Richter von der Hochschule Stalsund zurück. + +Es ist zu beachten\textnote{Achtung!}, dass das Paket mit +\Package{hyperref}\IndexPackage{hyperref} zusammenarbeitet. Es ist dabei +jedoch wichtig, dass \Package{hyperref} wie üblich nach \Package{scrjura} +geladen wird! + +\LoadCommonFile{options}% \section{Frühe oder späte Optionenwahl} + +\LoadCommonFile{textmarkup}% \section{Textauszeichnungen} + +\section{Verzeichnisse} +\label{sec:scrjura.toc} + +Die Überschriften juristischer Paragraphen können auf Wunsch auch automatisch +ins Inhaltsverzeichnis eingetragen werden. + +\begin{Declaration} + \OptionVName{juratotoc}{Ein-Aus-Wert} + \OptionVName{juratotoc}{Ebenennummer} +\end{Declaration} +Im Inhaltsverzeichnis angezeigt werden +Paragraphen\Index{Paragraphen>juristische} nur, wenn ihre \PName{Ebenennummer} +kleiner oder gleich dem Zähler \DescRef{maincls.counter.tocdepth}% +\important{\DescRef{maincls.counter.tocdepth}}\IndexCounter{tocdepth} ist +(siehe \autoref{sec:maincls.toc}, +\DescPageRef{maincls.counter.tocdepth}). Voreingestellt\textnote{Voreinstellung} +ist für \PName{Ebenennummer} der Wert 10000, der auch verwendet wird, wenn die +Option über einen +\PName{Ein-Aus-Wert}\important{\OptionValue{juratotoc}{false}} (siehe +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}) +ausgeschaltet wird. Da der Zähler \DescRef{maincls.counter.tocdepth} +üblicherweise einen kleinen, einstelligen Wert besitzt, werden die +Paragraphen-Einträge im Inhaltsverzeichnis daher normalerweise nicht +angezeigt. + +Wird die Option hingegen über einen +\PName{Ein-Aus-Wert}\important{\OptionValue{juratotoc}{true}} eingeschaltet, +so wird als \PName{Ebenennummer} 2 voreingestellt. Damit werden sie in +Inhaltsverzeichnissen bei allen \KOMAScript-Klassen auf derselben Ebene wie +\DescRef{maincls.cmd.subsection}\IndexCmd{subsection}% +\important{\DescRef{maincls.cmd.subsection}} eingeordnet. In der +Voreinstellung von \DescRef{maincls.counter.tocdepth} werden sie dann auch bei +allen \KOMAScript-Klassen im Inhaltsverzeichnis angezeigt.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{juratocindent}{Einzug} + \OptionVName{juratocnumberwidth}{Nummernbreite} +\end{Declaration} +Mit diesen beiden Optionen kann für die Einträge der Paragraphen ins +Inhaltsverzeichnis sowohl der Einzug als auch die Breite, die für Nummern +reserviert wird, festgelegt werden. Voreingestellt\textnote{Voreinstellung} +sind dieselben Werte wie für +\DescRef{maincls.cmd.subsection}-Einträge\IndexCmd{subsection}% +\important{\DescRef{maincls.cmd.subsection}} bei \Class{scrartcl}. +% +\EndIndexGroup + + +\section{Umgebung für Verträge} +\label{sec:scrjura.contract} + +\BeginIndexGroup +\BeginIndex{}{Vertraege=Verträge} +Die wesentlichen Mechanismen von \Package{scrjura} stehen ausschließlich +innerhalb von Verträgen der zugehörigen Umgebung zur Verfügung. + +\begin{Declaration} + \begin{Environment}{contract}\end{Environment} +\end{Declaration} +Dies ist die erste und bisher einzige Umgebung für Juristen, die +\Package{scrjura} bereitstellt. Durch ihre Verwendung wird die automatische +Absatznummerierung aktiviert und die Anweisungen +\DescRef{\LabelBase.cmd.Clause} und \DescRef{\LabelBase.cmd.SubClause} mit +einer konkreten Form versehen, die später näher dokumentiert wird. + +Die\textnote{Achtung!} Umgebung \Environment{contract} darf nicht in sich +selbst geschachtelt werden. Innerhalb eines Dokuments dürfen jedoch mehrere +dieser Umgebungen verwendet werden. Dabei werden die Paragraphen innerhalb +dieser Umgebungen so behandelt, als stünden sie innerhalb einer einzigen +Umgebung. Durch das Beenden der Umgebung wird diese also quasi +unterbrochen und durch den Beginn einer neuen Umgebung wird sozusagen die alte +Umgebung fortgesetzt. Dabei sind allerdings keine Unterbrechungen innerhalb +eines Paragraphen möglich.% +\EndIndexGroup + +\begin{Declaration} + \Option{contract} +\end{Declaration} +Bei Angabe dieser Option beim Laden des Pakets beispielsweise mit +\DescRef{\LabelBase.cmd.usepackage}% +\important{\DescRef{\LabelBase.cmd.usepackage}} oder als globale Option bei +\DescRef{\LabelBase.cmd.documentclass}% +\important{\DescRef{\LabelBase.cmd.documentclass}} wird das gesamte Dokument +zu einem Vertrag. Das Dokument verhält sich dann also genauso, als würde es +genau eine \DescRef{\LabelBase.env.contract}-Umgebung enthalten. + +Es\textnote{Achtung!} wird darauf hingewiesen, dass Option \Option{contract} +weder mit \DescRef{\LabelBase.cmd.KOMAoption} noch +\DescRef{\LabelBase.cmd.KOMAoptions} gesetzt werden kann! Damit ist es auch +nicht möglich die Option wieder abzuschalten. Verwenden Sie in einem solchen +Fall stattdessen direkt eine \DescRef{\LabelBase.env.contract}-Umgebung. +% +\EndIndexGroup + + +\subsection{Juristische Paragraphen} +\label{sec:scrjura.clause} +\BeginIndexGroup +\BeginIndex{}{Paragraphen>juristische} + +Paragraphen\footnote{Obwohl der korrekte Begriff für juristische Paragraphen + im Englischen »\emph{section}« wäre, sind die Bezeichnungen in + \Package{scrjura} von »\emph{clause}« abgeleitet. Dadurch sollen + Verwechslungen sowohl mit \DescRef{maincls.cmd.section} als auch mit + \DescRef{maincls.cmd.paragraph} vermieden werden.} im juristischen Sinn +sind bei \Package{scrjura} nur innerhalb von Verträgen, also innerhalb der +Umgebung \DescRef{\LabelBase.env.contract} oder weiteren mit +\DescRef{\LabelBase.cmd.DeclareNewJuraEnvironment} (siehe +\autoref{sec:\LabelBase.newenv}, +\DescPageRef{\LabelBase.cmd.DeclareNewJuraEnvironment}) erstellten Umgebungen, +definiert. + +\begin{Declaration} + \phantomsection\label{desc:scrjura.contract.macro.Clause}% + \Macro{Clause}\Parameter{Einstellungen} + \phantomsection\label{desc:scrjura.contract.macro.SubClause}% + \Macro{SubClause}\Parameter{Einstellungen} +\end{Declaration} +Dies sind die wichtigsten Anweisungen innerhalb eines Vertrags. Ohne +zusätzliche \PName{Einstellungen} erzeugt \Macro{Clause} eine +Paragraphenüberschrift, die nur aus dem Paragraphenzeichen, gefolgt von einer +fortlaufenden Nummer besteht. Dagegen erzeugt \Macro{SubClause} eine +Paragraphenüberschrift, bei der an die zuletzt mit \Macro{Clause} gesetzte +Nummer noch ein fortlaufender Kleinbuchstabe angehängt wird. Gedacht ist +\Macro{SubClause} vor allem für den Fall, dass bei der Novellierung von +Gesetzen oder Verträgen nicht nur Paragraphen umformuliert oder gestrichen +werden, sondern zwischen existierenden Paragraphen neue eingefügt werden, ohne +dass eine komplett neue Nummerierung erfolgt. + +Als \PName{Einstellungen} kann bei beiden Anweisungen eine durch Komma +separierte Liste von Eigenschaften angegeben werden. Eine Übersicht über die +möglichen Eigenschaften bietet \autoref{tab:scrjura.Clause.options}. Auf die +wichtigsten soll noch näher eingegangen werden. + +\begin{table} + \caption{Mögliche Eigenschaften für die optionalen Argumente der Anweisungen + \Macro{Clause} und \Macro{SubClause}} + \label{tab:scrjura.Clause.options} + \begin{desctabular} + \entry{\Option{dummy}}{% + Die Überschrift wird nicht gesetzt, aber gezählt.% + }% + \entry{\OptionVName{head}{Kolumnentitel}}{% + Sind Kolumnentitel aktiviert, wird unabhängig von einem Titel für den + Paragraphen dieser Kolumnentitel verwendet.% + }% + \entry{\Option{nohead}}{% + Es wird kein neuer Kolumnentitel gesetzt.% + }% + \entry{\Option{notocentry}}{% + Es wird kein Eintrag ins Inhaltsverzeichnis vorgenommen.% + }% + \entry{\OptionVName{number}{Nummer}}{% + Die Nummer für den Paragraphen wird direkt angegeben.% + }% + \entry{\OptionVName{preskip}{Abstand}}{% + Neuer Abstand vor den Überschriften der Paragraphen.% + }% + \entry{\OptionVName{postskip}{Abstand}}{% + Neuer Abstand nach den Überschrift der Paragraphen.% + }% + \entry{\OptionVName{title}{Überschrift}}{% + Der Paragraph wird zusätzlich zur Nummer mit einem Titel versehen. Dies + ist gleichzeitig die Grundeinstellung für die Einträge in den + Kolumnentitel und das Inhaltsverzeichnis.% + }% + \entry{\OptionVName{tocentry}{Inhaltsverzeichniseintrag}}{% + Unabhängig von einem Titel für den Paragraphen wird dieser Eintrag ins + Inhaltsverzeichnis vorgenommen.% + }% + \end{desctabular} +\end{table} + +In der Voreinstellung\textnote{Voreinstellung} wird vor der Überschrift ein +Abstand von zwei Zeilen und danach ein Abstand von einer Zeile eingefügt. Über +die Eigenschaften \Option{preskip}\important[i]{\Option{preskip}, + \Option{postskip}} und \Option{postskip} kann dieser Abstand verändert +werden. Die neue Einstellung gilt dann aber nicht nur für den aktuellen +Paragraphen, sondern ab dem aktuellen Paragraphen bis zum Ende der aktuellen +Umgebung. Es ist auch möglich, die entsprechende Einstellung bereits vorab mit +Hilfe von +\begin{flushleft}\quad\small + \textbf{\Macro{setkeys}}\PParameter{contract}% + \PParameter{preskip=\PName{Abstand},\\ + \normalsize\quad\small + \hspace{11.5em}postskip=\PName{Abstand}} +\end{flushleft} +unabhängig von einem konkreten Paragraphen und auch außerhalb einer +\DescRef{\LabelBase.env.contract}-Umgebung vorzunehmen. Auch das Setzen +innerhalb der Präambel nach dem Laden von \Package{scrjura} ist so +möglich. Dagegen ist es nicht möglich, diese beiden Optionen bereits beim +Laden des Pakets anzugeben oder sie per \DescRef{\LabelBase.cmd.KOMAoptions} +oder \DescRef{\LabelBase.cmd.KOMAoption} zu setzen. + +\BeginIndex{FontElement}{contract.Clause}\LabelFontElement{contract.Clause}% +\BeginIndex{FontElement}{Clause}\LabelFontElement{Clause}% +In der Voreinstellung\textnote{Voreinstellung} wird für die Überschrift des +Paragraphen als Schrift \Macro{sffamily}\Macro{bfseries}\Macro{large} +verwendet. Über das Element +\FontElement{contract.Clause}\important{\FontElement{contract.Clause}} kann +diese Schrift jederzeit mit Hilfe der Anweisungen +\DescRef{\LabelBase.cmd.setkomafont}% +\important[i]{\DescRef{\LabelBase.cmd.setkomafont}, + \DescRef{\LabelBase.cmd.addtokomafont}} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, \DescPageRef{\LabelBase.cmd.setkomafont}) +geändert werden. Innerhalb der \DescRef{\LabelBase.env.contract}-Umgebung kann +statt \FontElement{contract.Clause} auch +\FontElement{Clause}\important{\FontElement{Clause}} verwendet werden.% +\EndIndex{FontElement}{Clause}% +\EndIndex{FontElement}{contract.Clause} + +Mit Hilfe der Einstellungen \Option{title}\important[i]{\Option{title}, + \Option{head}, \Option{tocentry}}, \Option{head} und \Option{tocentry} +können Paragraphen zusätzlich zur Nummer mit einem Titel versehen +werden. Dabei\textnote{Achtung!} wird empfohlen, den Wert der jeweiligen +Eigenschaft in geschweifte Klammern zu setzen. Anderenfalls führen +beispielsweise Kommata zu Verwechslungen mit den Trennzeichen zwischen +unterschiedlichen Eigenschaften. Leere Werte für \Option{head} und +\Option{tocentry} führen zu leeren Einträgen. Will man hingegen keine Einträge +vornehmen, so sind \Option{nohead}\important[i]{\Option{nohead}, + \Option{notocentry}} und \Option{notocentry} zu verwenden. + +Statt der fortlaufenden Nummer kann mit Hilfe der Eigenschaft +\Option{number}\important{\Option{number}} auch manuell eine Nummer vergeben +werden. Dies hat jedoch keinen Einfluss auf die Nummern der nachfolgenden +Paragraphen. Die Angabe einer leeren Nummer ist nicht +vorgesehen. Zerbrechliche Anweisungen in \PName{Nummer} sollten mit +\Macro{protect} geschützt werden. Es\textnote{Achtung!} wird empfohlen als +\PName{Nummer} nur Ziffern und Buchstaben anzugeben. + +Mit der Eigenschaft \Option{dummy}\important{\Option{dummy}} kann man die +Ausgabe der kompletten Überschrift des Paragraphen unterdrücken. In der +automatischen Zählung wird der Paragraph aber dennoch berücksichtigt. Auf +diese Weise kann man beispielsweise\textnote{Beispiel} mit +\begin{lstcode} + \Clause{dummy} +\end{lstcode} +einen Paragraphen in der automatischen Zählung überspringen, falls der +entsprechende Paragraph in einer späteren Fassung eines Vertrags gestrichen +wurde. + +Es\textnote{Achtung!} ist zu beachten, dass Eigenschaft \Option{dummy} als +Wert allenfalls \PValue{true} und \PValue{false} versteht. Alle anderen Werte +werden normalerweise ignoriert, können im ungünstigsten Fall aber auch zu +einer Fehlermeldung führen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{Clauseformat}\Parameter{Nummer} +\end{Declaration} +Wie bereits in der vorausgehenden Erklärung erwähnt, werden juristische +Paragraphen und Unterparagraphen normalerweise nummeriert. Die Formatierung +der Nummer erfolgt dabei mit Hilfe der Anweisung \Macro{Clauseformat}, die als +einziges Argument die Nummer erwartet. Bei der +Vordefinierung\textnote{Voreinstellung} als +\begin{lstcode} + \newcommand*{\Clauseformat}[1]{\S~#1} +\end{lstcode} +wird der Nummer mit \Macro{S}\IndexCmd{S} lediglich das Paragraphensymbol, +gefolgt von einem nicht trennbaren Leerzeichen +vorangestellt. Bei\textnote{Achtung!} Umdefinierungen ist auf die +Expandierbarkeit zu achten!% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{juratitlepagebreak}{Ein-Aus-Wert} +\end{Declaration}% +Normalerweise sind Seitenumbrüche innerhalb von Überschriften aller Art +verboten. Einige Juristen benötigen jedoch Seitenumbrüche innerhalb von +Paragraphentiteln. Daher kann ein solcher Umbruch mit +\Option{juratitlepagebreak}\important{\Option{juratitlepagebreak}} erlaubt +werden. Die möglichen Einstellungen für \PName{Ein-Aus-Wert} sind +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} zu +entnehmen.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{clausemark}{Einstellung} +\end{Declaration}% +Da Paragraphen eine untergeordnete Gliederung mit unabhängiger Nummerierung +sind, erzeugen sie in der Voreinstellung\textnote{Voreinstellung} keine +Kolumnentitel. Über alternative Einstellungen können jedoch auch Kolumnentitel +erzeugt werden. Die möglichen Werte und ihre Bedeutung sind +\autoref{tab:scrjura.clausemark} zu entnehmen.% +% +\begin{table} + \caption{Mögliche Werte für Option \Option{clausemark} zur Erzeugung von + Kolumnentiteln durch Paragraphen} + \label{tab:scrjura.clausemark}% + \begin{desctabular} + \entry{\PValue{both}}{% + Paragraphen erzeugen linke und rechte Marken für Kolumnentitel, wenn das + Dokument die Verwendung von lebenden Kolumnentiteln vorsieht.% + \IndexOption{clausemark~=\textKValue{both}}% + }% + \entry{\PValue{false}, \PValue{off}, \PValue{no}}{% + Paragraphen erzeugen keine Kolumnentitel.% + \IndexOption{clausemark~=\textKValue{false}}% + }% + \entry{\PValue{forceboth}}{% + Paragraphen erzeugen mit \DescRef{maincls.cmd.markboth} linke und rechte + Marken für Kolumnentitel unabhängig davon, ob das Dokument + beispielsweise über den Seitenstil überhaupt lebende Kolumnentitel + verwendet.% + \IndexOption{clausemark~=\textKValue{forceboth}}% + }% + \entry{\PValue{forceright}}{% + Paragraphen erzeugen mit \DescRef{maincls.cmd.markright} rechte Marken + für Kolumnentitel unabhängig davon, ob das Dokument beispielsweise über + den Seitenstil überhaupt lebende Kolumnentitel verwendet.% + \IndexOption{clausemark~=\textKValue{forceright}}% + }% + \entry{\PValue{right}}{% + Paragraphen erzeugen rechte Marken für Kolumnentitel, wenn das Dokument + die Verwendung von lebenden Kolumnentiteln vorsieht.% + \IndexOption{clausemark~=\textKValue{right}}% + }% + \end{desctabular} +\end{table} +% +\EndIndexGroup +\EndIndexGroup + +\subsection{Absätze} +\label{sec:scrjura.par} +\BeginIndexGroup +\BeginIndex{}{Absatz>Nummerierung}% +Innerhalb von Paragraphen werden Absätze von \Package{scrjura} normalerweise +automatisch nummeriert. Sie sind damit ein stark gliederndes Element, ähnlich +\DescRef{maincls.cmd.paragraph} oder \DescRef{maincls.cmd.subparagraph} in +normalen Texten. Innerhalb von Verträgen wird deshalb häufig auch gerne mit +Abstand zwischen den Absätzen gearbeitet. Das Paket \Package{scrjura} bietet +keinen eigenen Mechanismus hierfür. Stattdessen sei auf die Option +\DescRef{maincls.option.parskip}% +\IndexOption{parskip}\important{\DescRef{maincls.option.parskip}} der +\KOMAScript-Klassen verwiesen (siehe \autoref{sec:maincls.parmarkup}, +\DescPageRef{maincls.option.parskip}). + +\begin{Declaration} + \OptionVName{parnumber}{Einstellung} +\end{Declaration} +Die automatische\textnote{Voreinstellung} Nummerierung der Absätze entspricht +den beiden Einstellungen \OptionValue{parnumber}{auto} und +\OptionValue{parnumber}{true}. Manchmal ist es notwendig, die automatische +Nummerierung abzuschalten. Das ist mit \OptionValue{parnumber}{false}% +\important{\OptionValue{parnumber}{false}}% +\IndexOption{parnumber~=\textKValue{false}} möglich. In diesem Fall wird nur die +Satznummer automatisch zurück gesetzt. + +Zur Realisierung dieser Option war es notwendig, in den Absatzmechanismus von +\LaTeX{} einzugreifen. In einigen seltenen Fällen kann sich das negativ +auswirken. Dann bleibt nur, diese Änderung mit +\OptionValue{parnumber}{manual}% +\important{\OptionValue{parnumber}{manual}}% +\IndexOption{parnumber~=\textKValue{manual}} zurück zu nehmen. Umgekehrt hebt +\LaTeX{} selbst den Eingriff manchmal auf. In diesem Fällen kann er mit +\OptionValue{parnumber}{auto}% +\important{\OptionValue{parnumber}{auto}}% +\IndexOption{parnumber~=\textKValue{auto}} erneut aktiviert werden. + +Paragraphen, die nur aus einem einzigen Absatz bestehen, werden normalerweise +nicht automatisch nummeriert. Damit dies funktioniert, dürfen sich keine zwei +Paragraphen mit identischer Nummer in einem Dokument befinden. Sollten Sie +dies dennoch einmal benötigen, weichen Sie bitte auf eine weitere +Vertragsumgebung aus (siehe +\DescRef{\LabelBase.cmd.DeclareNewJuraEnvironment}, +\autoref{sec:\LabelBase.newenv}, +\DescPageRef{\LabelBase.cmd.DeclareNewJuraEnvironment}). Da\textnote{Achtung!} +die Information erst am Ende eines Paragraphen zur Verfügung steht, werden in +der Regel zwei \LaTeX-Läufe benötigt, bis die automatische Absatznummerierung +korrekt erfolgt.% +\EndIndexGroup + +\begin{Declaration} + \Counter{par} + \Macro{thepar} + \Macro{parformat} + \Macro{parformatseparation} +\end{Declaration}% +Für die Nummerierung der Absätze wird der Zähler \Counter{par} +verwendet. Seine Darstellung, \Macro{thepar} ist mit +\Macro{arabic}\PParameter{par} als arabische Zahl +voreingestellt. Die\textnote{Voreinstellung} Ausgabe als automatische +Absatznummer erfolgt mit \Macro{parformat}. Dabei wird \Macro{thepar} in runde +Klammern gesetzt. Will man einem Absatz manuell eine Absatznummer +voranstellen, so sollte das ebenfalls mit \Macro{parformat} geschehen. Dabei +ist es sinnvoll, auf \Macro{parformat} noch \Macro{parformatseparation} oder +zumindest ein nicht trennbares Leerzeichen mit +\Macro{nobreakspace}\IndexCmd{nobreakspace} oder der Tilde folgen zu lassen. + +Bei\ChangedAt{v0.7}{\Package{scrjura}} der automatischen Nummerierung wird +\Macro{parformat} ebenfalls noch \Macro{parformatseparation} als Trennzeichen +angehängt. Voreinstellt\textnote{Voreinstellung} ist derzeit mit +\Macro{nobreakspace}\IndexCmd{nobreakspace} ein nicht umbrechbarer +Wortabstand. + +\BeginIndex{FontElement}{parnumber}\LabelFontElement{parnumber}% +Die Absatznummer wird normalerweise\textnote{Voreinstellung} in der +aktuellen Schrift gesetzt. Diese Voreinstellung für das Element +\FontElement{parnumber} kann jederzeit mit Hilfe der Anweisungen +\DescRef{\LabelBase.cmd.setkomafont}% +\important[i]{\DescRef{\LabelBase.cmd.setkomafont}, + \DescRef{\LabelBase.cmd.addtokomafont}} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, \DescPageRef{\LabelBase.cmd.setkomafont}) +geändert werden.% +\EndIndex{FontElement}{parnumber}% + +Es\textnote{Achtung!} wird darauf hingewiesen, dass \Package{scrjura} intern +davon ausgeht, dass \Macro{thepar} eine arabische Zahl ist. Daher sollte +diese Anweisung keinesfalls umdefiniert werden!% +\EndIndexGroup + + +\begin{Declaration} + \Macro{withoutparnumber} +\end{Declaration} +Wird keine Absatznummer ausgegeben, wird am Anfang des Absatzes ersatzweise +die Anweisung \Macro{withoutparnumber} lokal +ausgeführt. Diese\textnote{Voreinstellung} ist in der Voreinstellung leer, tut +also weiter nichts. Sie wurde auf speziellen Wunsch in \Package{scrjura} +eingebaut, ist für den normalen Anwender aber ohne Belang.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ellipsispar}\OParameter{Anzahl} + \Macro{parellipsis} +\end{Declaration} +Manchmal\ChangedAt{v0.7}{\Package{scrjura}} -- insbesondere in vergleichenden +Kommentaren -- ist es wünschenswert, wenn man Absätze in Gesetzen auslassen, +aber gleichzeitig die Auslassung\Index{Absatz>Auslassung} markieren kann. Die +Absätze sollen dann auch in der Zählung der übrigen Absätze berücksichtigt +werden. Das Paket \Package{scrjura} stellt dafür die Anweisung +\Macro{ellipsispar} bereit. + +In der Voreinstellung\textnote{Voreinstellung} lässt \Macro{ellipsispar} genau +einen Absatz aus. Über das optionale Argument \PName{Anzahl} können jedoch +auch mehrere Absätze ausgelassen werden. In jedem Fall erscheint in der +Ausgabe stattdessen genau ein nicht nummerierter Absatz, der nur die +Auslassungszeichen \Macro{parellipsis} enthält. Bei der Entscheidung für eine +automatische Nummerierung der übrigen Absätze eines juristischen Paragraphen +werden die ausgelassenen Absätze jedoch mit gezählt. Dies gilt ebenso für die +Nummern etwaiger nachfolgender Absätze. +\begin{Example} + Angenommen, Sie kommentieren das Strafgesetzbuch, wollen aber in \S~2 nur + Absatz~3 kommentieren. Dennoch soll auf die übrigen Absätze indirekt + hingewiesen werden. Sie erreichen das beispielsweise mit: +\begin{lstcode} + \documentclass[parskip=half]{scrartcl} + \usepackage{scrjura} + \usepackage{selinput} + \SelectInputMappings{ + adieresis={ä},germandbls={ß}, + } + \begin{document} + \begin{contract} + \Clause{title={Zeitliche Geltung},number=2} + \ellipsispar[2] + + Wird das Gesetz, das bei Beendigung der Tat + gilt, vor der Entscheidung geändert, so ist + das mildeste Gesetz anzuwenden. + + \ellipsispar[3] + \end{contract} + \end{document} +\end{lstcode} + Um das Ergebnis zu sehen, sollten Sie das einfach einmal ausprobieren. +\end{Example} + +Die Auslassungszeichen sind so vordefiniert\textnote{Voreinstellung}, dass +\Macro{textellipsis}\IndexCmd{textellipsis} verwendet wird, falls eine solche +Anweisung definiert ist. Anderenfalls wird \Macro{dots}\IndexCmd{dots} +verwendet. Eine Umdefinierung von \Macro{parellipsis} ist mit +\Macro{renewcommand} jederzeit möglich.% +\EndIndexGroup + + +\subsection{Sätze} +\label{sec:scrjura.sentence} + +\BeginIndexGroup +\BeginIndex{}{Satz>Nummerierung}% +Absätze in Verträgen bestehen aus einem oder mehreren Sätzen, die teilweise +ebenfalls nummeriert werden. Da eine automatische Nummerierung jedoch +problematisch und fehleranfällig ist, wurde eine solche bisher nicht +implementiert. Eine halbautomatische Nummerierung wird jedoch unterstützt. + +\begin{Declaration} + \Counter{sentence} + \Macro{thesentence} + \Macro{sentencenumberformat} + \Macro{Sentence} +\end{Declaration} +Die Nummerierung von Sätzen erfolgt manuell mit der Anweisung +\Macro{Sentence}. Dabei wird der Zähler \Counter{sentence} automatisch erhöht +und in der Voreinstellung von +\Macro{sentencenumberformat}\ChangedAt{v3.26}{\Package{scrjura}} die arabische +Zahl von \Macro{thesentence} hochgestellt ausgegeben. + +\BeginIndex{FontElement}{sentencenumber}\LabelFontElement{sentencenumber}% +Die\ChangedAt{v3.26}{\Package{scrjura}} Satznummer wird +normalerweise\textnote{Voreinstellung} in der aktuellen Schrift gesetzt. Diese +Voreinstellung für das Element \FontElement{sentencenumber} kann jederzeit mit +Hilfe der Anweisungen \DescRef{\LabelBase.cmd.setkomafont}% +\important[i]{\DescRef{\LabelBase.cmd.setkomafont}, + \DescRef{\LabelBase.cmd.addtokomafont}} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, \DescPageRef{\LabelBase.cmd.setkomafont}) +geändert werden.% +\EndIndex{FontElement}{sentencenumber} + +Bei\textnote{Tipp!} Verwendung von +\Package{babel}\IndexPackage{babel}\important{\Package{babel}} ist es einfach +möglich, eine Abkürzung für \Macro{Sentence} zu definieren:% +\phantomsection\label{sec:scrjura.shorthandexample}% +\begin{lstcode}[moretexcs={useshorthands,defineshorthand}] + \useshorthands{'} + \defineshorthand{'S}{\Sentence\ignorespaces} +\end{lstcode} +Dabei werden Leerzeichen nach +\lstinline|'S| ignoriert. Auch eine +Abkürzung für einen Punkt, gefolgt von einer neuen Satznummer ist möglich: +\begin{lstcode}[moretexcs={useshorthands,defineshorthand}] + \defineshorthand{'.}{. \Sentence\ignorespaces} +\end{lstcode} +Näheres zu \Macro{useshorthands}\IndexCmd{useshorthands} und +\Macro{defineshorthand}\IndexCmd{defineshorthands} ist der Anleitung zum Paket +\Package{babel} zu entnehmen (siehe \cite{package:babel}). Ein +Anwendungsbeispiel finden Sie in \autoref{sec:scrjura.example} ab +\autopageref{sec:scrjura.example}.% +\EndIndexGroup +% +\EndIndexGroup +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Querverweise} +\label{sec:scrjura.ref} + +Für Paragraphen, Absätze und Sätze reicht der normale Mechanismus für +Querverweise mit \Macro{label}\IndexCmd{label}\important{\Macro{label}}, +\Macro{ref} und \Macro{pageref} nicht mehr aus. Daher wird dieser von +\Package{scrjura} um weitere Anweisungen ergänzt. + +\begin{Declaration} + \Macro{ref}\Parameter{Label} + \Macro{refL}\Parameter{Label} + \Macro{refS}\Parameter{Label} + \Macro{refN}\Parameter{Label} +\end{Declaration} +Die Anweisungen \Macro{refL}, \Macro{refS} und \Macro{refN} +referenzieren Paragraph, Absatz und Satz immer vollständig. \Macro{refL} +verwendet dabei eine textuelle Langform, während \Macro{refS} eine textuelle +Kurzform bietet. \Macro{refN} ist eine rein nummerische Kurzform. \Macro{ref} +entspricht in der Voreinstellung \Macro{refL}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{refClause}\Parameter{Label} + \Macro{refClauseN}\Parameter{Label} +\end{Declaration} +Für die Referenzierung von Paragraphen ohne Absatz und Satz, unterscheiden +sich \Macro{refClause} und \Macro{refClauseN} nur darin, dass ersteres +automatisch ein Paragraphenzeichen voran stellt.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{refPar}\Parameter{Label} + \Macro{refParL}\Parameter{Label} + \Macro{refParS}\Parameter{Label} + \Macro{refParN}\OParameter{Zahlenformat}\Parameter{Label} +\end{Declaration} +Nur den Absatz kann man mit \Macro{refParL}, \Macro{refParS} und +\Macro{refParN} referenzieren. Die Formen unterscheiden sich dabei wie bereits +für \DescRef{\LabelBase.cmd.refL}, \DescRef{\LabelBase.cmd.refN} und +\DescRef{\LabelBase.cmd.refS} angegeben. Eine Besonderheit stellt das +optionale Argument von \Macro{refParN} dar. Normalerweise werden Absätze in +rein nummerischer Form als römische Zahlen referenziert. Über das optionale +Argument kann jedoch auch ein anderes Format vorgegeben werden. Sinnvoll ist +hier in erster Linie das \PValue{Zahlenformat} \PValue{arabic} für eine +arabische Absatznummer. \Macro{refPar} entspricht in der Voreinstellung +\Macro{refParL}. +\EndIndexGroup + + +\begin{Declaration} + \Macro{refSentence}\Parameter{Label} + \Macro{refSentenceL}\Parameter{Label} + \Macro{refSentenceS}\Parameter{Label} + \Macro{refSentenceN}\Parameter{Label} +\end{Declaration} +Der Satz ohne Paragraph und Absatz kann mit \Macro{refSentenceL}, +\Macro{refSentenceS} oder \Macro{refSentenceN} referenziert werden. Auch hier +gibt es wieder eine textuelle Langform, eine textuelle Kurzform und eine rein +nummerische Form. \Macro{refSentence} entspricht in der Voreinstellung +\Macro{refSentenceL}.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{ref}{Einstellung} +\end{Declaration} +Die Ergebnisse von \DescRef{\LabelBase.cmd.ref}, +\DescRef{\LabelBase.cmd.refPar} und \DescRef{\LabelBase.cmd.refSentence} sind +von der \PName{Einstellung} für Option \Option{ref} abhängig. In der +Voreinstellung entsprechen diese \DescRef{\LabelBase.cmd.refL}, +\DescRef{\LabelBase.cmd.refParL} und +\DescRef{\LabelBase.cmd.refSentenceL}. Mögliche Werte und ihre Bedeutung sind +\autoref{tab:scrjura.ref} zu entnehmen.% +% +\begin{table} +%\begin{desclist} +% \desccaption + \caption[{% + Mögliche Werte für Option \Option{ref} zur Einstellung der + Referenzierungsformate% + }]{% + Mögliche Werte für Option \Option{ref} zur Einstellung des Formats von + \DescRef{\LabelBase.cmd.ref}, \DescRef{\LabelBase.cmd.refPar} und + \DescRef{\LabelBase.cmd.refSentence}% + \label{tab:scrjura.ref}% + }% +% {% +% Mögliche Werte für Option \Option{ref} \emph{(Fortsetzung)}% +% }% + \begin{desctabular} + \entry{\PValue{long}}{% + Die Einstellungen \PValue{parlong} und \PValue{sentencelong} werden + kombiniert.% + \IndexOption{ref~=\textKValue{long}}% + }% + \entry{\PValue{numeric}}{% + Die Einstellungen \PValue{parnumeric} und \PValue{sentencenumeric} + werden kombiniert.% + \IndexOption{ref~=\textKValue{numeric}}% + }% + \entry{\PValue{clauseonly}, \PValue{onlyclause}, \PValue{ClauseOnly}, + \PValue{OnlyClause}}{% + Die Einstellungen \PValue{paroff} und \PValue{sentenceoff} werden + kombiniert. Es ist zu beachten, dass dadurch sowohl + \DescRef{\LabelBase.cmd.refPar} als auch + \DescRef{\LabelBase.cmd.refSentence} ein leeres Ergebnis erzeugen!% + \IndexOption{ref~=\textKValue{long}}% + }% + \entry{\PValue{parlong}, \PValue{longpar}, \PValue{ParL}}{% + Der Absatz wird in der textuellen Langform referenziert.% + \IndexOption{ref~=\textKValue{parlong}}% + }% + \entry{\PValue{parnumeric}, \PValue{numericpar}, \PValue{ParN}}{% + Der Absatz wird in der rein nummerischen Form referenziert.% + \IndexOption{ref~=\textKValue{parnumeric}}% + }% + \entry{\PValue{paroff}, \PValue{nopar}}{% + Der Absatz wird nicht mit referenziert. Es ist zu beachten, dass dadurch + \DescRef{\LabelBase.cmd.refPar} ein leeres Ergebnis erzeugt!% + \IndexOption{ref~=\textKValue{paroff}}% + }% + \entry{\PValue{parshort}, \PValue{shortpar}, \PValue{ParS}}{% + Der Absatz wird in der textuellen Kurzform referenziert.% + \IndexOption{ref~=\textKValue{parshort}}% + }% + \entry{\PValue{sentencelong}, \PValue{longsentence}, \PValue{SentenceL}}{% + Der Satz wird in der textuellen Langform referenziert.% + \IndexOption{ref~=\textKValue{parlong}}% + }% + \entry{\PValue{sentencenumeric}, \PValue{numericsentence}, + \PValue{SentenceN}}{% + Der Satz wird in der rein nummerischen Form referenziert.% + \IndexOption{ref~=\textKValue{sentencenumeric}}% + }% + \entry{\PValue{sentenceoff}, \PValue{nosentence}}{% + Der Satz wird nicht mit referenziert. Es ist zu beachten, dass dadurch + von \DescRef{\LabelBase.cmd.refSentence} ein leeres Ergebnis erzeugt + wird!% + \IndexOption{ref~=\textKValue{sentenceoff}}% + }% + \entry{\PValue{sentenceshort}, \PValue{shortsentence}, + \PValue{SentenceS}}{% + Der Satz wird in der textuellen Kurzform referenziert.% + \IndexOption{ref~=\textKValue{sentenceshort}}% + }% + \entry{\PValue{short}}{% + Die Einstellungen \PValue{parshort} und \PValue{sentenceshort} werden + kombiniert.% + \IndexOption{ref~=\textKValue{short}}% + }% +\end{desctabular} +\end{table} + +\begin{Example} + Angenommen, Sie wollen, dass auf Absätze immer in der Form »Absatz 1 in + Paragraph 1« verwiesen wird. Da es hierfür keine vordefinierte Anweisung + gibt, müssen Sie sich Ihre eigene Definition aus den vorhanden Möglichkeiten + zusammenbauen. Dies können Sie mit% +\begin{lstcode} + \newcommand*{\refParM}[1]{% + Absatz~\refParN[arabic]{#1} + in Paragraph~\refClauseN{#1}% + } +\end{lstcode} + sehr einfach erreichen. Die so neu definierte Anweisung ist genau wie + \DescRef{\LabelBase.cmd.refParL} zu verwenden.% +\end{Example}% + +Beispiele für die Ergebnisse der nicht konfigurierbaren, grundlegenden +Anweisungen finden sich in \autoref{tab:scrjura.refexamples}. +% +\begin{table} + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside}{Beispielausgaben der von Option \Option{ref} + unabhängigen Anweisungen für Querverweise}[l] + \begin{tabular}[t]{ll} + \toprule + Anweisung & Beispielausgabe \\ + \midrule + \DescRef{\LabelBase.cmd.refL}\Parameter{Label} & § 1 Absatz 1 Satz 1 \\ + \DescRef{\LabelBase.cmd.refS}\Parameter{Label} & § 1 Abs. 1 S. 1 \\ + \DescRef{\LabelBase.cmd.refN}\Parameter{Label} & § 1 I 1. \\ + \DescRef{\LabelBase.cmd.refClause}\Parameter{Label} & § 1 \\ + \DescRef{\LabelBase.cmd.refClauseN}\Parameter{Label} & 1 \\ + \DescRef{\LabelBase.cmd.refParL}\Parameter{Label} & Absatz 1 \\ + \DescRef{\LabelBase.cmd.refParS}\Parameter{Label} & Abs. 1 \\ + \DescRef{\LabelBase.cmd.refParN}\Parameter{Label} & I \\ + \DescRef{\LabelBase.cmd.refParN}\POParameter{arabic}\Parameter{Label} & 1 \\ + \DescRef{\LabelBase.cmd.refParN}\POParameter{roman}\Parameter{Label} & i \\ + \DescRef{\LabelBase.cmd.refSentenceL}\Parameter{Label} & Satz 1 \\ + \DescRef{\LabelBase.cmd.refSentenceS}\Parameter{Label} & S. 1 \\ + \DescRef{\LabelBase.cmd.refSentenceN}\Parameter{Label} & 1. \\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:scrjura.refexamples} +\end{table} +\EndIndexGroup + + +\section{Zusätzliche Vertragsumgebungen} +\label{sec:scrjura.newenv} + +Einige Anwender setzen mit \Package{scrjura} keine Verträge oder Kommentare +zu einzelnen Gesetzen, sondern Werke, in denen unterschiedliche Arten von +Gesetzen behandelt werden. Es ist daher erforderlich, dass ein Paragraph +nicht immer mit demselben Präfix »\S« versehen wird, sondern beispielsweise +als »Art.« oder »IAS« oder was auch immer bezeichnet wird. Darüber hinaus wird +eine unabhängige Zählung der unterschiedlichen Paragraphen benötigt. + +\begin{Declaration} + \Macro{DeclareNewJuraEnvironment}\Parameter{Name}\OParameter{Optionen} + \Parameter{Start-Anweisungen} + \Parameter{End-Anweisungen} +\end{Declaration} +Über\ChangedAt{v0.9}{\Package{scrjura}} diese Anweisung können weitere, +voneinander unabhängige Umgebungen für Vertrags- oder Gesetzestexte deklariert +werden. Das Argument \PName{Name} ist dabei der Name der neuen +Umgebung. \PName{Start-Anweisungen} sind Anweisungen, die immer am Anfang der +Umgebung ausgeführt werden, ganz als ob man sie jedes Mal unmittelbar hinter +\Macro{begin}\Parameter{Name} einfügen würde. Entsprechend werden +\PName{End-Anweisungen} immer am Ende der Umgebung ausgeführt, ganz als ob man +sie jedes Mal unmittelbar vor \Macro{end}\Parameter{Name} einfügen würde. Ohne +\PName{Optionen} entspricht die neue Umgebung \PName{Name} einer +\DescRef{\LabelBase.env.contract}-Umgebung mit eigenen Zählern. Es besteht +jedoch die Möglichkeit über eine mit Komma separierte Liste an +\PName{Optionen} darauf Einfluss zu +nehmen. \autoref{tab:\LabelBase.DeclareNewJuraEnvironment} führt die derzeit +unterstützen \PName{Optionen} auf. + +\begin{desclist} + \desccaption{Von \Macro{DeclareNewJuraEnvironment} unterstützte Optionen zur + Konfigurierung neuer + Vertragsumgebungen\label{tab:\LabelBase.DeclareNewJuraEnvironment}}% + {Optionen für \Macro{DeclareNewJuraEnvironment} (\emph{Fortsetzung})}% + \entry{\OptionVName{Clause}{Anweisung}}{% + \DescRef{\LabelBase.cmd.Clause} wird innerhalb der neuen Umgebung auf + \PName{Anweisung} abgebildet. Die \PName{Anweisung} sollte wie die für + \DescRef{\LabelBase.env.contract} dokumentierte Anweisung genau ein + Argument erwarten. Für eine korrekte Anwendung dieser Option sind + erweiterte Kenntnisse über die interne Funktion von \Package{scrjura} + notwendig. Außerdem können sich die Anforderungen an die \PName{Anweisung} + von Version zu Version noch ändern. Daher wird derzeit empfohlen, die + Option nicht zu verwenden!% + }% + \entry{\OptionVName{ClauseFont}{Anweisungen}}{% + \leavevmode\BeginIndex{FontElement}{\PName{Name}.Clause}% + \LabelFontElement{\PName{Name}.Clause}% + Ist diese Option angegeben, so wird eine neues Element + \FontElement{\PName{Name}.Clause}\IndexFontElement{\PName{Name}.Clause} + mit \DescRef{maincls-experts.cmd.newkomafont} definiert und + \PName{Anweisungen} für dessen Voreinstellung verwendet. Sollte das + Element bisher als Alias definiert gewesen sein (siehe + \DescRef{maincls-experts.cmd.aliaskomafont} in + \autoref{sec:maincls-experts.experts}, + \DescPageRef{maincls-experts.cmd.aliaskomafont}) so wird es stattdessen zu + einem selbstständigen Element. Sollte das Element bereits definiert + gewesen sein, so werden lediglich die \PName{Anweisungen} mit + \DescRef{\LabelBase.cmd.setkomafont} als neue Einstellung gesetzt. Bitte + beachten Sie die in \autoref{sec:\LabelBase.textmarkup}, + \DescPageRef{\LabelBase.cmd.setkomafont} erklärten Einschränkungen + bezüglich der erlaubten \PName{Anweisungen}!% + \EndIndex{FontElement}{\PName{Name}.Clause}% + }% + \entry{\OptionVName{SubClause}{Anweisung}}{% + \DescRef{\LabelBase.cmd.SubClause} wird innerhalb der Umgebung auf + \PName{Anweisung} abgebildet. Die \PName{Anweisung} sollte wie die für + \DescRef{\LabelBase.env.contract} dokumentierte Anweisung genau ein + Argument erwarten. Für eine korrekte Anwendung dieser Option sind + erweiterte Kenntnisse über die interne Funktion von \Package{scrjura} + notwendig. Außerdem können sich die Anforderungen an die \PName{Anweisung} + von Version zu Version noch ändern. Daher wird derzeit empfohlen, die + Option nicht zu verwenden!% + }% + \entry{\OptionVName{Sentence}{Anweisung}}{% + \DescRef{\LabelBase.cmd.Sentence} wird innerhalb der Umgebung auf + \PName{Anweisung} abgebildet. Die \Macro{Anweisung} sollte kein Argument + besitzen. Normalerweise sollte sie den Zähler + \Counter{sentence}\IndexCounter{sentence} mit + \Macro{refstepcounter}\IndexCmd{refstepcounter} erhöhen und dann in + geeigneter Form ausgeben. Dabei ist besonders darauf zu achten, dass keine + unerwünschten Leerzeichen eingebaut werden!% + }% + \entry{\OptionVName{ClauseNumberFormat}{Anweisung}}{% + \PName{Anweisung} legt die Formatierung für Paragraphen-Nummern innerhalb + der Umgebung fest. Es wird eine \PName{Anweisung} mit genau einem Argument + erwartet, der Nummer des Paragraphen. Falls diese Nummer das letzte + Argument einer Kette von Anweisungen ist, so kann diese Kette an + Anweisungen auch direkt angegeben werden.% + }% +\end{desclist} +\begin{Example} + Um beispielsweise die in der Einleitung zu diesem Abschnitt erwähnte + Umgebung für Artikel zu definieren, genügt: +\begin{lstcode} + \DeclareNewJuraEnvironment{Artikel} + [ClauseNumberFormat=Art.]{}{} +\end{lstcode} + Sollen die Artikel unter Verwendung einer \KOMAScript-Klasse mit + Absatzabstand statt Absatzeinzug gesetzt werden, kann +\begin{lstcode} + \DeclareNewJuraEnvironment{Artikel} + [ClauseNumberFormat=Art.~] + {\KOMAoptions{parskip}}{} +\end{lstcode} + verwendet werden. Natürlich wird dann auch bei der Referenzierung + automatisch »Art.« anstelle von »\S« vorangestellt.% + + Angewendet wird die neue Umgebung wie + \DescRef{\LabelBase.env.contract}: +\begin{lstcode} + \begin{Artikel} + \Clause + Die Würde des Menschen ist unantastbar. Sie zu + achten und zu schützen ist Verpflichtung aller + staatlichen Gewalt. + \end{Artikel} +\end{lstcode} +\end{Example}% +\EndIndexGroup + + +\section{Unterstützung verschiedener Sprachen} +\label{sec:scrjura.babel} + +Das Paket \Package{scrjura} wurde in Zusammenarbeit mit einem Anwalt für +Deutsches Recht entwickelt. Daher unterstützte es zunächst auch nur die Sprachen +\PValue{german}, \PValue{ngerman}, \PValue{austrian} und +\PValue{naustrian}. Das Paket wurde aber so entworfen, dass es mit üblichen +Sprachpaketen wie +\Package{babel}\important{\Package{babel}}\IndexPackage{babel} zusammen +arbeitet. Anwender können solche Anpassungen einfach mit +\DescRef{scrbase.cmd.providecaptionname} (siehe +\autoref{sec:scrbase.languageSupport}, +\DescPageRef{scrbase.cmd.providecaptionname}) vornehmen. Sollten Sie über +gesicherte Informationen zu den im juristischen Umfeld gebräuchlichen +Begriffen in anderen Sprachen verfügen, würde sich der Autor über +entsprechende Rückmeldungen freuen. Auf diesem Weg ist inzwischen auch +Unterstützung für \PValue{english}, \PValue{american}, \PValue{british}, +\PValue{canadian}, \PValue{USenglish} und \PValue{UKenglish} hinzu gekommen. + +\begin{Declaration} + \Macro{parname} + \Macro{parshortname} + \Macro{sentencename} + \Macro{sentenceshortname} +\end{Declaration} +Dies sind die sprachabhängigen Bezeichnungen, die von \Package{scrjura} +verwendet werden. Die Bedeutung und die im Deutschen vordefinierten Werte sind +\autoref{tab:scrjura.captionnames} zu entnehmen. Dabei nimmt \Package{scrjura} +die entsprechenden Definitionen innerhalb von +\Macro{begin}\PParameter{document} nur vor, wenn nicht bereits andere Vorgaben +getroffen wurden. Wird \Package{scrjura} mit einer nicht unterstützten Sprache +verwendet, so wird eine entsprechende Fehlermeldung ausgegeben.% +% +\begin{table} + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside} + [{% + Bedeutungen und Voreinstellungen sprachabhängiger Begriffe% + }]{% + Bedeutungen und Voreinstellungen für die sprachabhängigen Begriffe + soweit nicht bereits definiert% + } + [l] + \begin{tabular}[t]{lll} + \toprule + Anweisung & Bedeutung & Voreinstellung \\ + \midrule + \Macro{parname} & Langform »Absatz« & Absatz \\ + \Macro{parshortname} & Kurzform »Absatz« & Abs. \\ + \Macro{sentencename} & Langform »Satz« & Satz \\ + \Macro{sentenceshortname} & Kurzform »Satz« & S. \\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:scrjura.captionnames} +\end{table} +% +\EndIndexGroup + + +\section{Ein ausführliches Beispiel} +\label{sec:scrjura.example} + +Erinnern wir uns an den Brief aus \autoref{cha:scrlttr2}, in dem ein +Vereinsmitglied die überfällige Mitgliederversammlung in Erinnerung bringen +wollte. Damit so etwas möglich ist, muss es auch einen Verein mit einer +Satzung geben, die das vorschreibt. Eine Vereinssatzung ist letztlich eine Art +Vertrag und kann mit \Package{scrjura} gesetzt werden. + +\lstinputcode[{xleftmargin=2em,% + linerange=1-2}]{scrjuraexample.tex}% +Als Klasse wird \Class{scrartcl} verwendet. Da es bei Satzungen eher üblich +ist, die Absätze mit einem Abstand zu setzen, wird Option +\OptionValueRef{maincls}{parskip}{half} verwendet (siehe +\autoref{sec:maincls.parmarkup}, \DescPageRef{maincls.option.parskip}). + +\lstinputcode[{xleftmargin=2em,% + linerange=4-4}]{scrjuraexample.tex}% +Die Satzung soll in Deutsch verfasst werden. Daher wird das Paket +\Package{babel} mit Option \Option{ngerman} geladen. + +\lstinputcode[{xleftmargin=2em,% + linerange={6-7,9-9}}]{scrjuraexample.tex}% +Es werden einige Standardeinstellungen für die Schrift vorgenommen. Dazu kommt +das Paket \Package{textcomp}, das neben einem brauchbaren Euro-Zeichen für +einige Schriften auch ein verbessertes Paragraphenzeichen bereitstellt. + +\lstinputcode[{moretexcs=SelectInputMappings,xleftmargin=2em,% + linerange=11-15}]{scrjuraexample.tex}% +Damit Sonderzeichen und Umlaute direkt eingegeben werden können, wird die +Eingabecodierung ermittelt. Alternativ könnte hier auch das Paket +\Package{inputenc} zum Einsatz kommen. + + +\lstinputcode[{xleftmargin=2em,% + linerange=17-17}]{scrjuraexample.tex}% +Später sollen Listen nicht mit arabischen Zahlen, sondern mit Kleinbuchstaben +nummeriert werden. Dies ist beispielsweise mit dem Paket \Package{enumerate} +möglich. + +\lstinputcode[{moretexcs={useshorthands,defineshorthand},% + xleftmargin=2em,% + linerange=19-27}]{scrjuraexample.tex}% +Nun ist es Zeit für \Package{scrjura}. Mit Option +\OptionValueRef{\LabelBase}{clausemark}{forceboth} wird für Paragraphen das +Setzen von linken und rechten Marken für Kolumnentitel erzwungen. Da +andererseits nicht erwünscht ist, dass \DescRef{maincls.cmd.section} +Kolumnentitel erzeugen, wird Seitenstil \PageStyle{myheadings} verwendet, der +normalerweise keine lebenden Kolumnentitel aktiviert. + +Es soll später auch ein Inhaltsverzeichnis erstellt werden, in das die +Paragraphen ebenfalls aufgenommen werden. Das wird mit +\DescRef{\LabelBase.option.juratotoc} erreicht. Später werden wir feststellen, +dass die voreingestellte Breite für die Paragraphennummern im +Inhaltsverzeichnis nicht genügt. Daher wird mit +\OptionValueRef{\LabelBase}{juratocnumberwidth}{2.5em} für etwas mehr Platz +gesorgt. + +Die Definition der Abkürzungen wurde bereits in +\autoref{sec:scrjura.shorthandexample} erklärt. Im Beispiel wurde sie +übernommen, um später die Eingabe zu vereinfachen. + +\lstinputcode[{xleftmargin=2em,% + linerange=29-29}]{scrjuraexample.tex}% +Es ist Zeit, das eigentliche Dokument zu beginnen. + +\lstinputcode[{xleftmargin=2em,% + linerange=31-35}]{scrjuraexample.tex}% +Wie jedes Dokument hat auch eine Satzung einen Titel. Dieser wird mit den +gewohnten \KOMAScript-Mitteln (siehe \autoref{sec:maincls.titlepage}, ab +\autopageref{sec:maincls.titlepage}) erstellt. + +\lstinputcode[{xleftmargin=2em,% + linerange=37-37}]{scrjuraexample.tex}% +Wie bereits erwähnt, soll ein Inhaltsverzeichnis erstellt werden. + +\lstinputcode[{xleftmargin=2em,% + linerange=39-43}]{scrjuraexample.tex}% +Präambeln sind in Satzungen nicht ungewöhnlich. Hier wird sie mit +\DescRef{maincls.cmd.addsec} gesetzt, damit sie auch einen Eintrag ins +Inhaltsverzeichnis erhält. + +\lstinputcode[{xleftmargin=2em,% + linerange=45-45}]{scrjuraexample.tex}% +Hier wird ein kleiner Trick angewendet. Die einzelnen Artikel der Satzung +sollen nicht mit arabischen Zahlen, sondern mit Großbuchstaben nummeriert +werden -- genau wie dies auch im Anhang eines Artikels mit \Class{scrartcl} +der Fall ist. + +\lstinputcode[{xleftmargin=2em,% + linerange=47-49}]{scrjuraexample.tex}% +Mit dem ersten Artikel beginnt auch der Vertrag. + +\lstinputcode[{xleftmargin=2em,% + linerange=50-59}]{scrjuraexample.tex}% +Der erste Paragraph erhält neben der Nummer auch einen Titel. Dies wird auch +bei den nachfolgenden Paragraphen so sein. + +Der erste Absatz des Vertrags enthält nichts ungewöhnliches. Da es nicht der +einzige Absatz ist, werden bei der Ausgabe jedem Absatz automatisch +Absatznummern voran gestellt werden. Damit dies auch beim ersten Absatz +geschieht, sind allerdings zwei \LaTeX-Läufe notwendig. Da dies für das +Inhaltsverzeichnis ohnehin der Fall sein wird, stört das aber auch nicht +weiter. + +Im zweiten Absatz stehen zwei Sätze. Hier finden zum ersten Mal die +Abkürzungen \texttt{'S} und +\texttt{'.} Anwendung. Mit der ersten wird lediglich eine Satznummer +erzeugt. Mit der zweiten wird nicht nur ein Punkt, sondern nachfolgend +auch eine Satznummer erzeugt. Beide Sätze des Absatzes sind somit nummeriert. + +\lstinputcode[{xleftmargin=2em,% + linerange=60-75}]{scrjuraexample.tex}% +Der zweite Paragraph: Auch dieser enthält wieder mehrere Absätze, die +teilweise auch mehrere Sätze umfassen. Im zweiten Absatz ist darüber hinaus +eine Aufzählung zu finden. Beim letzten Absatz wurde ein Label gesetzt, da auf +diesen später noch verwiesen werden soll. + +\lstinputcode[{xleftmargin=2em,% + linerange=77-84}]{scrjuraexample.tex}% +Der dritte Paragraph enthält als Besonderheit einen Querverweis. In diesem +Fall wird in der Langform mit Paragraph, Absatz und Satz referenziert. Soll +der Satz später doch entfallen, so kann dies global durch Setzen der Option +\OptionValueRef{\LabelBase}{ref}{nosentence} erreicht werden. + +\lstinputcode[{xleftmargin=2em,% + linerange=86-87}]{scrjuraexample.tex}% +Hier gibt es nun einen ersten Spezialfall eines Paragraphen. Dieser Paragraph +war in einer früheren Fassung der Satzung noch enthalten, wurde dann aber +entfernt. Dabei sollen jedoch die nachfolgenden Paragraphen nicht neu +nummeriert werden, sondern ihre alte Nummer behalten. Deshalb wurde die +\DescRef{\LabelBase.cmd.Clause}-Anweisung nicht entfernt, sondern lediglich um +die Eigenschaft \Option{dummy} erweitert. Außerdem kann so auch weiterhin ein +Label für diesen Paragraphen gesetzt werden, obwohl der Paragraph selbst nicht +angezeigt wird. + +\lstinputcode[{xleftmargin=2em,% + linerange=88-92}]{scrjuraexample.tex}% +Es wird ein weiterer Artikel begonnen. Damit Probleme mit der +Absatznummerierung ausgeschlossen sind, wird dazu kurzzeitig die +\DescRef{\LabelBase.env.contract}-Umgebung unterbrochen. + +\lstinputcode[{xleftmargin=2em,% + linerange=93-93}]{scrjuraexample.tex}% +Auch der erste Paragraph im nächsten Artikel wurde gestrichen. + +\lstinputcode[{xleftmargin=2em,% + linerange=95-104}]{scrjuraexample.tex}% +Hier haben wir wieder einen echten Paragraphen. Darin wird zum einen auf einen +der gestrichenen Paragraphen verwiesen. Zum anderen wird auch wieder ein Label +gesetzt. + +\lstinputcode[{xleftmargin=2em,% + linerange=107-112}]{scrjuraexample.tex}% +Hier haben wir den zweiten Spezialfall eines Paragraphen. In diesem Fall wurde +kein Paragraph gestrichen, sondern ein neuer Paragraph eingefügt, ohne dass +nachfolgend Paragraphen neu nummeriert werden. Dazu wurde +\DescRef{\LabelBase.cmd.SubClause} verwendet. Somit erhält dieser Paragraph +die Nummer des vorherigen Paragraphen, die zur Unterscheidung um ein kleines +»a« erweitert wurde. + +\lstinputcode[{xleftmargin=2em,% + linerange=114-134}]{scrjuraexample.tex}% +Die übrigen Paragraphen dieses Artikels enthalten nur bereits bekannte +Anweisungen und keine neuen Besonderheiten. + +\lstinputcode[{xleftmargin=2em,% + linerange=136-150}]{scrjuraexample.tex}% +Es folgt noch ein weiterer Artikel ohne Besonderheiten. + +\lstinputcode[{xleftmargin=2em,% + linerange=152-152}]{scrjuraexample.tex}% +Danach endet das \LaTeX-Dokument, dessen vordere drei Seiten +\autoref{fig:scrjura.example} zeigt.% +% +\begin{figure} + \setcapindent{0pt}% + \iffree{% + {\hfill + \frame{\includegraphics[page=1,width=.482\textwidth,% + height=.49\textheight,keepaspectratio]{scrjuraexample}}\enskip + \frame{\includegraphics[page=2,width=.482\textwidth,% + height=.49\textheight,keepaspectratio]{scrjuraexample}}\par + \smallskip} + \begin{captionbeside}[{% + Beispiel: Die ersten drei Seiten der Beispielsatzung + aus\protect\linebreak + \protect\autoref{sec:scrjura.example}% + }]{% + Die ersten drei Seiten der Beispielsatzung aus + \protect\autoref{sec:scrjura.example}% + }% + [l] + \frame{\includegraphics[page=3,width=.482\textwidth,% + height=.49\textheight,keepaspectratio]{scrjuraexample}}\enskip + \end{captionbeside} + }{% + {\hfill + \frame{\includegraphics[page=1,width=.482\textwidth]{scrjuraexample}}% + \enskip + \frame{\includegraphics[page=2,width=.482\textwidth]{scrjuraexample}}\par + \smallskip} + \begin{captionbeside}[{% + Beispiel: Die ersten drei Seiten der Beispielsatzung + aus\protect\linebreak + \protect\autoref{sec:scrjura.example}% + }]{% + Die ersten drei Seiten der Beispielsatzung aus + \protect\autoref{sec:scrjura.example}% + }% + [l] + \frame{\includegraphics[page=3,width=.482\textwidth]{scrjuraexample}}% + \enskip + \end{captionbeside} + }% + \label{fig:scrjura.example} +\end{figure} + + +\section{Entwicklungsstand} +\label{sec:scrjura.draft} + +Seit \KOMAScript~3.24 teilt \Package{scrjura} die Versionsnummer der Klassen +und anderer wichtiger Pakete. Dennoch sei auf einen wichtigen Punkt +hingewiesen: Bisher ist weder das Zusammenspiel mit vielen anderen Paketen +noch die Funktion der \DescRef{\LabelBase.env.contract}-Umgebung mit allen +möglichen \LaTeX-Umgebungen und Einstellungen verschiedener Klassen und Pakete +getestet. Dies liegt nicht zuletzt daran, dass es sich bei \Package{scrjura} +um ein sehr spezielles Paket handelt, das weit außerhalb der täglichen Praxis +des Autors liegt. Damit ist der Autor diesbezüglich in hohem Maße auf +ausführliche Rückmeldungen durch die Anwender angewiesen.% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-PDF-mode: t +%%% TeX-master: "guide.tex" +%%% End: + +% LocalWords: Seitenstil bedarfsweise Ebenennummer Absatznummerierung +% LocalWords: Paragraphenüberschrift Präambeln renewcommand Gesetzestexte +% LocalWords: Grundgesetzartikel Absatzabstand umbrechbaren Wortabstand +% LocalWords: Beispielsatzung Paragraphensymbol Vordefinierung Absatznummer +% LocalWords: Expandierbarkeit umbrechbarer Satznummer Paragraphenzeichen diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrjuraexample.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrjuraexample.tex new file mode 100644 index 0000000000..c144117cf6 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrjuraexample.tex @@ -0,0 +1,152 @@ +\documentclass[fontsize=12pt,pagesize,parskip=half] + {scrartcl} + +\usepackage[ngerman]{babel} + +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage{charter,helvet} +\usepackage{textcomp} + +\usepackage{selinput} +\SelectInputMappings{ + adieresis={ä}, + germandbls={ß}, +} + +\usepackage{enumerate} + +\usepackage[clausemark=forceboth, + juratotoc, + juratocnumberwidth=2.5em] + {scrjura} +\useshorthands{'} +\defineshorthand{'S}{\Sentence\ignorespaces} +\defineshorthand{'.}{. \Sentence\ignorespaces} + +\pagestyle{myheadings} + +\begin{document} + +\subject{Satzung} +\title{VfVmai} +\subtitle{Verein für Vereinsmaierei mit ai n.e.V.} +\date{11.\,11.\,2011} +\maketitle + +\tableofcontents + +\addsec{Präambel} + +Die Vereinslandschaft in Deutschland ist vielfältig. +Doch leider mussten wir feststellen, dass es dabei oft +am ernsthaften Umgang mit der Ernsthaftigkeit krankt. + +\appendix + +\section{Allgemeines} + +\begin{contract} +\Clause{title={Name, Rechtsform, Sitz des Vereins}} + +Der Verein führt den Namen »Verein für Vereinsmaierei mit +ai n.e.V.« und ist in keinem Vereinsregister eingetragen. + +'S Der Verein ist ein nichtwirtschaftlicher, unnützer +Verein'. Er hat keinen Sitz und muss daher stehen. + +Geschäftsjahr ist vom 31.~März bis zum 1.~April. + +\Clause{title={Zweck des Vereins}} + +'S Der Verein ist zwar sinnlos, aber nicht zwecklos'. +Vielmehr soll er den ernsthaften Umgang mit der +Ernsthaftigkeit auf eine gesunde Basis stellen. + +Zu diesem Zweck kann der Verein +\begin{enumerate}[\qquad a)] +\item in der Nase bohren, +\item Nüsse knacken, +\item am Daumen lutschen. +\end{enumerate} + +Der Verein ist selbstsüchtig und steht dazu. + +Der Verein verfügt über keinerlei Mittel.\label{a:mittel} + +\Clause{title={Vereinsämter}} + +Die Vereinsämter sind Ehrenämter. + +'S Würde der Verein über Mittel verfügen +(siehe \ref{a:mittel}), so könnte er einen +hauptamtlichen Geschäftsführer bestellen'. Ohne +die notwendigen Mittel ist dies nicht möglich. + +\Clause{title={Vereinsmaier},dummy} +\label{p.maier} +\end{contract} + +\section{Mitgliedschaft} + +\begin{contract} +\Clause{title={Mitgliedsarten},dummy} + +\Clause{title={Erwerb der Mitgliedschaft}} + +Die Mitgliedschaft kann jeder zu einem angemessenen +Preis von einem der in \refClause{p.maier} +genannten Vereinsmaier erwerben.\label{a.preis} + +'S Zum Erwerb der Mitgliedschaft ist ein formloser +Antrag erforderlich'. Dieser Antrag ist in grüner +Tinte auf rosa Papier einzureichen. + +Die Mitgliedschaft kann nicht abgelehnt werden. + +\SubClause{title={Ergänzung zu vorstehendem + Paragraphen}} + +'S Mit Abschaffung von \refClause{p.maier} verliert +\ref{a.preis} seine Umsetzbarkeit'. Mitgliedschaften +können ersatzweise vererbt werden. + +\Clause{title={Ende der Mitgliedschaft}} + +'S Die Mitgliedschaft endet mit dem Leben'. Bei nicht +lebenden Mitgliedern endet die Mitgliedschaft nicht. + +\Clause{title={Mitgliederversammlung}} + +Zweimal jährlich findet eine Mitgliederversammlung statt. + +Der Abstand zwischen zwei Mitgliederversammlungen +beträgt höchstens 6~Monate, 1~Woche und 2~Tage. + +Frühestens 6~Monate nach der letzten Mitgliederversammlung +hat die Einladung zur nächsten Mitgliederversammlung zu +erfolgen. + +\SubClause{title={Ergänzung zur Mitgliederversammlung}} + +Die Mitgliederversammlung darf frühstens 2~Wochen nach +letztem Eingang der Einladung abgehalten werden. +\end{contract} + +\section{Gültigkeit} + +\begin{contract} +\Clause{title={In Kraft treten}} + +Diese Satzung tritt am 11.\,11.\,2011 um 11:11~Uhr +in Kraft. + +'S Sollten irgendwelche Bestimmungen dieser Satzung im +Widerspruch zueinander stehen, tritt die Satzung am +11.\,11.\,2011 um 11:11~Uhr und 11~Sekunden wieder +außer Kraft'. Der Verein ist in diesem Fall als +aufgelöst zu betrachten. + +\end{contract} + +\end{document} diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer-notecolumn-example.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer-notecolumn-example.tex new file mode 100644 index 0000000000..512e36dab0 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer-notecolumn-example.tex @@ -0,0 +1,131 @@ +% ====================================================================== +% scrlayer-notecolumn-example.tex +% Copyright (c) Markus Kohm, 2013-2017 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlayer-notecolumn-example.tex +% Copyright (c) Markus Kohm, 2013-2017 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Example file for the chapter about scrlayer-notecolumn +% of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Beispieldatei für das Kapitel über scrlayer-notecolumn +% in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ +\documentclass{scrartcl} +\usepackage[ngerman]{babel} +\usepackage{selinput} +\SelectInputMappings{ + adieresis={ä}, + germandbls={ß}, +} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage{xcolor} + +\usepackage{scrjura} +\setkomafont{contract.Clause}{\bfseries} +\setkeys{contract}{preskip=-\dp\strutbox} + +\usepackage{scrlayer-scrpage} +\usepackage{scrlayer-notecolumn} + +\newlength{\paragraphscolwidth} +\AfterCalculatingTypearea{% + \setlength{\paragraphscolwidth}{.333\textwidth}% + \addtolength{\paragraphscolwidth}{-\marginparsep}% +} +\recalctypearea +\DeclareNewNoteColumn[% + position=\oddsidemargin+1in + +.667\textwidth + +\marginparsep, + width=\paragraphscolwidth, + font=\raggedright\footnotesize + \color{blue} +]{paragraphs} + +\begin{document} + +\title{Kommentar zum GüdaVaS} +\author{Professor R. O. Tenase} +\date{11.\,11.\,2011} +\maketitle +\tableofcontents + +\section{Vormerkung} +Das GüdaVaS ist ohne jeden Zweifel das wichtigste Gesetz, das in +Spaßmaniern in den letzten eintausend Jahren verabschiedet wurde. +Die erste Lesung fand bereits am 11.\,11\,1111 im obersten +spaßmanischen Kongress statt, wurde aber vom damalige Spaßvesier +abgelehnt. Erst nach Umwandlung der spaßmanischen, aberwitzigen Monarchie +in eine repräsentative, witzige Monarchie durch W. Itzbold, den +urkomischen, am 9.\,9.\,1999 war der Weg für dieses Gesetz endlich frei. + +\section{Analyse} + +\begin{addmargin}[0pt]{.333\textwidth} + \makenote[paragraphs]{% + \protect\begin{contract} + \protect\Clause{title={Kein Witz ohne Publikum}} + Ein Witz kann nur dort witzig sein, wo er auf ein Publikum trifft. + \protect\end{contract} + } + Dies ist eine der zentralsten Aussagen des Gesetzes. Sie ist derart + elementar, dass es durchaus angebracht ist, sich vor der Weisheit der + Verfasser zu verbeugen. + + \syncwithnotecolumn[paragraphs]\bigskip + \makenote[paragraphs]{% + \protect\begin{contract} + \protect\Clause{title={Komik der Kultur}} + \setcounter{par}{0}Die Komik eines Witzes kann durch das kulturelle + Umfeld, in dem er erzählt wird, bestimmt sein. + + Die Komik eines Witzes kann durch das kulturelle Umfeld, in dem er + spielt, bestimmt sein. + \protect\end{contract} + } + Die kulturelle Komponente eines Witzes ist tatsächlich nicht zu + vernachlässigen. Ãœber die politische Korrektheit der Nutzung des kulturellen + Umfeldes kann zwar trefflich gestritten werden, nichtsdestotrotz ist die + Treffsicherheit einer solchen Komik im entsprechenden Umfeld frappierend. Auf + der anderen Seite kann ein vermeintlicher Witz im falschen kulturellen + Umfeld auch zu einer echten Gefahr für den Witzeerzähler werden. +\end{addmargin} + +\end{document} diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer-notecolumn.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer-notecolumn.tex new file mode 100644 index 0000000000..36ecd1a7e3 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer-notecolumn.tex @@ -0,0 +1,792 @@ +% ====================================================================== +% scrlayer-notecolumn.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlayer-notecolumn.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrlayer-notecolumn of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel über scrlayer-notecolumn in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrlayer-notecolumn.tex} + [$Date: 2018-02-05 10:50:56 +0100 (Mon, 05 Feb 2018) $ + KOMA-Script guide (chapter:scrlayer-notecolumn)] + +\chapter{Notizspalten mit \Package{scrlayer-notecolumn}} +\labelbase{scrlayer-notecolumn} + +\BeginIndexGroup +\BeginIndex{Package}{scrlayer-notecolumn}% +Bis einschließlich Version~3.11b unterstützte \KOMAScript{} Notizspalten nur +in Form der Marginalienspalte, die mit \DescRef{maincls.cmd.marginpar} und +\DescRef{maincls.cmd.marginline} (siehe \autoref{sec:maincls.marginNotes}, +\DescPageRef{maincls.cmd.marginline}) mit Inhalt versehen werden +können. Jene Art der Randnotizen hat allerdings einige Nachteile: +\begin{itemize} +\item Randnotizen können nur vollständig auf einer einzelnen Seite gesetzt + werden. Seitenumbrüche\textnote{Seitenumbruch} innerhalb von Randnotizen + sind nicht möglich. Dies führt teilweise dazu, dass die Randnotizen bis in + den unteren Rand hineinragen. +\item Randnotizen in der Nähe des Seitenumbruchs können auf die nächste Seite + rutschen und dort im Falle des doppelseitigen Layouts mit alternierenden + Marginalienspalten im falschen Rand\textnote{Zuordnung zum richtigen Rand} + ausgegeben werden. Dieses Problem ist mit dem Zusatzpaket + \Package{mparhack}\IndexPackage{mparhack} oder durch Verwendung von + \Macro{marginnote} aus dem Paket + \Package{marginnote}\IndexPackage{marginnote} (siehe + \cite{package:marginnote}) lösbar. +\item Randnotizen innerhalb von Gleitumgebungen\textnote{Gleitumgebungen} oder + Fußnoten\textnote{Fußnoten} sind nicht möglich. Auch dieses Problem ist mit + \Package{marginnote} lösbar. +\item Es gibt nur eine Marginalienspalte\textnote{mehrere Notizspalten} oder + allenfalls zwei, wenn mit \Macro{reversemarginpar} und + \Macro{normalmarginpar} gearbeitet wird, wobei \Macro{reversemarginpar} bei + doppelseitigen Dokumenten kaum zu gebrauchen ist. +\end{itemize} +Die Verwendung von \Package{marginnote}\IndexPackage{marginnote} führt zu +einem weiteren Problem. Da das Paket keine Kollisionserkennung besitzt, können +sich Randnotizen, die in unmittelbarer Nähe veranlasst wurden, gegenseitig +ganz oder teilweise überdecken. Darüber hinaus führt \Macro{marginnote} je +nach den gewählten Einstellungen von \Package{marginnote} manchmal zu +Veränderungen beim Zeilenabstand des normalen Textes. + +Das Paket \Package{scrlayer-notecolumn} tritt an, all diese Probleme zu +lösen. Dazu stützt es sich auf die Grundfunktionalität von +\hyperref[cha:scrlayer]{\Package{scrlayer}}\IndexPackage{scrlayer}% +\important{\hyperref[cha:scrlayer]{\Package{scrlayer}}}. Damit einher geht +jedoch auch ein Nachteil:\textnote{Achtung!} Notizen können nur auf den Seiten +ausgegeben werden, die einen auf \hyperref[cha:scrlayer]{\Package{scrlayer}} +basierenden Seitenstil besitzen. Dieser Nachteil lässt sich mit Hilfe von +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}}% +\IndexPackage{scrlayer-scrpage} jedoch leicht +auf"|lösen oder sogar in einen Vorteil verwandeln. + + +\section{Hinweise zum Entwicklungsstand} +\seclabel{draft} + +Das Paket wurde ursprünglich zur Demonstration des Potentials von +\hyperref[cha:scrlayer]{\Package{scrlayer}}\important{\hyperref[cha:scrlayer]{\Package{scrlayer}}} +als sogenannter\textnote{Proof of Concept} \emph{Proof of Concept} +entwickelt. Obwohl es sich derzeit noch in einem recht frühen +Entwicklungsstadium befindet, ist die Stabilität von weiten Teilen weniger +eine Frage von \Package{scrlayer-notecolumn} als von +\hyperref[cha:scrlayer]{\Package{scrlayer}}. Dennoch ist davon auszugehen, +dass sich auch in \Package{scrlayer-notecolumn} noch Fehler befinden. Es wird +darum gebeten, diese bei Auf"|finden zu melden. Einige +\emph{Unzulänglichkeiten} des Pakets sind jedoch auch der Minimierung des +Aufwands geschuldet. So können Notizspalten zwar über Seiten hinweg umbrochen +werden, allerdings findet dabei kein neuerlicher Absatzumbruch statt. Dies ist +bei \TeX{} schlicht nicht vorgesehen. + +Da das Paket eher als experimentell\textnote{experimentell} gilt, findet sich +die Anleitung hier im zweiten Teil \iffree{der \KOMAScript-Anleitung}{dieses + Buches}. Dementsprechend richtet sie sich auch in erster Linie an erfahrene +Anwender. Für Anfänger oder Anwender, die sich bereits deutlich auf dem Weg +zum \LaTeX-Experten\textnote{für \LaTeX-Experten} befinden, mag daher einiges +in den nachfolgenden Erklärungen unklar oder gar unverständlich +sein. \iffree{Ich bitte um Nachsicht, dass ich bei experimentellen Paketen den + Aufwand für die Anleitung halbwegs erträglich halten will.}{Sie sollten + jedoch genügen, um einfache Aufgaben mit \Package{scrlayer-notecolumn} lösen + zu können. Gleichzeitig finden Entwickler hoffentlich nützliche Anregungen + für eigene Ideen.} + +\iffalse% Umbruchoptimierung +Es sei auch darauf\textnote{Achtung!} hingewiesen, dass der \KOMAScript-Autor +nicht für die Weiterentwicklung des Pakets garantiert und nur eingeschränkten +Support dafür bietet. Das liegt in der Natur eines Pakets, das nur zu +Demonstrationszwecken geschrieben wurde.% +\fi + +\LoadCommonFile{options}% \section{Frühe oder späte Optionenwahl} + +\LoadCommonFile{textmarkup}% \section{Textauszeichnungen} + +\section{Deklaration neuer Notizspalten} +\seclabel{declaration} + +Beim Laden des Pakets wird bereits automatisch eine Notizspalte namens +\PValue{marginpar} deklariert. Wie der Name andeutet, liegt diese Notizspalte +im Bereich der normalen Marginalienspalte von \DescRef{maincls.cmd.marginpar} +und \DescRef{maincls.cmd.marginline}. Dabei werden auch die Einstellungen +\Macro{reversemarginpar} und \Macro{normalmarginpar} beachtet, allerdings +nicht für die einzelnen Notizen, sondern nur für die gesamten Notizen einer +Seite. Maßgeblich ist dabei die Einstellung, die am Ende der Seite, nämlich +bei der Ausgabe der Notizspalte, gilt. Will man hingegen innerhalb einer Seite +sowohl Notizen links als auch rechts neben dem Haupttext haben, so sollte man +sich eine zweite Notizspalte definieren. + +Die Voreinstellungen für alle neu deklarierten Notizspalten entsprechen im +Übrigen den erwähnten Einstellungen für die vordefinierte +\PValue{marginpar}. % +\iftrue% Umbruchoptimierung +Diese können bei der Deklaration jedoch leicht geändert werden.% +\fi + +Es ist zu beachten\textnote{Achtung!}, dass Notizspalten nur auf Seiten +ausgegeben werden, deren Seitenstil auf dem Paket +\hyperref[cha:scrlayer]{\Package{scrlayer}}\IndexPackage{scrlayer}% +\important{\hyperref[cha:scrlayer]{\Package{scrlayer}}} basiert. Das Paket +\hyperref[cha:scrlayer]{\Package{scrlayer}} wird von +\Package{scrlayer-notecolumn} automatisch geladen und stellt in der +Voreinstellung lediglich den Seitenstil +\PageStyle{empty}\IndexPagestyle{empty} bereit. Werden weitere Seitenstile +benötigt, wird zusätzlich das Paket +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} +empfohlen. + +\begin{Declaration} + \Macro{DeclareNoteColumn}\OParameter{Liste~der~Einstellungen} + \Parameter{Name~der~Notizspalte} + \Macro{DeclareNewNoteColumn}\OParameter{Liste~der~Einstellungen} + \Parameter{Name~der~Notizspalte} + \Macro{ProvideNoteColumn}\OParameter{Liste~der~Einstellungen} + \Parameter{Name~der~Notizspalte} + \Macro{RedeclareNoteColumn}\OParameter{Liste~der~Einstellungen} + \Parameter{Name~der~Notizspalte}% +\end{Declaration} +Mit Hilfe dieser Anweisungen können Notizspalten angelegt werden. Dabei +erzeugt \Macro{DeclareNoteColumn} die Notizspalte ungeachtet der Tatsache, ob +sie bereits existiert, während \Macro{DeclareNewNoteColumn} einen +Fehler ausgibt, falls der \PName{Name der Notizspalte} bereits für eine andere +Notizspalte vergeben ist und \Macro{ProvideNoteColumn} in eben diesem Fall +schlicht nichts tut. Mit \Macro{RedeclareNoteColumn} wiederum kann nur eine +bereits existierende Notiz-Spalte neu konfiguriert werden. + +Bei der Neukonfigurierung bereits existierender Notizspalten mit +\Macro{DeclareNoteColumn} oder \Macro{RedeclareNoteColumn} gehen im Übrigen +die bereits erzeugten Notizen für diese Spalte nicht verloren, sondern bleiben +erhalten. + +\BeginIndex{FontElement}{notecolumn.\PName{Name der Notizspalte}}% +\BeginIndex{FontElement}{notecolumn.marginpar}% +Für neue Notizspalten wird immer ein Element zur Änderung der Schriftattribute +mit \DescRef{\LabelBase.cmd.setkomafont} und \DescRef{\LabelBase.cmd.addtokomafont} angelegt, +falls dieses noch nicht existiert. Als Name für das Element wird +\PValue{notecolumn.}\PName{Name der Notizspalte} verwendet. Dementsprechend +existiert für die vordefinierte Notizspalte \PValue{marginpar} das +Element\textnote{Name des Elements} \PValue{notecolumn.marginpar}. Die +Voreinstellung kann bei der Deklaration einer Notizspalte direkt über die +Option \Option{font} innerhalb der optionalen \PName{Liste der Einstellungen} +angegeben werden.% +\EndIndex{FontElement}{notecolumn.marginpar}% +\EndIndex{FontElement}{notecolumn.\PName{Name der Notizspalte}}% + +Die \PName{Liste der Einstellungen} ist eine durch Komma separierte Liste von +Einstellungen oder Optionen. Die verfügbaren Optionen sind in +\autoref{tab:scrlayer-notecolumn.note.column.options}, +\autopageref{tab:scrlayer-notecolumn.note.column.options} zu +finden. Als\textnote{Voreinstellung: Option \Option{marginpar}} Voreinstellung +ist \Option{marginpar} immer gesetzt, kann aber durch individuelle +Einstellungen überschrieben werden. + +Da die Notizspalten mit Hilfe von \hyperref[cha:scrlayer]{\Package{scrlayer}}% +\important{\hyperref[cha:scrlayer]{\Package{scrlayer}}} definiert werden, wird +auch für jede Notizspalte eine Ebene\Index{Ebenen} angelegt. Als +Name\textnote{Name der Ebene} für diese Ebene wird ebenfalls +\PValue{notecolumn.}\PName{Name der Notizspalte} verwendet. Näheres zu Ebenen +ist \autoref{sec:scrlayer.layers}, ab \autopageref{sec:scrlayer.layers} zu +entnehmen. +% +\begin{Example} + Angenommen, Sie sind Professor für ulkiges Recht und wollen eine Abhandlung + über das neue »Gesetz über die ausgelassene Verbreitung allgemeiner Späße«, + kurz GüdaVaS, schreiben. Der Hauptaugenmerk soll dabei jeweils auf dem + Kommentar zu einzelnen Paragraphen liegen. Sie entscheiden sich für ein + zweispaltiges Layout, wobei der Kommentar in der Hauptspalte enthalten sein + soll und die Paragraphen jeweils klein\iffree{ und in Farbe}{} in einer + schmaleren Notizspalte rechts daneben. +\begin{lstcode} + \documentclass{scrartcl} + \usepackage[ngerman]{babel} + \usepackage{selinput} + \SelectInputMappings{ + adieresis={ä}, + germandbls={ß}, + } + \usepackage[T1]{fontenc} + \usepackage{lmodern} + \usepackage{xcolor} + + \usepackage{scrjura} + \setkomafont{contract.Clause}{\bfseries} + \setkeys{contract}{preskip=-\dp\strutbox} + + \usepackage{scrlayer-scrpage} + \usepackage{scrlayer-notecolumn} + + \newlength{\paragraphscolwidth} + \AfterCalculatingTypearea{% + \setlength{\paragraphscolwidth}{% + .333\textwidth}% + \addtolength{\paragraphscolwidth}{% + -\marginparsep}% + } + \recalctypearea + \DeclareNewNoteColumn[% + position=\oddsidemargin+1in + +.667\textwidth + +\marginparsep, + width=\paragraphscolwidth, + font=\raggedright\footnotesize + \color{blue} + ]{paragraphs} +\end{lstcode} + Es wird ein einseitiger Artikel verfasst. Dazu wird die + Sprache\textnote{Sprache mit \Package{babel}} mit Hilfe + des \Package{babel}\IndexPackage{babel}-Pakets auf Deutsch (neue + Rechtschreibung) festgelegt. Die Eingabecodierung wird mit Hilfe von + \Package{selinput}\IndexPackage{selinput} automatisch bestimmt. Als Schrift + wird Latin Modern in 8-Bit-Codierung verwendet.\iffree{ Für die + Farbeinstellungen wird das Paket \Package{xcolor}\IndexPackage{xcolor} + genutzt.}{} + + Bezüglich des Setzens von Gesetzestexten\textnote{Gesetz mit + \hyperref[cha:scrjura]{\Package{scrjura}}} mit + \hyperref[cha:scrjura]{\Package{scrjura}}\IndexPackage{scrjura} sei auf + \iffree{dessen Anleitung}{\autoref{cha:scrjura}} verwiesen. + + Da ein Seitenstil\textnote{Seitenstil mit + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} mit + Seitenzahl verwendet werden soll, wird das Paket + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + \IndexPackage{scrlayer-scrpage} geladen. Somit können Notizspalten auf allen + Seiten ausgegeben werden. + + Dann wird das Paket \Package{scrlayer-notecolumn}\textnote{Notizspalte mit + \Package{scrlayer-notecolumn}} für die Notizspalten geladen. Die + gewünschte Breite der Notizspalte wird über + \DescRef{typearea-experts.cmd.AfterCalculatingTypearea}% + \IndexPackage{typearea}% + \IndexCmd{AfterCalculatingTypearea} nach jeder etwaigen Neuberechnung des + Satzspiegels\textnote{Satzspiegel mit + \hyperref[cha:typearea]{\Package{typearea}}}% + \IndexPackage{typearea} neu berechnet. Sie soll jeweils ein Drittel der + Satzspiegelbreite betragen, wobei der Abstand zwischen Text und Notizspalte + zu Lasten der Notizspalte geht. % + \iftrue% Umbruchoptimierung + Diese ist also effektiv um \Length{marginparsep}\IndexLength{marginparsep} + schmaler.% + \fi + + Mit dieser Information kann dann die neue Notizspalte definiert werden. Bei + der Festlegung der Position wird ein einfacher Längenausdruck genutzt. Dabei + ist zu beachten, dass \Length{oddsidemargin} nicht der gesamte linke Rand + ist, sondern aus historischen Gründen der linke Rand abzüglich + 1\Unit{inch}. Daher muss dieser Wert noch hinzugezählt werden. + + Damit ist die Deklaration abgeschlossen. Es ist zu beachten, dass die + Notizspalte bisher im Textbereich ausgegeben wird. Die Notizspalte würde + also den Text überschreiben. + +\begin{lstcode} + \begin{document} + + \title{Kommentar zum GüdaVaS} + \author{Professor R. O. Tenase} + \date{11.\,11.~2011} + \maketitle + \tableofcontents + + \section{Vormerkung} + Das GüdaVaS ist ohne jeden Zweifel das wichtigste + Gesetz, das in Spaßmanien in den letzten eintausend + Jahren verabschiedet wurde. Die erste Lesung fand + bereits am 11.\,11.~1111 im obersten spaßmanischen + Kongress statt, wurde aber vom damaligen Spaßvesier + abgelehnt. Erst nach Umwandlung der spaßmanischen, + aberwitzigen Monarchie in eine repräsentative, + witzige Monarchie durch W. Itzbold, + den Urkomischen, am 9.\,9.~1999 war der Weg für + dieses Gesetz endlich frei. +\end{lstcode} +Dadurch,\textnote{Achtung!} dass der Textbereich nicht verkleinert wurde, wird +hier der ganze Vorspann über die Gesamtbreite ausgegeben. Um das Beispiel zu +testen, können Sie vorübergehend +\begin{lstcode} + \end{document} +\end{lstcode} + ergänzen. +\end{Example} +% +Offen blieb in dem Beispiel die Frage, wie der Text für den Kommentar schmaler +gesetzt werden kann. Dies werden Sie bei der Fortsetzung des Beispiels +erfahren.% +% +%\begin{table}% Umbruchoptimierung: Tabelle hinter das Beispiel verschoben +\begin{desclist} + \desccaption{% +% \caption[Mögliche Einstellungen für die Deklaration von Notizspalten]{% + Mögliche Einstellungen für die Deklaration von Notizspalten% +% }% + \label{tab:scrlayer-notecolumn.note.column.options}% + }{% + Mögliche Einstellungen für die Deklaration von Notizspalten + (\emph{Fortsetzung})% + }% +% \begin{desctabular} + \entry{\OptionVName{font}{Schriftattribute}}{% + Einstellung der \PName{Schriftattribute} der Notizspalte mit Hilfe von + \DescRef{\LabelBase.cmd.setkomafont}. Für erlaubte Werte sei auf + \autoref{sec:\LabelBase.textmarkup}, + \DescPageRef{\LabelBase.cmd.setkomafont} verwiesen.\par% + Voreinstellung: \emph{leer}% + }% + \entry{\Option{marginpar}}{% + Position und Breite der Notizspalte werden so eingestellt, dass sie der + Marginalienspalte von \DescRef{maincls.cmd.marginpar} entsprechen. Eine + Umschaltung zwischen \Macro{reversemarginpar}\IndexCmd{reversemarginpar} + und \Macro{normalmarginpar}\IndexCmd{normalmarginpar} wird immer nur am + Ende der Seite bei der Ausgabe der Notizspalte beachtet. Es wird darauf + hingewiesen, dass diese Option kein Argument erwartet oder erlaubt.\par% + Voreinstellung: \emph{ja}% + }% + \entry{\Option{normalmarginpar}}{% + Position und Breite der Notizspalte werden so eingestellt, dass sie der + Marginalienspalte von \DescRef{maincls.cmd.marginpar} bei Einstellung + \Macro{normalmarginpar} entsprechen. Es wird darauf hingewiesen, dass + diese Option kein Argument erwartet oder erlaubt.\par% + Voreinstellung: \emph{nein}% + }% + \entry{\OptionVName{position}{Abstand}}{% + Die Notizspalte wird mit \PName{Abstand} vom linken Rand des Papiers + gesetzt. Dabei sind für \PName{Abstand} auch komplexe Ausdrücke + gestattet, solange diese voll expandierbar sind und zum Zeitpunkt der + Ausgabe der Notizspalte zu einer Länge oder zu einem Längenwert oder + einem Längenausdruck expandieren. Siehe + \cite[Abschnitt~3.5]{manual:eTeX} für weitere Informationen zu + Längenausdrücken.\par% + Voreinstellung: \emph{durch Option \Option{marginpar}}% + }% + \entry{\Option{reversemarginpar}}{% + Position und Breite der Notizspalte werden so eingestellt, dass sie der + Marginalienspalte von \DescRef{maincls.cmd.marginpar} bei Einstellung + \Macro{reversemarginpar} entsprechen. Es wird darauf hingewiesen, dass + diese Option kein Argument erwartet oder erlaubt.\par% + Voreinstellung: \emph{nein}% + }% + \entry{\OptionVName{width}{Breite}}{% + Die Notizspalte wird mit der angegebenen Breite gesetzt. Dabei sind für + \PName{Breite} auch komplexe Ausdrücke gestattet, solange diese voll + expandierbar sind und zum Zeitpunkt der Ausgabe der Notizspalte zu einer + Länge oder einem Längenwert oder einem Längenausdruck expandieren. Siehe + \cite[Abschnitt~3.5]{manual:eTeX} für weitere Informationen zu + Längenausdrücken.\par% + Voreinstellung: \emph{durch Option \Option{marginpar}}% + }% +% \end{desctabular} +%\end{table} +\end{desclist} +\EndIndexGroup + + +\section{Erstellen einer Notiz} +\seclabel{makenote} + +Nachdem eine Notizspalte deklariert wurde, können Notizen für diese Spalte +erstellt werden. Diese Notizen werden allerdings nicht unmittelbar ausgegeben, +sondern zunächst nur in eine Hilfsdatei mit Endung »\File{.slnc}« +geschrieben. Ganz genau werden die Notizen sogar zunächst in die +\File{aux}-Datei geschrieben und erst beim Lesen der \File{aux}-Datei +innerhalb von \Macro{end}\PParameter{document} in die \File{slnc}-Datei +übertragen. Dabei wird gegebenenfalls auch die Einstellung +\Macro{nofiles}\IndexCmd{nofiles} beachtet. Beim nächsten \LaTeX-Lauf wird +diese Hilfsdatei dann Stück für Stück je nach Fortschritt des Dokuments wieder +eingelesen und am Ende der Seite werden die Notizen für die jeweilige Seite +ausgegeben. + +\iffree{}{\pagebreak}% Umbruchoptimierung +Es ist jedoch zu beachten\textnote{Achtung!}, dass Notizspalten nur auf Seiten +ausgegeben werden, deren Seitenstil auf dem Paket +\hyperref[cha:scrlayer]{\Package{scrlayer}}\IndexPackage{scrlayer}% +\important{\hyperref[cha:scrlayer]{\Package{scrlayer}}} basiert. Das Paket +\hyperref[cha:scrlayer]{\Package{scrlayer}} wird von +\Package{scrlayer-notecolumn} automatisch geladen und stellt in der +Voreinstellung lediglich den Seitenstil +\PageStyle{empty}\IndexPagestyle{empty} bereit. Werden weitere Seitenstile +benötigt, wird zusätzlich das Paket +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} +empfohlen. + + +\begin{Declaration} + \Macro{makenote}\OParameter{Name der Notizspalte}\Parameter{Notiz}\\ + \Macro{makenote*}\OParameter{Name der Notizspalte}\Parameter{Notiz} +\end{Declaration} +Mit Hilfe dieser Anweisungen kann eine \PName{Notiz} erstellt werden. Dabei +wird die aktuelle vertikale Position als vertikale Position für den Anfang der +\PName{Notiz} verwendet. Die horizontale Position für die Notiz ergibt sich +aus der definierten Position der Notizspalte. Für die korrekte Funktion ist +das Paket dabei auf \Macro{pdfsavepos}\IndexCmd{pdfsavepos}, +\Macro{pdflastypos}\IndexCmd{pdflastypos} und +\Macro{pdfpageheight}\IndexLength{pdfpageheight} beziehungsweise deren +Entsprechungen bei neueren Lua\TeX-Versionen angewiesen. Ohne diese Befehle +funktioniert \Package{scrlayer-notecolumn} nicht. Dabei wird außerdem davon +ausgegangen, dass die genannten Primitiven exakt die Ergebnisse von PDF\TeX{} +liefern. + +Wird allerdings bei der Ausgabe der \PName{Notiz} eine +Kollision\textnote{Kollisionsauf"|lösung} mit einer früheren Notiz in derselben +Notizspalte erkannt, so wird die \PName{Notiz} bis unter diese frühere Notiz +verschoben. Passt die \PName{Notiz} nicht mehr auf die +Seite\textnote{Seitenumbruch}\Index{Seiten>Umbruch}, so wird sie ganz oder +teilweise auf die nächste Seite umbrochen. + +Für welche Notizspalte die \PName{Notiz} erstellt werden soll, wird über das +optionale Argument \PName{Name der Notizspalte} bestimmt. Ist kein optionales +Argument angegeben, so wird die vordefinierte Notizspalte \PValue{marginpar} +verwendet.% +\begin{Example} + Fügen wir nun dem Beispiel aus dem vorherigen Abschnitt einen kommentierten + Paragraphen hinzu, wobei der Paragraph selbst in der neu definierten + Notizspalte gesetzt werden soll. +\begin{lstcode} + \section{Analyse} + \begin{addmargin}[0pt]{.333\textwidth} + \makenote[paragraphs]{% + \protect\begin{contract} + \protect\Clause{% + title={Kein Witz ohne Publikum}% + } + Ein Witz kann nur dort witzig sein, wo er + auf ein Publikum trifft. + \protect\end{contract}% + } + Dies ist eine der zentralsten Aussagen des + Gesetzes. Sie ist derart elementar, dass es + durchaus angebracht ist, sich vor der Weisheit + der Verfasser zu verbeugen. +\end{lstcode} + Die in \autoref{sec:maincls.lists}, \DescPageRef{maincls.env.addmargin} + dokumentierte Umgebung + \DescRef{maincls.env.addmargin}\IndexEnv{addmargin}\textnote{Spaltenbreite + mit \DescRef{maincls.env.addmargin}} wird genutzt, um den + Haupttext in der Breite um die Spalte für die Paragraphen zu + vermindern. + + Hier ist auch eines der wenigen Probleme bei Verwendung von \Macro{makenote} + zu erkennen. Da das obligatorische Argument in Dateien geschrieben wird, + können Befehle\textnote{zerbrechliche Befehle} innerhalb des Arguments + leider \emph{zerbrechen}. Um das zu verhindern, wird empfohlen, vor alle + Befehle ein \Macro{protect} zu setzen. Anderenfalls kann die Verwendung von + Befehlen innerhalb dieses Arguments zu Fehlermeldungen führen. + + Prinzipiell könnten Sie das Beispiel nun bereits mit +\begin{lstcode} + \end{addmargin} + \end{document} +\end{lstcode} + beenden, wenn Sie ein Ergebnis sehen wollen. +\end{Example}% +Beim Testen des Beispiels, werden Sie feststellen, dass die Gesetzes\-spalte +tiefer hinunter reicht als der Kommentartext. Wenn\textnote{Achtung!} Sie +zwecks Übung einen weiteren Abschnitt mit einem weiteren Paragraphen +hinzufügen, ergibt sich eventuell das Problem, dass der Kommentar nicht +unterhalb des Gesetzestextes, sondern direkt im Anschluss an den bisherigen +Kommentar fortgesetzt wird. Eine Lösung für dieses Problem, werden Sie gleich +kennenlernen. + +Das\ChangedAt{v0.1.2583}{\Package{scrlayer-notecolumn}} im Beispiel erwähnte +Problem mit dem Zerbrechen von Befehlen tritt bei der +Sternvariante\important{\Macro{makenote*}} normalerweise nicht auf. Diese +verwendet \Macro{detokenize}, um die Expansion zu verhindern. Das bedeutet +aber auch, dass man in der \PName{Notiz} keine Befehle verwenden sollte, die +ihre Bedeutung innerhalb des Dokuments verändern.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{syncwithnotecolumn}\OParameter{Name der Notizspalte} +\end{Declaration} +Mit Hilfe dieser Anweisung wird in einer Notizspalte und im Haupttext des +Dokuments je ein +Synchronisierungspunkt\textnote{Synchronisation}\Index{Synchronisation} +erstellt. Wann immer bei der Ausgabe einer Notizspalte oder des Haupttextes +ein solcher Synchronisierungspunkt erreicht wird, wird eine Marke angelegt, +deren Inhalt die aktuelle Seite und die aktuelle vertikale Position ist. + +Parallel zum Erstellen der Synchronisierungspunkte wird ermittelt, ob in +der Notizspalte und im Haupttext beim letzten \LaTeX-Lauf eine Marke angelegt +wurde. Falls das der Fall ist, werden deren Werte miteinander +verglichen. Liegt die Marke der Notizspalte tiefer auf der Seite oder auf +einer späteren Seite, so wird im Haupttext bis zu der Stelle der Notizspalte +vorgerückt. + +In der Regel sollten Synchronisierungspunkte\textnote{Hinweis!} nicht +innerhalb eines Absatzes des Haupttextes, sondern nur zwischen diesen gesetzt +werden. Wird \Macro{syncwithnotecolumn} dennoch innerhalb eines Absatzes +verwendet, so wird der Synchronisierungspunkt im Haupttext tatsächlich erst +nach der aktuellen Zeile eingefügt. In dieser Hinsicht ähnelt +\Macro{syncwithnotecolumn} also beispielsweise +\Macro{vspace}\IndexCmd{vspace}. + +Dadurch, dass Synchronisierungspunkte in den Notizspalten erst beim nächsten +\LaTeX-Lauf\textnote{mehrere \LaTeX-Läufe} erkannt werden, benötigt der +Mechanismus mindestens drei \LaTeX-Läufe. Aus jeder neuen Synchronisierung +können sich außerdem Verschiebungen für spätere Synchronisierungspunkte +ergeben, was wiederum die Notwendigkeit weiterer \LaTeX-Läufe nach sich +zieht. Zu erkennen sind solche Verschiebungen in der Regel an der Meldung: +»\LaTeX{} Warning: Label(s) may have changed. Rerun to get cross-references +right.« Aber auch Meldungen über undefinierte \emph{Labels} können auf die +Notwendigkeit eines weiteren \LaTeX-Laufs hinweisen. + +Wird das optionale Argument nicht angegeben, so wird an seiner Stelle +\PValue{marginpar}, also die vordefinierte Notizspalte +verwendet. Es\textnote{Achtung!} sei an dieser Stelle darauf hingewiesen, dass +ein leeres optionales Argument nicht gleichbedeutend mit dem Weglassen eines +optionalen Arguments ist! + +Es ist nicht\textnote{Achtung!} erlaubt, \Macro{syncwithnotecolumn} innerhalb +einer Notiz selbst, also im obligatorischen Argument von +\Macro{makenote}\IndexCmd{makenote} zu verwenden! Dieser Fehler kann derzeit +nicht abgefangen werden und führt dazu, dass mit jedem \LaTeX-Lauf neue +Verschiebungen auf"|treten, so dass nie ein endgültiger Zustand erreicht +wird. Um zwei oder mehrere Notizspalten miteinander zu synchronisieren, sind +diese stattdessen mit dem Haupttext zu synchronisieren, da dabei auch die +Spalten miteinander synchronisiert werden. Die hierzu empfohlene Anweisung +wird nachfolgend beschrieben.% +% +\begin{Example} + Führen wir nun das obige Beispiel fort, indem wir zunächst einen + Synchronisationspunkt und dann einen weiteren Paragraphen + mit Kommentar hinzufügen: +\begin{lstcode} + \syncwithnotecolumn[paragraphs]\bigskip + \makenote[paragraphs]{% + \protect\begin{contract} + \protect\Clause{title={Komik der Kultur}} + \setcounter{par}{0}% + Die Komik eines Witzes kann durch das + kulturelle Umfeld, in dem er erzählt wird, + bestimmt sein. + + Die Komik eines Witzes kann durch das + kulturelle Umfeld, in dem er spielt, + bestimmt sein. + \protect\end{contract} + } + Die kulturelle Komponente eines Witzes ist + tatsächlich nicht zu vernachlässigen. Über die + politische Korrektheit der Nutzung des + kulturellen Umfeldes kann zwar trefflich + gestritten werden, nichtsdestotrotz ist die + Treffsicherheit einer solchen Komik im + entsprechenden Umfeld frappierend. Auf der + anderen Seite kann ein vermeintlicher Witz im + falschen kulturellen Umfeld auch zu einer + echten Gefahr für den Witzeerzähler werden. +\end{lstcode} + Außer dem Synchronisationspunkt wurde hier auch noch ein vertikaler + Abstand mit \Macro{bigskip} eingefügt, um die einzelnen Paragraphen und ihre + Kommentare besser voneinander abzusetzen. + + Außerdem\textnote{Achtung!} wird hier ein weiterer Punkt, der zu einem + Problem werden kann, sichtbar. Da die Notizspalten mit Boxen arbeiten, die + zusammengebaut und zerlegt werden, kann es bei Zählern\textnote{Zähler in + Notizspalten} innerhalb der Notizspalten teilweise zu Verschiebungen + kommen. Im Beispiel würde daher der erste Absatz nicht mit 1, sondern mit 2 + nummeriert. Dies kann jedoch mit einem beherzten Zurücksetzen des + entsprechenden Zählers leicht korrigiert werden. + + Das Beispiel ist damit fast fertig, was noch fehlt, ist das Ende der + Umgebungen: +\begin{lstcode} + \end{addmargin} + \end{document} +\end{lstcode} + Tatsächlich wären natürlich auch noch die restlichen Paragraphen des + Gesetzes zu kommentieren. Dies sei mir hier jedoch erlassen. +\end{Example}% +Doch halt! Was wäre, wenn in diesem Beispiel der Paragraph nicht mehr auf die +Seiten passen würde? Würde er dann auf der nächsten Seite ausgegeben? Diese +Frage wird im nächsten Abschnitt beantwortet werden. +\EndIndexGroup + + +\begin{Declaration} + \Macro{syncwithnotecolumns}\OParameter{Liste von Notizspalte} +\end{Declaration} +Diese Anweisung führt eine Synchronisierung des Haupttextes mit allen in der +mit Komma separierten \PName{Liste von Notizspalten} durch. Dabei wird der +Haupttext mit der Notizspalte synchronisiert, deren Marke am weitesten hinten +im Dokument steht. Somit werden als Nebeneffekt auch die Notizspalten +untereinander synchronisiert. + +Wird das optionale Argument nicht angegeben oder ist es leer (oder beginnt es +mit \Macro{relax}), so wird mit allen deklarierten Notizspalten +synchronisiert.% +\EndIndexGroup + + +\section{Erzwungene Ausgabe von Notizspalten} +\seclabel{clearnotes} + +Neben der normalen Ausgabe der Notizspalten, wie sie im vorherigen Abschnitt +beschrieben ist, ist es manchmal auch erforderlich, alle aufgesammelten +Notizen, die noch nicht ausgegeben wurden, auszugeben. Das ist insbesondere +dann sinnvoll, wenn längere Notizen dazu führen, dass immer mehr Notizen nach +unten und auf neue Seiten verschoben werden. Ein guter Zeitpunkt für eine +solche erzwungene Ausgabe\Index{Ausgabe>erzwungene} ist beispielsweise das +Ende eines Kapitels oder das Ende des Dokuments. + +\begin{Declaration} + \Macro{clearnotecolumn}\OParameter{Name der Notizspalte} +\end{Declaration} +Mit dieser Anweisung werden alle Notizen einer bestimmen Notizspalte +ausgegeben, die\textnote{anhängige Notizen}\Index{Notiz>anhaengige=anhängige} +bis zum Ende der aktuellen Seite noch nicht ausgegeben sind, aber auf dieser +oder einer vorherigen Seite erstellt wurden. Zur Ausgabe dieser noch +anhängigen Notizen werden nach Bedarf Leerseiten erstellt. Während der Ausgabe +der anhängigen Notizen dieser Notizspalte werden gegebenenfalls auch anhängige +Notizen anderer Notizspalten ausgegeben, jedoch nur so lange, wie dies zur +Ausgabe der anhängigen Notizen der angegebenen Notizspalte notwendig ist. + +Während der Ausgabe der anhängigen Notizen kann es auch geschehen, dass +irrtümlich Notizen\textnote{irrtümliche + Notizen}\Index{Notiz>irrtuemliche=irrtümliche} ausgegeben werden, die im +vorherigen \LaTeX-Lauf auf den Seiten erstellt wurden, die nun durch die +eingefügten Leerseiten ersetzt werden. Dies normalisiert sich in einem der +nächsten \LaTeX-Läufe. Zu erkennen sind solche Verschiebungen in der Regel an +der Meldung: »\LaTeX{} Warning: Label(s) may have changed. Rerun to get +cross-references right.« + +Die Notizspalte, deren anhängige Notizen ausgegeben werden soll, ist über das +optionale Argument, \PName{Name der Notizspalte}, angegeben. Ist kein solches +Argument angegeben, so wird die vordefinierte Notizspalte \PValue{marginpar} +verwendet. + +Dem aufmerksamen Leser\textnote{erzwungene Ausgabe vs. Synchronisation} wird +nicht entgangen sein, dass die erzwungene Ausgabe einer Notizspalte der +Synchronisierung nicht unähnlich ist. Allerdings befindet man sich nach der +erzwungenen Ausgabe im Fall, dass tatsächlich eine Ausgabe stattfindet, am +Anfang der Seite nach der letzten Ausgabe und nicht unmittelbar unterhalb der +letzten Ausgabe. Dafür terminiert die erzwungene Ausgabe in der Regel mit +weniger \LaTeX-Läufen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{clearnotecolumns}\OParameter{Liste von Notizspalten-Namen} +\end{Declaration} +Diese Anweisung arbeitet vergleichbar mit +\DescRef{\LabelBase.cmd.clearnotecolumn}. Allerdings kann hier als optionales +Argument nicht nur eine Notizspalte angegeben werden, sondern es ist eine +durch Komma getrennte Liste mehrerer Namen von Notizspalten erlaubt. Es werden +dann die anhängigen Notizen all dieser Spalten ausgegeben. + +Wurde das optionale Argument nicht angegeben oder ist es leer, so werden die +anhängigen Notizen aller Notizspalten ausgegeben.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{autoclearnotecolumns}{Ein-Aus-Wert} +\end{Declaration} +In der Regel wird man anhängige Notizen immer dann ausgeben lassen, wenn im +Dokument explizit oder implizit -- beispielsweise in Folge von +\DescRef{maincls.cmd.chapter} -- die Anweisung \DescRef{maincls.cmd.clearpage} +ausgeführt wird. Dies ist auch am Ende eines Dokuments innerhalb von +\Macro{end}\PParameter{document} der Fall. Über die Option +\Option{autoclearnotecolumns} kann daher gesteuert werden, ob bei Ausführung +von \DescRef{maincls.cmd.clearpage} automatisch auch +\DescRef{\LabelBase.cmd.clearnotecolumns} ohne Argument ausgeführt werden +soll. + +Da davon ausgegangen wird, dass dies in der Regel erwünscht ist, ist die +Option in der Voreinstellung aktiv. Man kann sie jedoch über die +entsprechenden Werte für einfache Schalter (siehe +\autoref{tab:truefalseswitch} auf \autopageref{tab:truefalseswitch}) jederzeit +aus- und auch wieder einschalten. + +Es ist zu beachten\textnote{Achtung!}, dass im Falle der Deaktivierung der +automatischen Ausgabe anhängiger Notizen am Ende des Dokument Notizen ganz +oder teilweise verloren gehen können. Daher sollte man in diesem Fall vor +\Macro{end}\PParameter{document} sicherheitshalber ein +\DescRef{\LabelBase.cmd.clearnotecolumns} einfügen. + +Damit ist nun auch die Frage nach dem Beispiel im letzten Abschnitt +beantwortet, ob der Paragraph auch komplett ausgegeben würde, wenn er auf die +nächste Seite umbrochen werden müsste. Dies ist in der Voreinstellung +selbstverständlich der Fall. Da es jedoch nach dem Ende der +\DescRef{maincls.env.addmargin}-Umgebung geschehen würde, könnte es eventuell +noch zu Überlappungen durch nachfolgenden Text kommen. Daher wäre es im +Beispiel durchaus sinnvoll, nach der \DescRef{maincls.env.addmargin}-Umgebung +einen weiteren Synchronisationspunkt einzufügen. + +Das Ergebnis des Beispiels ist übrigens in +\autoref{fig:scrlayer-notecolumn.example} zu sehen.\iffree{}{ Dabei wurde + lediglich die Farbeinstellung für die \PValue{paragraphs}-Spalte von Blau in + Grau geändert.} + +\begin{figure} + \KOMAoptions{captions=bottombeside}% + \setcapindent{0pt}% + \begin{captionbeside}[{Eine Ergebnisseite zu dem Beispiel in + \autoref{cha:scrlayer-notecolumn}}]{Eine Ergebnisseite zu dem Beispiel + aus diesem Kapitel\label{fig:scrlayer-notecolumn.example}}[l] + \frame{\includegraphics[width=.667\textwidth,keepaspectratio]% + {scrlayer-notecolumn-example}} + \end{captionbeside} +\end{figure} +\EndIndexGroup +% +\EndIndexGroup + + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "scrlayer-de.tex" +%%% TeX-PDF-mode: t +%%% End: + +% LocalWords: Randnotizen Entwicklungsstadium Notizspalte Notizspalten +% LocalWords: Neukonfigurierung Synchronisierungspunkt marginpar marginline +% LocalWords: Haupttext Demonstrationszwecken Längenausdruck Gesetzestexten +% LocalWords: Längenausdrücken Satzspiegels typearea scrlayer notecolumn +% LocalWords: AfterCalculatingTypearea scrjura scrpage Farbeinstellung +% LocalWords: Sternvariante diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer-scrpage-experts.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer-scrpage-experts.tex new file mode 100644 index 0000000000..1c01b4598e --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer-scrpage-experts.tex @@ -0,0 +1,433 @@ +% ====================================================================== +% scrlayer-scrpage-experts.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlayer-scrpage-experts.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Expert chapter about scrlayer-scrpage of the KOMA-Script guide +% +% ---------------------------------------------------------------------- +% +% Expertenkapitel über scrlayer-scrpage in der KOMA-Script-Anleitung +% +% ============================================================================ + +\KOMAProvidesFile{scrlayer-scrpage-experts.tex}% + [$Date: 2018-01-31 09:21:42 +0100 (Wed, 31 Jan 2018) $ + KOMA-Script guide (chapter: scrlayer-scrpage for experts)] + +\chapter[{Zusätzliche Möglichkeiten von \Package{scrlayer-scrpage}}] +{Zusätzliche Möglichkeiten des + Pakets\ChangedAt{v3.12}{\Package{scrlayer-scrpage}} + \Package{scrlayer-scrpage}} +\labelbase{scrlayer-scrpage-experts} +% +\BeginIndexGroup +\BeginIndex{Package}{scrlayer-scrpage}% +Über die Erklärungen in \autoref{cha:scrlayer-scrpage} von +\autoref{part:forAuthors} diese\iffree{r Anleitung}{s Buches} hinaus bietet +das Paket \Package{scrlayer-scrpage} viele weitere Möglichkeiten. Diese +stellen jedoch Erweiterungen dar, die der durchschnittliche Anwender +nicht zwingend benötigt oder die nur aus Gründen der Kompatibilität zu +\Package{scrpage2} existieren. Ihre Dokumentation hier in +\autoref{part:forExperts} dient der Vertiefung und der Erweiterung des +Wissens. Ihre Beherrschung geht über grundlegende Fähigkeiten hinaus. + +\LoadCommonFile{pagestylemanipulation}% \section{Beeinflussung von definierten Seitenstilen} + +\section{Definition eigener Seitenstil-Paare} +\seclabel{pagestyle.pairs} + +In \autoref{sec:scrlayer-scrpage.predefined.pagestyles} wurden die beiden +Seitenstile \PageStyle{scrheadings} und \PageStyle{plain.scrheadings} +vorgestellt. Diese bilden quasi ein Paar, bei dem \PageStyle{scrheadings} als +Haupt-Seitenstil mit Kolumnentitel vorgesehen ist, während +\PageStyle{plain.scrheadings} ein dazu passender \PageStyle{plain}-Seitenstil +ohne Kolumnentitel aber üblicherweise mit Paginierung, also mit Seitenzahl +ist. Neben der Konfiguration dieses vordefinierten Paares bietet +\Package{scrlayer-scrpage} auch die Möglichkeit, zusätzliche Paare zu +definieren. Der Name des Haupt-Seitenstils, beispielsweise +\PageStyle{scrheadings}, dient dabei quasi auch als Name des Seitenstil-Paares. + +\iffree{Die allermeisten Anwender werden in der Regel mit dem einen + vordefinierten Seitenstil-Paar \PageStyle{scrheadings} auskommen. Die in + diesem Abschnitt dokumentierten Anweisungen sind daher eher Ergänzungen für + besondere Fälle. Da mir während des Abfassens dieser Anleitung keine + handlichen Anwendungsbeispiele eingefallen sind, gibt es auch keine + ausführlichen Beispiele. Sollte mir im Support einmal eine besonders schöne + Anwendung begegnen, werde ich solche aber in zukünftigen Fassungen gerne + aufgreifen. Ich bin jedoch gleichzeitig sicher, dass sich all diese Fälle + auch mit dem einen Paar \PageStyle{scrheadings} lösen lassen.}{} + +\begin{Declaration} + \Macro{defpairofpagestyles}\OParameter{Eltern-Paar} + \Parameter{Name}\Parameter{Definition} + \Macro{newpairofpagestyles}\OParameter{Eltern-Paar} + \Parameter{Name}\Parameter{Definition} + \Macro{renewpairofpagestyles}\OParameter{Eltern-Paar} + \Parameter{Name}\Parameter{Definition} + \Macro{providepairofpagestyles}\OParameter{Eltern-Paar} + \Parameter{Name}\Parameter{Definition} +\end{Declaration} +Mit diesen Anweisungen können Paare von Seitenstilen vergleichbar zu +\PageStyle{scrheadings} und \PageStyle{plain.scrheadings} definiert +werden. Dabei ist \PName{Name} der Name des zu \PageStyle{scrheadings} +vergleichbaren Hauptseitenstils, der für die Verwendung mit Kolumnentiteln +ausgelegt ist. Für den Namen des zugehörigen \PageStyle{plain}-Seitenstil wird +\PName{Name} automatisch \PValue{plain.} vorangestellt. \PName{Name} ist also +gleichzeitig der Name des Paares und des Hauptseitenstils dieses Paares, während +\PValue{plain.}\PName{Name} der Name des \PageStyle{plain}-Seitenstils dieses +Paares ist. + +Ist das optionale Argument \PName{Eltern-Paar} angegeben, so ist dies der Name +eines Seitenstil-Paares, mit dessen Einstellungen das neue Paar initialisiert +werden soll. Das neue Paar erbt also quasi die Konfiguration des +\PName{Eltern-Paar}s. + +{\setlength{\emergencystretch}{1em}% +Während in \autoref{sec:scrlayer-scrpage.predefined.pagestyles} der Eindruck +entstanden sein mag, dass sich die dort erläuterten Anweisungen nur auf +\PageStyle{scrheadings} und \PageStyle{plain.scrheadings} beziehen, gilt das +tatsächlich nur, solange diese beiden Seitenstile das einzige Seitenstil-Paar +darstellen. Sobald es mehrere Seitenstil-Paare gibt, beziehen sich +\DescRef{scrlayer-scrpage.cmd.lehead}, \DescRef{scrlayer-scrpage.cmd.cehead}, +\DescRef{scrlayer-scrpage.cmd.rehead}, \DescRef{scrlayer-scrpage.cmd.lohead}, +\DescRef{scrlayer-scrpage.cmd.cohead}, \DescRef{scrlayer-scrpage.cmd.rohead}, +\DescRef{scrlayer-scrpage.cmd.lefoot}, \DescRef{scrlayer-scrpage.cmd.cefoot}, +\DescRef{scrlayer-scrpage.cmd.refoot}, \DescRef{scrlayer-scrpage.cmd.lofoot}, +\DescRef{scrlayer-scrpage.cmd.cofoot}, \DescRef{scrlayer-scrpage.cmd.rofoot}, +\DescRef{scrlayer-scrpage.cmd.ihead}, \DescRef{scrlayer-scrpage.cmd.chead}, +\DescRef{scrlayer-scrpage.cmd.ohead}, \DescRef{scrlayer-scrpage.cmd.ifoot}, +\DescRef{scrlayer-scrpage.cmd.cfoot} und \DescRef{scrlayer-scrpage.cmd.ofoot} +auf das zuletzt aktive Paar.\par} + +{\setlength{\emergencystretch}{1em}% + Neben den achtzehn vorgenannten sind auch die drei nachfolgend + dokumentierten Anweisungen + \DescRef{scrlayer-scrpage-experts.cmd.clearmainofpairofpagestyles}, + \DescRef{scrlayer-scrpage-experts.cmd.clearplainofpairofpagestyles} und + \DescRef{scrlayer-scrpage-experts.cmd.clearpairofpagestyles} für die + Verwendung im letzten Parameter, \PName{Definition}, gedacht. In diesem Fall + stellen sie eine Art Grundkonfiguration des Seitenstil-Paares dar, die immer + dann ausgeführt wird, wenn das Seitenstil-Paar aktiviert wird. Ein + Seitenstil-Paar wird aktiviert, indem einer der beiden Seitenstile des + Paares aktiviert wird. Dies geschieht in der Regel mit Hilfe von + \DescRef{maincls.cmd.pagestyle}\IndexCmd{pagestyle}.\par} + +Es sei darauf hingewiesen, dass die Anweisungen aus +\autoref{sec:scrlayer-scrpage.pagestyle.content} ab +\autopageref{sec:scrlayer-scrpage.pagestyle.content} ohnehin allgemeiner Natur +sind und für alle mit \PageStyle{scrlayer-scrpage} definierten Seitenstile +gelten. + +Während\textnote{Unterschiede} \Macro{defpairofpagestyles} das Seitenstil-Paar +unabhängig davon, ob entsprechende Seitenstile bereits existieren, definiert, +tun \Macro{newpairofpagestyles} und \Macro{providepairofpagestyles} dies nur, +wenn die Seitenstile noch nicht definiert sind. Ist mindestens einer der +beiden Seitenstile des Paares bereits definiert, so wird die neuerliche +Definition bei \Macro{providepairofpagestyles} ignoriert, wohingegen sie bei +\Macro{newpairofpagestyles} zu einem Fehler führt. Für die Umdefinierung +bereits existierender Paare kann \Macro{renewpairofpagestyles} verwendet +werden. Hier wird ein Fehler gemeldet, wenn einer der beiden Seitenstile oder +beide Seitenstile des Paares noch nicht existieren.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{clearmainofpairofpagestyles} + \Macro{clearplainofpairofpagestyles} + \Macro{clearpairofpagestyles} +\end{Declaration} +Mit \Macro{clearmainofpairofpagestyles} wird der Hauptseitenstil +des zuletzt aktivierten Seitenstil-Paares leer konfiguriert. Dagegen wird mit +der Anweisung \Macro{clearplainofpairofpagestyles} der +\PageStyle{plain}-Seitenstil des entsprechenden Seitenstil-Paares leer +konfiguriert. Anweisung \Macro{clearpairofpagestyles} konfiguriert schließlich +beide Seitenstile des entsprechenden Paares als leer. + +Es ist jedoch zu beachten\textnote{Achtung!}, dass keine dieser Anweisungen +die Definitionen aus dem Parameter \PName{Definition}, der bei der Definition +des Seitenstil-Paares angegeben wurde (siehe oben), entfernt. Bei der erneuten +Auswahl eines Seitenstils des Paares werden jene Einstellungen also erneut +ausgeführt! + +Die Anweisungen können ebenfalls innerhalb von \PName{Definition} bei der +zuvor erklärten Definition eines Seitenstil-Paares verwendet werden. Sie +können aber auch jederzeit außerhalb der Definition eines Seitenstil-Paares +verwendet werden. In diesem Fall beziehen sie sich auf das zuletzt aktivierte +Paar.% +\EndIndexGroup + + +\section{Definition komplexer Seitenstile} +\seclabel{pagestyle.experts} + +Neben den vordefinierten Seitenstilen bietet \Package{scrlayer-scrpage} auch +noch eine eher grundlegende Schnittstelle zur Definition von Seitenstilen. Die +bisher erläuterten Konzepte greifen bei der Implementierung ebenso wie die von +\autoref{sec:\LabelBase.pagestyle.triple} auf diese Möglichkeit +zurück. Aufgrund ihrer hohen Komplexität wird sie jedoch nur erfahrenen +Anwendern empfohlen. Weniger erfahrene Anwender können mit den vorgenannten +Möglichkeiten bereits nahezu alles erreichen, was auch mit dieser +grundlegenden Schnittstelle möglich ist. + +\begin{Declaration} + \Macro{defpagestyle}\Parameter{Name} + \Parameter{Kopfdefinition} + \Parameter{Fußdefinition} + \Macro{newpagestyle}\Parameter{Name} + \Parameter{Kopfdefinition} + \Parameter{Fußdefinition} + \Macro{providepagestyle}\Parameter{Name} + \Parameter{Kopfdefinition} + \Parameter{Fußdefinition} + \Macro{renewpagestyle}\Parameter{Name} + \Parameter{Kopfdefinition} + \Parameter{Fußdefinition} +\end{Declaration} +Diese Anweisungen dienen der Definition eines einzelnen Seitenstils mit +maximaler Flexibilität. Dabei ist \PName{Name} der Name des Seitenstils, der +definiert werden soll. + +Die beiden Parameter \PName{Kopfdefinition} und \PName{Fußdefinition} haben +den identischen Aufbau: +\begin{flushleft} +\begin{addmargin}{1em}\raggedright\small + \texttt{(\PName{Länge der oberen Linie},\PName{Dicke der oberen Linie})\%\\ + \Parameter{Definition für linke Seiten im doppelseitigen Layout}\%\\ + \Parameter{Definition für rechte Seiten im doppelseitigen Layout}\%\\ + \Parameter{Definition für Seiten im einseitigen Layout}\%\\ + (\PName{Länge der unteren Linie},\PName{Dicke der unteren Linie})% + } +\end{addmargin} +\end{flushleft} +Dabei sind die Argumente in den runden Klammern optional, das heißt, sie +können zusammen mit den Klammern weggelassen +werden. In\important[i]{\DescRef{scrlayer-scrpage.option.headtopline}\\ + \DescRef{scrlayer-scrpage.option.headsepline}\\ + \DescRef{scrlayer-scrpage.option.footsepline}\\ + \DescRef{scrlayer-scrpage.option.footbotline}} diesem Fall richten sich die +Längen und Dicken je nach Linie nach den Angaben der Optionen +\DescRef{scrlayer-scrpage.option.headtopline}\IndexOption{headtopline}, +\DescRef{scrlayer-scrpage.option.headsepline}\IndexOption{headsepline}, +\DescRef{scrlayer-scrpage.option.footsepline}\IndexOption{footsepline} und +\DescRef{scrlayer-scrpage.option.footbotline}\IndexOption{footbotline} (siehe +\autoref{sec:scrlayer-scrpage.pagestyle.content}, +\DescPageRef{scrlayer-scrpage.option.headtopline}). + +Die drei Argumente mit den Definitionen sind obligatorisch und werden je nach +Seite und Layouteinstellung verwendet. Der Inhalt der Definitionen ist frei +wählbar. Für Seitenstile mit Kolumnentitel wird jedoch die Verwendung von +\DescRef{scrlayer-scrpage.cmd.headmark}, +\DescRef{scrlayer-scrpage.cmd.leftmark} oder +\DescRef{scrlayer-scrpage.cmd.rightmark} innerhalb der Definitionen +empfohlen. Keinesfalls sollte man hier direkt eine Gliederungsnummer oder +einen Überschriftentext als Kolumnentitel angeben. Aufgrund des asynchronen +Seitenaufbaus von \LaTeX{} kann sonst die falsche Nummer oder der falsche Text +im Seitenkopf oder Seitenfuß erscheinen. + +Bei\textnote{Unterschiede} \Macro{defpagestyle} wird der Seitenstil unabhängig +davon, ob er bereits existiert oder nicht, neu definiert. Demgegenüber meldet +\Macro{newpagestyle} einen Fehler, wenn bereits ein Seitenstil gleichen Namens +existiert. Im Unterschied dazu wird die Definition bei +\Macro{providepagestyle} ignoriert, falls der \PName{Name} bereits für einen +Seitenstil verwendet wurde. Umgekehrt kann mit \Macro{renewpagestyle} nur ein +bereits vorhandener Seitenstil umdefiniert werden. Für einen neuen Namen +meldet diese Anweisung dagegen einen Fehler. + +Alle vier Anweisungen basieren auf +\DescRef{scrlayer.cmd.DeclarePageStyleByLayers}% +\IndexCmd{DeclarePageStyleByLayers} des Pakets +\hyperref[cha:scrlayer]{\Package{scrlayer}}\IndexPackage{scrlayer}. Die dabei +für einen Seitenstil \PName{Name} definierten Ebenen sind in +\autoref{tab:scrlayer-scrpage-experts.layersperstyle} aufgeführt. Näheres zu +Ebenen und Ebenen-Seitenstilen ist \autoref{cha:scrlayer} ab +\autopageref{cha:scrlayer} zu entnehmen.% + +\begin{table} +% \KOMAoptions{captions=topbeside} +% \setcapindent{0pt} +% \begin{captionbeside} + \caption + [{Von \Package{scrlayer-scrpage} zu einem Seitenstil definierte + Ebenen}] + {Die von \Package{scrlayer-scrpage} zu einem Seitenstil \PName{Name} + definierten Ebenen\label{tab:scrlayer-scrpage-experts.layersperstyle}} +% [l] + \begin{tabular}{ll} + \toprule + Name der Ebene & Bedeutung der Ebene \\ + \midrule + \PName{Name}\PValue{.head.above.line} & die Linie über dem Kopf\\ + \PName{Name}\PValue{.head.odd} & der Kopf von rechten Seiten im + doppelseitigen Layout\\ + \PName{Name}\PValue{.head.even} & der Kopf von linken Seiten im + doppelseitigen Layout\\ + \PName{Name}\PValue{.head.oneside} & der Kopf von Seiten im + einseitigen Layout\\ + \PName{Name}\PValue{.head.below.line} & die Linie unter dem Kopf\\ + \PName{Name}\PValue{.foot.above.line} & die Linie über dem Fuß\\ + \PName{Name}\PValue{.foot.odd} & der Fuß von rechten Seiten im + doppelseitigen Layout\\ + \PName{Name}\PValue{.foot.even} & der Fuß von linken Seiten im + doppelseitigen Layout\\ + \PName{Name}\PValue{.foot.oneside} & der Fuß von Seiten im + einseitigen Layout\\ + \PName{Name}\PValue{.foot.below.line} & die Linie unter dem Fuß\\ + \bottomrule + \end{tabular} +% \end{captionbeside} +\end{table} + +\begin{Example} + Angenommen, Sie wollen den gesamten Kopf des Seitenstil + \PageStyle{scrheadings} mit einer Farbe hinterlegen. Aufgrund der Einleitung + zu diesem Kapitel und \autoref{tab:scrlayer-scrpage-experts.layersperstyle}, + wissen Sie, dass \PageStyle{scrheadings} ein Ebenen-Seitenstil + ist, der unter anderem aus den Ebenen \PValue{scrheadings.head.oneside}, + \PValue{scrheadings.head.odd} und \PValue{scrheadings.head.even} + besteht. Sie definieren nun drei weitere Ebenen für deren Hintergrund und + fügen diese am Anfang des Seitenstils ein: +\begin{lstcode} + \documentclass{scrartcl} + \usepackage[automark]{scrlayer-scrpage} + \usepackage{xcolor} + \usepackage{blindtext} + \DeclareLayer[clone=scrheadings.head.oneside, + contents={% + \color{yellow}% + \rule[-\dp\strutbox]% + {\layerwidth}{\layerheight}% + }% + ]{scrheadings.head.oneside.background} + \DeclareLayer[clone=scrheadings.head.odd, + contents={% + \color{yellow}% + \rule[-\dp\strutbox]% + {\layerwidth}{\layerheight}% + }% + ]{scrheadings.head.odd.background} + \DeclareLayer[clone=scrheadings.head.even, + contents={% + \color{yellow}% + \rule[-\dp\strutbox]% + {\layerwidth}{\layerheight}% + }% + ]{scrheadings.head.even.background} + \AddLayersAtBeginOfPageStyle{scrheadings}{% + scrheadings.head.oneside.background,% + scrheadings.head.odd.background,% + scrheadings.head.even.background% + } + \pagestyle{scrheadings} + \begin{document} + \blinddocument + \end{document} +\end{lstcode} + Wie Sie sehen, wurden in dem Beispiel drei Ebenen verwendet, damit Position + und Größe der Hintergrund-Ebenen per Option + \Option{clone}\important{\Option{clone}} einfach jeweils von der Ebene für + den Kopf kopiert werden konnten. Das ist einfacher, als nur eine + Hintergrundebene zu verwenden und für diese die Position umständlich + dynamisch zu bestimmen. + + Der farbige Hintergrund selbst wurde in diesem Beispiel mit einer + \Macro{rule}-Anweisung gesetzt. Für die Größe wurde dabei mit + \DescRef{scrlayer.cmd.layerwidth}\IndexCmd{layerwidth}% + \important[i]{\DescRef{scrlayer.cmd.layerwidth}\\ + \DescRef{scrlayer.cmd.layerheight}} und + \DescRef{scrlayer.cmd.layerheight}\IndexCmd{layerheight} die aktuelle Breite + und Höhe der Ebene verwendet. Diese wurde per optionalem Argument um die + Höhe der Unterlängen \Macro{dp}\Macro{strutbox} nach unten verschoben. +\end{Example} +% +Statt wie im Beispiel für die Hintergrundfarbe neue Ebenen hinzuzufügen, hätte +man das Problem übrigens auch mit \Macro{colorbox} und +\DescRef{scrlayer-scrpage.cmd.chead} lösen können. Es wird empfohlen, eine +entsprechende Lösung als Übung zu erarbeiten. Ebenso +hätte man die Hintergrundebenen auch einzeln und jeweils unmittelbar vor der +entsprechenden Inhaltsebene einfügen können. Eine entsprechende Umsetzung +bietet sich als weitere Übung an.% +\EndIndexGroup + +\section{Definition einfacher Seitenstile mit dreigeteiltem Kopf und Fuß} +\seclabel{pagestyle.triple} + +\LoadNonFree{scrlayer-scrpage-experts}{1} + +\section{Das obsolete Erbe von \Package{scrpage2}} +\seclabel{obsolete} + +\begin{Explain} + Das Paket \Package{scrlayer-scrpage} enthält auch noch einige Altlasten, die + von \Package{scrpage2} stammen und nur existieren, um möglichst kompatibel + mit jenem Paket zu sein. Kenntnisse dazu benötigen Anwender nur, wenn sie + ein altes Dokument, das noch auf \Package{scrpage2} basiert, bearbeiten + wollen. Für\textnote{Achtung!} neue Dokumente sollten die hier dokumentieren + Dinge dagegen nicht verwendet werden! +\end{Explain} + +\begin{Declaration} + \OptionVName{hmode}{Ein-Aus-Wert} +\end{Declaration} +Bei \Package{scrpage2} wurden die Köpfe und Füße der Seitenstile noch +grundsätzlich im horizontalen Modus ausgegeben. Bei \Package{scrlayer-scrpage} +wird hingegen in der Voreinstellung erst durch entsprechende Ausgaben selbst +in den horizontalen Modus geschaltet. Aktiviert man jedoch Option +\Option{hmode} verhält sich \Package{scrlayer-scrpage} auch in dieser Hinsicht +kompatibel mit \Package{scrpage2} und schaltet bereits vor der Ausgabe in den +horizontalen Modus. Dies kann Auswirkungen sowohl auf die Verarbeitung von +Leerzeichen am Anfang der Ausgabe als auch auf die vertikale Ausrichtung +haben. + +Die Option versteht die Standardwerte für einfache Schalter, die in +\autoref{tab:truefalseswitch} auf \autopageref{tab:truefalseswitch} angegeben +sind. In der Voreinstellung ist der Schalter deaktiviert.% +\EndIndexGroup + +\LoadNonFree{scrlayer-scrpage-experts}{0} +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "../guide" +%%% End: + + +% LocalWords: Hintergrundebene Seitenkopf Seitenstils Kopfelement Seitenfuß +% LocalWords: Seitenstile Seitenstilen diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer-scrpage.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer-scrpage.tex new file mode 100644 index 0000000000..2a2adf3ad8 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer-scrpage.tex @@ -0,0 +1,1344 @@ +% ====================================================================== +% scrlayer-scrpage.tex +% Copyright (c) Markus Kohm, 2014-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlayer-scrpage.tex +% Copyright (c) Markus Kohm, 2014-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrlayer-scrpage of the KOMA-Script guide +% +% ---------------------------------------------------------------------- +% +% Kapitel über scrlayer-scrpage in der KOMA-Script-Anleitung +% +% ============================================================================ + +\KOMAProvidesFile{scrlayer-scrpage.tex}% + [$Date: 2018-02-13 09:46:41 +0100 (Tue, 13 Feb 2018) $ + KOMA-Script guide (chapter:scrlayer-scrpage)] + +\chapter[{Kopf- und Fußzeilen mit \Package{scrlayer-scrpage}}] + {Kopf-\ChangedAt{v3.12}{\Package{scrlayer-scrpage}} und Fußzeilen mit + \Package{scrlayer-scrpage}} +\labelbase{scrlayer-scrpage} +% +\BeginIndexGroup +\BeginIndex{Package}{scrlayer-scrpage}% +\begin{Explain} + Bis \KOMAScript~3.11b war das Paket + \Package{scrpage2}\IndexPackage[indexmain]{scrpage2}% + \important{\Package{scrpage2}} das Mittel der Wahl, wenn es darum ging, den + Kopf und den Fuß der Seite über das hinaus zu verändern, was die + \KOMAScript-Klassen mit den Seitenstilen \PageStyle{headings}, + \PageStyle{myheadings}, \PageStyle{plain} und \PageStyle{empty} boten. + \iffalse% + Bis 2001 gab es dafür auch noch das Paket + \Package{scrpage}\IndexPackage{scrpage}, das aber seit 2013 nicht mehr mit + \KOMAScript{} zusammen verteilt wird.\par + \fi% + Seit 2013 ist das Paket \hyperref[cha:scrlayer]{\Package{scrlayer}}% + \important{\hyperref[cha:scrlayer]{\Package{scrlayer}}}% + \IndexPackage{scrlayer} als neuer, grundlegender Baustein in \KOMAScript{} + enthalten. Dieses Paket bietet ein Ebenenmodell sowie ein darauf basierendes + Seitenstil-Modell an. Für die direkte Verwendung durch den + durchschnittlichen Anwender ist die Schnittstelle dieses Pakets jedoch fast + schon zu flexibel und damit einhergehend auch nicht leicht zu + durchschauen. Näheres zu dieser Schnittstelle ist \autoref{cha:scrlayer} in + \autoref{part:forExperts} zu entnehmen. Einige wenige Möglichkeiten, die + eigentlich zu \Package{scrlayer} gehören und deshalb in jenem Kapitel noch + einmal aufgegriffen werden, sind jedoch auch in diesem Kapitel dokumentiert, + da sie für die Verwendung von \Package{scrlayer-scrpage} ebenfalls benötigt + werden. + + Viele Anwender sind bereits mit den Anweisungen aus \Package{scrpage2} + vertraut. Deshalb wurde mit \Package{scrlayer-scrpage} ein Paket geschaffen, + das basierend auf \Package{scrlayer} eine mit \Package{scrpage2} weitgehend + kompatible und gleichzeitig stark erweiterte Anwender-Schnittstelle + bereitstellt. Wer bereits mit \Package{scrpage2} vertraut ist und dort keine + unsauberen Rückgriffe auf interne Anweisungen getätigt hat, kann daher in + der Regel \Package{scrpage2} recht einfach durch \Package{scrlayer-scrpage} + ersetzen. Das gilt mit der genannten Einschränkung auch für die meisten + Beispiele in \LaTeX-Büchern oder im Internet.% +\iffalse +\iffree{}{\par Mit Erscheinen dieses Buches wird \Package{scrlayer-scrpage} für + \KOMAScript{} das empfohlene Mittel der Wahl, wenn es um Änderungen der + vordefinierten Seitenstile geht. Die Verwendung des als veraltet + anzusehenden Pakets \Package{scrpage2}\IndexPackage[indexmain]{scrpage2}% + \important{\Package{scrpage2}} wird hingegen nicht mehr empfohlen. Daher ist + die Anleitung zu diesem veralteten Paket auch nicht mehr Bestandteil dieses + Buches. Wenn Sie auf ältere Dokumente stoßen, die noch \Package{scrpage2} + verwenden, sollten Sie eine Umstellung auf \Package{scrlayer-scrpage} + erwägen. Für alle Fälle finden Sie in diesem Kapitel auch einige Hinweise + zur Verwendung von \Package{scrpage2}.} +\fi +\end{Explain} + +Neben \Package{scrlayer-scrpage}\iffree{ oder \Package{scrpage2}}{} wäre auch +\Package{fancyhdr} (siehe \cite{package:fancyhdr}) grundsätzlich geeignet, um +Kopf und Fuß der Seiten zu konfigurieren. Allerdings unterstützt dieses Paket +diverse Möglichkeiten von \KOMAScript{}, angefangen von Änderungen der Schrift +über das Elemente-Modell (siehe \DescRef{\LabelBase.cmd.setkomafont}, +\DescRef{\LabelBase.cmd.addtokomafont} und +\DescRef{\LabelBase.cmd.usekomafont} in +\autoref{sec:scrlayer-scrpage.textmarkup}, ab +\DescPageRef{\LabelBase.cmd.setkomafont}) bis hin zum konfigurierbaren Format +der Gliederungsnummern in Kolumnentiteln (siehe Option +\DescRef{maincls.option.numbers} und beispielsweise Anweisung +\DescRef{\LabelBase.cmd.chaptermarkformat} in \autoref{sec:maincls.structure}, +\DescPageRef{maincls.option.numbers} und +\DescPageRef{maincls.cmd.chaptermarkformat}), nicht. Daher wird für die +Verwendung mit den \KOMAScript-Klassen das neue Paket +\Package{scrlayer-scrpage} empfohlen. \iffree{Bei Problemen damit kann auch + auf \Package{scrpage2} zurückgegriffen werden.}{\ignorespaces} Natürlich +kann \Package{scrlayer-scrpage} auch mit anderen Klassen, beispielsweise den +Standardklassen verwendet werden. + +Über die in diesem Kapitel erklärten Möglichkeiten hinaus bietet das Paket +\Package{scrlayer-scrpage} weiteres, das jedoch nur für einige, wenige +Anwender von Interesse sein dürfte und daher in +\autoref{cha:scrlayer-scrpage-experts} von \autoref{part:forExperts} ab +\autopageref{cha:scrlayer-scrpage-experts} ausgeführt wird. Dennoch: Falls die +hier in \autoref{part:forAuthors} dokumentierten Möglichkeiten für Sie nicht +ausreichen, sei Ihnen auch jenes Kapitel nahegelegt. + +\LoadCommonFile{options} % \section{Frühe oder späte Optionenwahl} + +\LoadCommonFile{headfootheight} % \section{Höhe von Kopf und Fuß} + +\LoadCommonFile{textmarkup} % \section{Textauszeichnung} + +\section{Verwendung vordefinierter Seitenstile} +\seclabel{predefined.pagestyles} + +Die einfachste Möglichkeit, mit \Package{scrlayer-scrpage} zu seinem +Wunschdesign für Kopf und Fuß der Seite zu gelangen, ist die Verwendung eines +vorgefertigten Seitenstils. +% +\iffalse % Umbruchoptimierung + In diesem Abschnitt werden die vom Paket \Package{scrlayer-scrpage} bereits + beim Laden definierten Seitenstile vorgestellt. Darüber hinaus werden + diejenigen Befehle erklärt, mit denen grundlegende Einstellungen bei diesen + Seitenstilen vorgenommen werden können. Weitere Optionen, Befehle und + Hintergründe sind in den nachfolgenden Abschnitten, aber auch in + \autoref{sec:scrlayer-scrpage-experts.pagestyle.pairs} in + \autoref{part:forExperts} zu finden.% +\fi + +\begin{Declaration} + \PageStyle{scrheadings} + \PageStyle{plain.scrheadings} +\end{Declaration} +Das Paket \Package{scrlayer-scrpage} stellt zwei Seitenstile zur Verfügung, +die nach eigenen Wünschen umgestaltet werden können. Als erstes wäre der +Seitenstil \PageStyle{scrheadings}\important{\PageStyle{scrheadings}} zu +nennen. Dieser ist als Seitenstil mit Kolumnentitel vorgesehen. Er ähnelt in +der Voreinstellung dem Seitenstil +\PageStyle{headings}\IndexPagestyle{headings} der Standard- oder der +\KOMAScript-Klassen. Was genau im Kopf und Fuß ausgegeben wird, ist über die +nachfolgend beschriebenen Befehle und Optionen einstellbar. + +Als zweites ist der Seitenstil +\PageStyle{plain.scrheadings}\important{\PageStyle{plain.scrheadings}} zu +nennen. Dieser ist als Seitenstil ohne Kolumnentitel vorgesehen. Er ähnelt in +der Voreinstellung dem Seitenstil \PageStyle{plain}\IndexPagestyle{plain} der +Standard- oder der \KOMAScript-Klassen. Was genau im Kopf und Fuß ausgegeben +wird, ist auch hier über die nachfolgend beschriebenen Befehle und Optionen +einstellbar. + +Natürlich kann auch \PageStyle{scrheadings} als Seitenstil ohne Kolumnentitel +und \PageStyle{plain.scrheadings} als Seitenstil mit Kolumnentitel +konfiguriert werden. Es ist jedoch zweckmäßig, sich an die vorgenannte +Konvention zu halten. Die beiden Seitenstile beeinflussen sich nämlich in +gewisser Weise gegenseitig. Sobald einer der Seitenstile einmal ausgewählt +wurde, ist \PageStyle{scrheadings} auch unter dem Namen +\PageStyle{headings}\important{\PageStyle{headings}}\IndexPagestyle{headings} +und der Seitenstil \PageStyle{plain.scrheadings} auch unter dem Namen +\PageStyle{plain}\important{\PageStyle{plain}}\IndexPagestyle{plain} +aktivierbar. Das hat den Vorteil, dass bei Klassen, die automatisch zwischen +\PageStyle{headings} und \PageStyle{plain} umschalten, durch einmalige Auswahl +von \PageStyle{scrheadings} oder \PageStyle{plain.scrheadings} nun zwischen +diesen beiden Stilen umgeschaltet wird. Direkte Anpassungen der entsprechenden +Klassen sind nicht erforderlich. Die beiden Seitenstile stellen also quasi ein +Paar dar, das als Ersatz für \PageStyle{headings} und \PageStyle{plain} +verwendet werden kann. Sollten weitere solche Paare benötigt werden, so sei +auf \autoref{sec:scrlayer-scrpage-experts.pagestyle.pairs} in +\autoref{part:forExperts} verwiesen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{lehead}\OParameter{Inhalt plain.scrheadings}% + \Parameter{Inhalt scrheadings} + \Macro{cehead}\OParameter{Inhalt plain.scrheadings}% + \Parameter{Inhalt scrheadings} + \Macro{rehead}\OParameter{Inhalt plain.scrheadings}% + \Parameter{Inhalt scrheadings} + \Macro{lohead}\OParameter{Inhalt plain.scrheadings}% + \Parameter{Inhalt scrheadings} + \Macro{cohead}\OParameter{Inhalt plain.scrheadings}% + \Parameter{Inhalt scrheadings} + \Macro{rohead}\OParameter{Inhalt plain.scrheadings}% + \Parameter{Inhalt scrheadings} +\end{Declaration} +\iffalse% Umbruchvarianten +Was in den Kopf der Seitenstile +\DescRef{\LabelBase.pagestyle.plain.scrheadings} und +\DescRef{\LabelBase.pagestyle.scrheadings} % +\else% +Was bei \DescRef{\LabelBase.pagestyle.scrheadings} und +\DescRef{\LabelBase.pagestyle.plain.scrheadings} in den Kopf der Seite % +\fi% +geschrieben wird, ist mit Hilfe dieser Befehle einstellbar. Dabei setzt das +optionale Argument jeweils den Inhalt eines Elements in +\DescRef{\LabelBase.pagestyle.plain.scrheadings}% +\iffalse% Umbruchvarianten +\iffree{}{ beziehungsweise \PageStyle{scrplain}} \fi , während das +obligatorische Argument jeweils einen Inhalt in +\DescRef{\LabelBase.pagestyle.scrheadings} setzt. + +Die Inhalte für gerade, also linke Seiten\textnote{linke Seite} werden mit den +Befehlen \Macro{lehead}, \Macro{cehead} und \Macro{rehead} gesetzt. Das +»\texttt{e}« an zweiter Stelle des Befehlsnamens steht dabei für »\emph{even}« +(engl. für »gerade«). + +Die Inhalte für ungerade, also rechte Seiten\textnote{rechte Seite} werden mit +den Befehlen \Macro{lohead}, \Macro{cohead} und \Macro{rohead} gesetzt. Das +»\texttt{o}« an zweiter Stelle des Befehlsnamens steht dabei für »\emph{odd}« +(engl. für »ungerade«). + +Es\textnote{Achtung!} sei an dieser Stelle noch einmal darauf hingewiesen, +dass im einseitigen Satz nur rechte Seiten existieren und diese von \LaTeX{} +unabhängig von ihrer Nummer als ungerade Seiten bezeichnet werden. + +Jeder Kopf eines Seitenstils besitzt ein linksbündiges\textnote{linksbündig} +Element, das mit \Macro{lehead} respektive \Macro{lohead} gesetzt werden +kann. Das »\texttt{l}« am Anfang des Befehlsnamens steht hier für »\emph{left + aligned}« (engl. für »linksbündig«). + +Ebenso besitzt jeder Kopf eines Seitenstils ein zentriert\textnote{zentriert} +gesetztes Element, das mit \Macro{cehead} respektive \Macro{cohead} gesetzt +werden kann. Das »\texttt{c}« am Anfang des Befehlsnamens steht hier für +»\emph{centered}« (engl. für »zentriert«). + +Entsprechend besitzt jeder Kopf eines Seitenstil auch ein +rechtsbündiges\textnote{rechtsbündig} Element, das mit \Macro{rehead} +respektive \Macro{rohead} gesetzt werden kann. Das »\texttt{r}« am Anfang des +Befehlsnamens steht hier für »\emph{right aligned}« (engl. für +»rechtsbündig«). + +\BeginIndexGroup +\BeginIndex{FontElement}{pagehead}\LabelFontElement{pagehead}% +\BeginIndex{FontElement}{pageheadfoot}\LabelFontElement{pageheadfoot}% +Diese Elemente besitzen jedoch nicht jedes für sich eine Schriftzuordnung mit +Hilfe der Befehle \DescRef{\LabelBase.cmd.setkomafont} und \DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:scrlayer-scrpage.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}), sondern alle zusammen +über das Element \FontElement{pagehead}\important{\FontElement{pagehead}}. Vor +diesem wird außerdem noch das Element +\FontElement{pageheadfoot}\important{\FontElement{pageheadfoot}} +angewandt. Die Voreinstellungen für diese beiden Elemente sind +\autoref{tab:scrlayer-scrpage.fontelements}, +\autopageref{tab:scrlayer-scrpage.fontelements} zu entnehmen.% +\EndIndexGroup + +In \autoref{fig:scrlayer-scrpage.head} ist die Bedeutung der einzelnen Befehle +für den Kopf der Seiten im doppelseitigen Modus noch einmal skizziert.% +% +\begin{figure}[tp] + \centering + \begin{picture}(\textwidth,30mm)(0,-10mm) + \thinlines + \small\ttfamily + % linke Seite + \put(0,20mm){\line(1,0){.49\textwidth}}% + \put(0,0){\line(0,1){20mm}}% + \multiput(0,0)(0,-1mm){10}{\line(0,-1){.5mm}}% + \put(.49\textwidth,5mm){\line(0,1){15mm}}% + \put(.05\textwidth,10mm){% + \color{ImageRed}% + \put(-.5em,0){\line(1,0){4em}}% + \multiput(3.5em,0)(.25em,0){5}{\line(1,0){.125em}}% + \put(-.5em,0){\line(0,1){\baselineskip}}% + \put(-.5em,\baselineskip){\line(1,0){4em}}% + \multiput(3.5em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \makebox(4em,5mm)[l]{\Macro{lehead}}% + }% + \put(.465\textwidth,10mm){% + \color{ImageBlue}% + \put(-4em,0){\line(1,0){4em}}% + \multiput(-4em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(0,0){\line(0,1){\baselineskip}}% + \put(-4em,\baselineskip){\line(1,0){4em}}% + \multiput(-4em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-4.5em,0){\makebox(4em,5mm)[r]{\Macro{rehead}}}% + }% + \put(.2525\textwidth,10mm){% + \color{ImageGreen}% + \put(-2em,0){\line(1,0){4em}}% + \multiput(2em,0)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,\baselineskip){\line(1,0){4em}}% + \multiput(2em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,0){\makebox(4em,5mm)[c]{\Macro{cehead}}}% + }% + % rechte Seite + \put(.51\textwidth,20mm){\line(1,0){.49\textwidth}}% + \put(.51\textwidth,5mm){\line(0,1){15mm}}% + \put(\textwidth,0){\line(0,1){20mm}}% + \multiput(\textwidth,0)(0,-1mm){10}{\line(0,-1){.5mm}}% + \put(.5325\textwidth,10mm){% + \color{ImageBlue}% + \put(0,0){\line(1,0){4em}}% + \multiput(4em,0)(.25em,0){5}{\line(1,0){.125em}}% + \put(0,0){\line(0,1){\baselineskip}}% + \put(0em,\baselineskip){\line(1,0){4em}}% + \multiput(4em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \put(.5em,0){\makebox(4em,5mm)[l]{\Macro{lohead}}}% + }% + \put(.965\textwidth,10mm){% + \color{ImageRed}% + \put(-4em,0){\line(1,0){4em}}% + \multiput(-4em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(0,0){\line(0,1){\baselineskip}}% + \put(-4em,\baselineskip){\line(1,0){4em}}% + \multiput(-4em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-4.5em,0){\makebox(4em,5mm)[r]{\Macro{rohead}}}% + }% + \put(.75\textwidth,10mm){% + \color{ImageGreen}% + \put(-2em,0){\line(1,0){4em}}% + \multiput(2em,0)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,\baselineskip){\line(1,0){4em}}% + \multiput(2em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,0){\makebox(4em,5mm)[c]{\Macro{cohead}}}% + }% + % Befehle für beide Seiten + \color{ImageBlue}% + \put(.5\textwidth,0){\makebox(0,\baselineskip)[c]{\Macro{ihead}}}% + \color{ImageGreen}% + \put(.5\textwidth,-5mm){\makebox(0,\baselineskip)[c]{\Macro{chead}}} + \color{ImageRed}% + \put(.5\textwidth,-10mm){\makebox(0,\baselineskip)[c]{\Macro{ohead}}} + \put(\dimexpr.5\textwidth-2em,.5\baselineskip){% + \color{ImageBlue}% + \put(0,0){\line(-1,0){1.5em}}% + \put(-1.5em,0){\vector(0,1){5mm}}% + \color{ImageGreen}% + \put(0,-1.25\baselineskip){\line(-1,0){\dimexpr .25\textwidth-2em\relax}}% + \put(-\dimexpr + .25\textwidth-2em\relax,-1.25\baselineskip){\vector(0,1){\dimexpr + 5mm+1.25\baselineskip\relax}} + \color{ImageRed}% + \put(0,-2.5\baselineskip){\line(-1,0){\dimexpr .45\textwidth-4em\relax}}% + \put(-\dimexpr + .45\textwidth-4em\relax,-2.5\baselineskip){\vector(0,1){\dimexpr + 5mm+2.5\baselineskip\relax}} + }% + \put(\dimexpr.5\textwidth+2em,.5\baselineskip){% + \color{ImageBlue}% + \put(0,0){\line(1,0){1.5em}}% + \put(1.5em,0){\vector(0,1){5mm}}% + \color{ImageGreen}% + \put(0,-1.25\baselineskip){\line(1,0){\dimexpr .25\textwidth-2em\relax}} + \put(\dimexpr + .25\textwidth-2em\relax,-1.25\baselineskip){\vector(0,1){\dimexpr + 5mm+1.25\baselineskip\relax}} + \color{ImageRed}% + \put(0,-2.5\baselineskip){\line(1,0){\dimexpr .45\textwidth-4em\relax}} + \put(\dimexpr + .45\textwidth-4em\relax,-2.5\baselineskip){\vector(0,1){\dimexpr + 5mm+2.5\baselineskip\relax}} + }% + \end{picture} + \caption[Befehle zum Setzen des Seitenkopfes]% + {Die Bedeutung der Befehle zum Setzen der Inhalte des Kopfes eines + Seitenstils für die Seitenköpfe einer schematischen Doppelseite} + \label{fig:scrlayer-scrpage.head} +\end{figure} +% +\begin{Example} + Angenommen, Sie verfassen einen kurzen Artikel und wollen, dass im Kopf der + Seiten links der Name des Autors und rechts der Titel des Artikels + steht. Sie schreiben daher beispielsweise: +\begin{lstcode} + \documentclass{scrartcl} + \usepackage{scrlayer-scrpage} + \lohead{Peter Musterheinzel} + \rohead{Seitenstile mit \KOMAScript} + \pagestyle{scrheadings} + \begin{document} + \title{Seitenstile mit \KOMAScript} + \author{Peter Musterheinzel} + \maketitle + \end{document} +\end{lstcode} + Doch, was ist das? Auf der ersten Seite erscheint nur eine Seitenzahl im + Fuß, der Kopf hingegen bleibt leer! + + Die Erklärung dafür ist einfach: Die Klasse \Class{scrartcl} schaltet wie + auch die Standardklasse \Class{article} für die Seite mit dem Titelkopf in + der Voreinstellung auf den Seitenstil \PageStyle{plain}. Nach der Anweisung + \DescRef{maincls.cmd.pagestyle}\PParameter{scrheadings} in der Präambel + unseres Beispiels führt dies tatsächlich zur Verwendung des Seitenstils + \DescRef{\LabelBase.pagestyle.plain.scrheadings} für die Seite mit dem + Titelkopf. Dieser Seitenstil ist bei Verwendung einer \KOMAScript-Klasse mit + leerem Kopf und Seitenzahl im Fuß vorkonfiguriert. Da im Beispiel das + optionale Argument von \Macro{lohead} und \Macro{rohead} gar nicht verwendet + wird, bleibt der Seitenstil \DescRef{\LabelBase.pagestyle.plain.scrheadings} + unverändert. Das Ergebnis ist für die erste Seite also tatsächlich korrekt. + + Fügen Sie jetzt im Beispiel nach \DescRef{maincls.cmd.maketitle} so viel + Text ein, dass eine zweite Seite ausgegeben wird. Sie können dazu auch + einfach \Macro{usepackage}\PParameter{lipsum}\IndexPackage{lipsum} in der + Dokumentpräambel und \Macro{lipsum}\IndexCmd{lipsum} nach + \DescRef{maincls.cmd.maketitle} ergänzen. Wie Sie sehen werden, enthält der + Kopf der zweiten Seite nun, genau wie gewünscht, den Namen des Autors und + den Titel des Dokuments. + + Zum Vergleich sollten Sie zusätzlich das optionale Argument der Anweisungen + \Macro{lohead} und \Macro{rohead} mit einem Inhalt versehen. Ändern Sie das + Beispiel dazu wie folgt ab: +\begin{lstcode} + \documentclass{scrartcl} + \usepackage{scrlayer-scrpage} + \lohead[Peter Musterheinzel] + {Peter Musterheinzel} + \rohead[Seitenstile mit \KOMAScript] + {Seitenstile mit \KOMAScript} + \pagestyle{scrheadings} + \usepackage{lipsum} + \begin{document} + \title{Seitenstile mit \KOMAScript} + \author{Peter Musterheinzel} + \maketitle + \lipsum + \end{document} +\end{lstcode} + Jetzt haben Sie den Kopf auch auf der ersten Seite \iffree{direkt}{\unskip} + über dem Titelkopf\iffree{ selbst}{}. Das kommt daher, dass Sie mit den + beiden optionalen Argumenten \iffree{den Seitenstil}{\unskip} + \DescRef{\LabelBase.pagestyle.plain.scrheadings} nun ebenfalls + entsprechend konfiguriert haben. Wie Sie am Ergebnis vermutlich auch + erkennen, ist es jedoch besser, diesen Seitenstil unverändert zu lassen, da + der Kolumnentitel über dem Titelkopf doch eher störend ist. + + Alternativ zur Konfigurierung von + \DescRef{\LabelBase.pagestyle.plain.scrheadings} hätte man bei Verwendung + einer \KOMAScript-Klasse übrigens auch den Seitenstil für Seiten mit + Titelkopf ändern können. Siehe dazu \DescRef{maincls.cmd.titlepagestyle}% + \important{\DescRef{maincls.cmd.titlepagestyle}}% + \IndexCmd{titlepagestyle} in \autoref{sec:maincls.pagestyle}, + \DescPageRef{maincls.cmd.titlepagestyle}. +\end{Example} + +\iftrue% Umbruchoptimierung +\leavevmode\textnote{Achtung!}% +\else Erlauben Sie mir einen wichtigen Hinweis:\textnote{Achtung!} % +\fi% +Sie sollten niemals die Überschrift oder die Nummer einer +Gliederungsebene mit Hilfe einer dieser Anweisungen als Kolumnentitel in den +Kopf der Seite setzen. Aufgrund der Asynchronizität von Seitenaufbau und +Seitenausgabe kann % +\iffalse% Umbruchoptimierung +es sonst leicht geschehen, dass die falsche Nummer oder die falsche +Überschrift im Kolumnentitel ausgegeben wird% +\else% +sonst die falsche Nummer oder die falsche Überschrift im Kolumnentitel +ausgegeben werden% +\fi% +. Stattdessen ist der Mark-Mechanismus, idealer Weise in Verbindung mit den +Automatismen aus dem nächsten Abschnitt, zu verwenden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{lehead*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{cehead*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{rehead*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{lohead*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{cohead*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{rohead*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} +\end{Declaration} +Die Sternvarianten\ChangedAt{v3.14}{\Package{scrlayer-scrpage}} der zuvor +erklärten Befehle unterscheiden sich von der Form ohne Stern lediglich bei +Weglassen des optionalen Arguments \OParameter{Inhalt + plain.scrheadings}. Während die Form ohne Stern in diesem Fall den Inhalt +von \DescRef{\LabelBase.pagestyle.plain.scrheadings} unangetastet lässt, wird +bei der Sternvariante dann das obligatorische Argument \PName{Inhalt + scrheadings} auch für \DescRef{\LabelBase.pagestyle.plain.scrheadings} +verwendet. Sollen also beide Argumente gleich sein, so kann man einfach die +Sternvariante mit nur einem Argument verwenden.% +% +\begin{Example} + Mit der Sternform von \DescRef{\LabelBase.cmd.lohead} und + \DescRef{\LabelBase.cmd.rohead} lässt sich das + Beispiel aus der vorherigen Erklärung etwas verkürzen: + % Umbruchoptimierung durch Abstandsänderung +\begin{lstcode}[belowskip=-\dp\strutbox] + \documentclass{scrartcl} + \usepackage{scrlayer-scrpage} + \lohead*{Peter Musterheinzel} + \rohead*{Seitenstile mit \KOMAScript} + \pagestyle{scrheadings} + \usepackage{lipsum} + \begin{document} + \title{Seitenstile mit \KOMAScript} + \author{Peter Musterheinzel} + \maketitle + \lipsum + \end{document} +\end{lstcode}% +\end{Example}% +\EndIndexGroup + + +\begin{Declaration} + \Macro{lefoot}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{cefoot}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{refoot}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{lofoot}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{cofoot}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{rofoot}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} +\end{Declaration} +Was bei \DescRef{\LabelBase.pagestyle.scrheadings} und +\DescRef{\LabelBase.pagestyle.plain.scrheadings} in den Fuß der Seite +geschrieben wird, ist mit Hilfe dieser Befehle einstellbar. Dabei setzt das +optionale Argument jeweils den Inhalt eines Elements in +\DescRef{\LabelBase.pagestyle.plain.scrheadings}, während das obligatorische +Argument jeweils einen Inhalt in \DescRef{\LabelBase.pagestyle.scrheadings} +setzt. + +Die Inhalte für gerade, also linke Seiten\textnote{linke Seite} werden mit den +Befehlen \Macro{lefoot}, \Macro{cefoot} und \Macro{refoot} gesetzt. Das +»\texttt{e}« an zweiter Stelle des Befehlsnamens steht dabei für »\emph{even}« +(engl. für »gerade«). + +Die Inhalte für ungerade, also rechte Seiten\textnote{rechte Seite} werden mit +den Befehlen \Macro{lofoot}, \Macro{cofoot} und \Macro{rofoot} gesetzt. Das +»\texttt{o}« an zweiter Stelle des Befehlsnamens steht dabei für »\emph{odd}« +(engl. für »ungerade«). + +Es\textnote{Achtung!} sei an dieser Stelle noch einmal darauf hingewiesen, +dass im einseitigen Satz nur rechte Seiten existieren und diese von \LaTeX{} +unabhängig von ihrer Nummer als ungerade Seiten gezeichnet werden. + +Jeder Fuß eines Seitenstils besitzt ein linksbündiges\textnote{linksbündig} +Element, das mit \Macro{lefoot} respektive \Macro{lofoot} gesetzt werden +kann. Das »\texttt{l}« am Anfang des Befehlsnamens steht hier für »\emph{left + aligned}« (engl. für »linksbündig«). + +Ebenso besitzt jeder Fuß eines Seitenstils ein zentriert\textnote{zentriert} +gesetztes Element, das mit \Macro{cefoot} respektive \Macro{cofoot} gesetzt +werden kann. Das »\texttt{c}« am Anfang des Befehlsnamens steht hier für +»\emph{centered}« (engl. für »zentriert«). + +Entsprechend besitzt jeder Fuß eines Seitenstil auch ein +rechtsbündiges\textnote{rechtsbündig} Element, das mit \Macro{refoot} +respektive \Macro{rofoot} gesetzt werden kann. Das »\texttt{r}« am Anfang des +Befehlsnamens steht hier für »\emph{right aligned}« (engl. für +»rechtsbündig«). + +\BeginIndexGroup +\BeginIndex{FontElement}{pagefoot}\LabelFontElement{pagefoot}% +\BeginIndex{FontElement}{pageheadfoot}\LabelFontElement[.foot]{pageheadfoot}% +Diese Elemente besitzen jedoch nicht jedes für sich eine Schriftzuordnung mit +Hilfe der Befehle \DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:scrlayer-scrpage.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}), sondern alle zusammen über das +Element \FontElement{pagefoot}\important{\FontElement{pagefoot}}. Vor diesem +wird außerdem noch das Element +\FontElement{pageheadfoot}\important{\FontElement{pageheadfoot}} +angewandt. Die Voreinstellungen für diese beiden Elemente sind +\autoref{tab:scrlayer-scrpage.fontelements}, +\autopageref{tab:scrlayer-scrpage.fontelements} zu entnehmen.% +\EndIndexGroup + +In \autoref{fig:scrlayer-scrpage.foot} ist die Bedeutung der einzelnen Befehle +für den Fuß der Seiten im doppelseitigen Modus noch einmal skizziert. +% +\begin{figure}[bp] + \centering + \begin{picture}(\textwidth,30mm) + \thinlines + \small\ttfamily + % linke Seite + \put(0,0){\line(1,0){.49\textwidth}}% + \put(0,0){\line(0,1){20mm}}% + \multiput(0,20mm)(0,1mm){10}{\line(0,1){.5mm}}% + \put(.49\textwidth,0){\line(0,1){15mm}}% + \put(.05\textwidth,5mm){% + \color{ImageRed}% + \put(-.5em,0){\line(1,0){4em}}% + \multiput(3.5em,0)(.25em,0){5}{\line(1,0){.125em}}% + \put(-.5em,0){\line(0,1){\baselineskip}}% + \put(-.5em,\baselineskip){\line(1,0){4em}}% + \multiput(3.5em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \makebox(4em,5mm)[l]{\Macro{lefoot}}% + }% + \put(.465\textwidth,5mm){% + \color{ImageBlue}% + \put(-4em,0){\line(1,0){4em}}% + \multiput(-4em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(0,0){\line(0,1){\baselineskip}}% + \put(-4em,\baselineskip){\line(1,0){4em}}% + \multiput(-4em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-4.5em,0){\makebox(4em,5mm)[r]{\Macro{refoot}}}% + }% + \put(.2525\textwidth,5mm){% + \color{ImageGreen}% + \put(-2em,0){\line(1,0){4em}}% + \multiput(2em,0)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,\baselineskip){\line(1,0){4em}}% + \multiput(2em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,0){\makebox(4em,5mm)[c]{\Macro{cefoot}}}% + }% + % rechte Seite + \put(.51\textwidth,0){\line(1,0){.49\textwidth}}% + \put(.51\textwidth,0){\line(0,1){15mm}}% + \put(\textwidth,0){\line(0,1){20mm}}% + \multiput(\textwidth,20mm)(0,1mm){10}{\line(0,1){.5mm}}% + \put(.5325\textwidth,5mm){% + \color{ImageBlue}% + \put(0,0){\line(1,0){4em}}% + \multiput(4em,0)(.25em,0){5}{\line(1,0){.125em}}% + \put(0,0){\line(0,1){\baselineskip}}% + \put(0em,\baselineskip){\line(1,0){4em}}% + \multiput(4em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \put(.5em,0){\makebox(4em,5mm)[l]{\Macro{lofoot}}}% + }% + \put(.965\textwidth,5mm){% + \color{ImageRed}% + \put(-4em,0){\line(1,0){4em}}% + \multiput(-4em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(0,0){\line(0,1){\baselineskip}}% + \put(-4em,\baselineskip){\line(1,0){4em}}% + \multiput(-4em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-4.5em,0){\makebox(4em,5mm)[r]{\Macro{rofoot}}}% + }% + \put(.75\textwidth,5mm){% + \color{ImageGreen}% + \put(-2em,0){\line(1,0){4em}}% + \multiput(2em,0)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,0)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,\baselineskip){\line(1,0){4em}}% + \multiput(2em,\baselineskip)(.25em,0){5}{\line(1,0){.125em}}% + \multiput(-2em,\baselineskip)(-.25em,0){5}{\line(1,0){.125em}}% + \put(-2em,0){\makebox(4em,5mm)[c]{\Macro{cofoot}}}% + }% + % Befehle für beide Seiten + \color{ImageBlue}% + \put(.5\textwidth,15mm){\makebox(0,\baselineskip)[c]{\Macro{ifoot}}}% + \color{ImageGreen}% + \put(.5\textwidth,20mm){\makebox(0,\baselineskip)[c]{\Macro{cfoot}}} + \color{ImageRed}% + \put(.5\textwidth,25mm){\makebox(0,\baselineskip)[c]{\Macro{ofoot}}} + \put(\dimexpr.5\textwidth-2em,.5\baselineskip){% + \color{ImageBlue}% + \put(0,15mm){\line(-1,0){1.5em}}% + \put(-1.5em,15mm){\vector(0,-1){5mm}}% + \color{ImageGreen}% + \put(0,20mm){\line(-1,0){\dimexpr .25\textwidth-2em\relax}}% + \put(-\dimexpr .25\textwidth-2em\relax,20mm){\vector(0,-1){10mm}}% + \color{ImageRed}% + \put(0,25mm){\line(-1,0){\dimexpr .45\textwidth-4em\relax}}% + \put(-\dimexpr .45\textwidth-4em\relax,25mm){\vector(0,-1){15mm}}% + }% + \put(\dimexpr.5\textwidth+2em,.5\baselineskip){% + \color{ImageBlue}% + \put(0,15mm){\line(1,0){1.5em}}% + \put(1.5em,15mm){\vector(0,-1){5mm}}% + \color{ImageGreen}% + \put(0,20mm){\line(1,0){\dimexpr .25\textwidth-2em\relax}}% + \put(\dimexpr .25\textwidth-2em\relax,20mm){\vector(0,-1){10mm}}% + \color{ImageRed}% + \put(0,25mm){\line(1,0){\dimexpr .45\textwidth-4em\relax}}% + \put(\dimexpr .45\textwidth-4em\relax,25mm){\vector(0,-1){15mm}}% + }% + \end{picture} + \caption[Befehle zum Setzen des Seitenfußes]% + {Die Bedeutung der Befehle zum Setzen der Inhalte des Fußes eines + Seitenstils für die Seitenfüße einer schematischen Doppelseite.} + \label{fig:scrlayer-scrpage.foot} +\end{figure} +% +\begin{Example} + Kommen wir zu dem Beispiel des kurzen Artikels zurück. Angenommen Sie wollen + nun links im Fuß \iffree{zusätzlich}{\unskip} den Verlag angegeben + haben. Daher ergänzen Sie das Beispiel zu: +\begin{lstcode} + \documentclass{scrartcl} + \usepackage{scrlayer-scrpage} + \lohead{Peter Musterheinzel} + \rohead{Seitenstile mit \KOMAScript} + \lofoot{Verlag Naseblau, Irgendwo} + \pagestyle{scrheadings} + \usepackage{lipsum} + \begin{document} + \title{Seitenstile mit \KOMAScript} + \author{Peter Musterheinzel} + \maketitle + \lipsum + \end{document} +\end{lstcode} + Der Verlag wird Ihnen aber nicht auf der Seite mit dem + Titelkopf ausgegeben. Die Begründung ist dieselbe wie beim Beispiel zu + \DescRef{\LabelBase.cmd.lohead}. Ebenso ist die Lösung, um den Verlag auch + auf diese Seite zu bekommen, entsprechend: +\begin{lstcode} + \lofoot[Verlag Naseblau, Irgendwo] + {Verlag Naseblau, Irgendwo} +\end{lstcode} + \iffalse% Umbruchvarianten + Nun entscheiden Sie noch, dass + statt\textnote{Fontänderung}\important{\FontElement{pageheadfoot}}% + \IndexFontElement{pageheadfoot} der schrägen Schrift in Kopf und Fuß eine + aufrechte, aber kleinere Schrift verwendet werden soll% + \else% + Jetzt soll + statt\textnote{Fontänderung}\important{\FontElement{pageheadfoot}}% + \IndexFontElement{pageheadfoot} der schrägen Schrift in Kopf und Fuß eine + aufrechte, aber kleinere Schrift verwendet werden% + \fi% + % Umbruchoptimierung: + \iffalse% + \iffree{}{. Dies erreichen + Sie, indem Sie in der Dokumentpräambel die folgende Codezeile ergänzen}% + \fi% + \iftrue% + \iffree{}{. Dies erreichen Sie mit folgender Ergänzung:}% + \fi + : +\begin{lstcode} + \setkomafont{pageheadfoot}{\small} +\end{lstcode} + + Darüber hinaus, soll + \iftrue% Umbruchvarianten + der Kopf\important{\FontElement{pagehead}}\IndexFontElement{pagehead}, nicht + jedoch der Fuß + \else% + nur der Kopf\important{\FontElement{pagehead}}\IndexFontElement{pagehead} + \fi% + fett gesetzt werden: +\begin{lstcode} + \setkomafont{pagehead}{\bfseries} +\end{lstcode} + Bei dieser Anweisung ist wichtig\textnote{Achtung!}, dass sie nach + dem Laden von \Package{scrpage-scrlayer} erfolgt, weil davor + \FontElement{pagehead} und \FontElement{pageheadfoot} + \iffalse% Umbruchvarianten + zwar vorhanden sind, aber dasselbe Element, nämlich + \FontElement{pageheadfoot}, % + \else% + dasselbe Element % + \fi + bezeichnen. Erst durch \iffree{Laden von }{}\Package{scrpage-scrlayer} + werden daraus \iffree{zwei }{}unabhängige Elemente. + + Ergänzen Sie nun das Beispiel einmal durch ein weiteres \Macro{lipsum} und + fügen Sie gleichzeitig Option + \Option{twoside}\IndexOption{twoside}\important{\Option{twoside}} beim Laden + von \Class{scrartcl} hinzu. Zum einen wandert die Seitenzahl im Fuß nun von + der Mitte nach außen. Das liegt an der geänderten Voreinstellung für + \DescRef{\LabelBase.pagestyle.scrheadings} und + \DescRef{\LabelBase.pagestyle.plain.scrheadings} für doppelseitige Dokumente + mit einer \KOMAScript-Klasse. + + Gleichzeitig verschwinden aber auch Autor, Dokumenttitel und Verlag von + Seite~2. Diese finden sich erst auf Seite~3 wieder. Das liegt daran, dass + wir bisher nur Befehle für ungerade Seiten\textnote{rechte Seite} + verwendet haben. Zu erkennen ist das am »\texttt{o}« für \emph{odd} an der + zweiten Stelle der Befehlsnamen. + + Nun könnten wir die Befehle einfach kopieren und in der Kopie dieses + »\texttt{o}« durch ein »\texttt{e}« für \emph{even}\textnote{linke Seite} + ersetzen. Allerdings ist es bei doppelseitigen Dokumenten meist sinnvoller, + wenn die Elemente spiegelverkehrt verwendet werden, dass also Elemente, die + auf linken Seiten links stehen, auf rechten Seiten rechts platziert werden + und umgekehrt. Daher vertauschen wir auch noch beim ersten Buchstaben + »\texttt{l}« mit »\texttt{r}« und umgekehrt: +\begin{lstcode} + \documentclass[twoside]{scrartcl} + \usepackage{scrlayer-scrpage} + \lohead{Peter Musterheinzel} + \rohead{Seitenstile mit \KOMAScript} + \lofoot[Verlag Naseblau, Irgendwo] + {Verlag Naseblau, Irgendwo} + \rehead{Peter Musterheinzel} + \lehead{Seitenstile mit \KOMAScript} + \refoot[Verlag Naseblau, Irgendwo] + {Verlag Naseblau, Irgendwo} + \pagestyle{scrheadings} + \setkomafont{pageheadfoot}{\small} + \setkomafont{pagehead}{\bfseries} + \usepackage{lipsum} + \begin{document} + \title{Seitenstile mit \KOMAScript} + \author{Peter Musterheinzel} + \maketitle + \lipsum\lipsum + \end{document} +\end{lstcode} +\end{Example}% + +Da es etwas umständlich ist, die Angaben bei doppelseitigen Dokumenten wie im +letzten Beispiel immer getrennt für linke und rechte Seiten zu machen, wird +nachfolgend eine schönere Lösung für diesen Standardfall eingeführt. + +\iftrue% Umbruchoptimierung +\leavevmode\textnote{Achtung!}% +\else Erlauben Sie mir erneut einen wichtigen Hinweis:\textnote{Achtung!} % +\fi% +Sie sollten niemals die Überschrift oder die Nummer einer +Gliederungsebene mit Hilfe einer dieser Anweisungen als Kolumnentitel in den +Fuß der Seite setzen. Aufgrund der Asynchronizität von Seitenaufbau und +Seitenausgabe kann % +\iffalse% Umbruchoptimierung +es sonst leicht geschehen, dass die falsche Nummer oder die falsche +Überschrift im Kolumnentitel ausgegeben wird% +\else% +sonst die falsche Nummer oder die falsche Überschrift im Kolumnentitel +ausgegeben werden% +\fi% +. Stattdessen ist der Mark-Mechanismus, idealer Weise in Verbindung mit den +Automatismen aus dem nächsten Abschnitt, zu verwenden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{lefoot*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{cefoot*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{refoot*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{lofoot*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{cofoot*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{rofoot*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} +\end{Declaration} +Die Sternvarianten\ChangedAt{v3.14}{\Package{scrlayer-scrpage}} der zuvor +erklärten Befehle unterscheiden sich von der Form ohne Stern lediglich bei +Weglassen des optionalen Arguments \OParameter{Inhalt + plain.scrheadings}. Während die Form ohne Stern in diesem Fall den Inhalt +von \DescRef{\LabelBase.pagestyle.plain.scrheadings} unangetastet lässt, wird +bei der Sternvariante dann das obligatorische Argument \PName{Inhalt + scrheadings} auch für \DescRef{\LabelBase.pagestyle.plain.scrheadings} +verwendet. Sollen also beide Argumente gleich sein, so kann man einfach die +Sternvariante mit nur einem Argument verwenden.% +% +\begin{Example} + Mit der Sternform von \DescRef{\LabelBase.cmd.lofoot} und + \DescRef{\LabelBase.cmd.rofoot} lässt sich das + Beispiel aus der vorherigen Erklärung etwas verkürzen: +% Umbruchoptimierung durch Abstandsänderung +\begin{lstcode}[belowskip=-\dp\strutbox] + \documentclass[twoside]{scrartcl} + \usepackage{scrlayer-scrpage} + \lohead{Peter Musterheinzel} + \rohead{Seitenstile mit \KOMAScript} + \lofoot*{Verlag Naseblau, Irgendwo} + \rehead{Peter Musterheinzel} + \lehead{Seitenstile mit \KOMAScript} + \refoot*{Verlag Naseblau, Irgendwo} + \pagestyle{scrheadings} + \setkomafont{pageheadfoot}{\small} + \setkomafont{pagehead}{\bfseries} + \usepackage{lipsum} + \begin{document} + \title{Seitenstile mit \KOMAScript} + \author{Peter Musterheinzel} + \maketitle + \lipsum\lipsum + \end{document} +\end{lstcode} +\end{Example}% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ohead}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{chead}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{ihead}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{ofoot}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{cfoot}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{ifoot}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} +\end{Declaration} +Um Kopf und Fuß im doppelseitigen Layout zu konfigurieren, müsste man mit den +zuvor erklärten Befehlen die linken und die rechten Seiten getrennt +voneinander konfigurieren. Meist ist es jedoch so, dass linke und rechte Seite +mehr oder weniger symmetrisch zueinander sind. Ein Element das auf linken +Seiten links steht, steht auf rechten Seiten rechts% +\iffalse% Umbruchvarianten +. Ein Element, das auf linken Seiten rechts steht, steht auf rechten Seiten +links. +Mittig angeordnete Elemente sind normalerweise auf beiden Seiten mittig +angeordnet.% +\else% +\ und umgekehrt. Mittig bleibt mittig.% +\fi% + +Zur Vereinfachung der Einstellungen für diesen Standardfall gibt es bei +\Package{scrlayer-scrpage} sozusagen Abkürzungen. Der Befehl \Macro{ohead} +entspricht einem Aufruf sowohl von \DescRef{\LabelBase.cmd.lehead} als auch +\DescRef{\LabelBase.cmd.rohead}. Der Befehl \Macro{chead} entspricht sowohl +\DescRef{\LabelBase.cmd.cehead} als auch \DescRef{\LabelBase.cmd.cohead}. Und +Befehl \Macro{ihead} entspricht \DescRef{\LabelBase.cmd.rehead} und +\DescRef{\LabelBase.cmd.lohead}. Gleiches gilt für die Anweisungen des +Fußes. In \autoref{fig:scrlayer-scrpage.head} auf +\autopageref{fig:scrlayer-scrpage.head} und +\autoref{fig:scrlayer-scrpage.foot} auf +\autopageref{fig:scrlayer-scrpage.foot} werden auch diese Beziehungen +skizziert. +% +\begin{Example} + \iftrue% Umbruchvarianten + Das letzte Beispiel lässt sich so vereinfachen: + \else + Mit Hilfe der neuen Befehle, lässt sich das letzte Beispiel wie folgt + vereinfachen: + \fi +\begin{lstcode} + \documentclass[twoside]{scrartcl} + \usepackage{scrlayer-scrpage} + \ihead{Peter Musterheinzel} + \ohead{Seitenstile mit \KOMAScript} + \ifoot[Verlag Naseblau, Irgendwo] + {Verlag Naseblau, Irgendwo} + \pagestyle{scrheadings} + \setkomafont{pageheadfoot}{\small} + \setkomafont{pagehead}{\bfseries} + \usepackage{lipsum} + \begin{document} + \title{Seitenstile mit \KOMAScript} + \author{Peter Musterheinzel} + \maketitle + \lipsum\lipsum + \end{document} +\end{lstcode} +\iffalse% Umbruchkorrekturtext + Wie zusehen ist, konnte die Hälfte der Befehle eingespart und trotzdem + dasselbe Ergebnis erzielt werden. +\fi +\end{Example}% + +\iffalse% Umbruchoptimierung +Da im einseitigen Layout alle Seiten als ungerade oder rechte Seiten behandelt +werden, können \iffree{im einseitigen Layout}{dann} diese Befehle auch als +Synonyme für die entsprechenden Befehle für rechte Seiten verwendet werden.% +\else% +Im einseitigen Layout können diese Befehle auch als Synonym für die +entsprechenden Befehle für rechte Seiten verwendet werden, da dann alle Seiten +rechte Seiten sind.% +\fi% +\iffalse% Umbruchoptimierung +In den meisten Fällen wird man daher eher diese sechs als die zwölf zuvor +vorgestellten Befehle verwenden. +\fi + +% Umbruchoptimierung +\iffree{Erlauben Sie mir noch einmal einen wichtigen + Hinweis:\textnote{Achtung!} }{\leavevmode\textnote{Achtung!}}% +Sie sollten niemals die Überschrift oder die Nummer einer Gliederungsebene mit +Hilfe einer dieser Anweisungen als Kolumnentitel in den Kopf oder Fuß der +Seite setzen. Aufgrund der Asynchronizität von Seitenaufbau und Seitenausgabe +kann % +\iffalse% Umbruchoptimierung +es sonst leicht geschehen, dass die falsche Nummer oder die falsche +Überschrift im Kolumnentitel ausgegeben wird% +\else% +sonst die falsche Nummer oder die falsche Überschrift im Kolumnentitel +ausgegeben werden% +\fi% +. Stattdessen ist der Mark-Mechanismus, idealer Weise in Verbindung mit den +Automatismen aus dem nächsten Abschnitt, zu verwenden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ohead*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{chead*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{ihead*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{ofoot*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{cfoot*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} + \Macro{ifoot*}\OParameter{Inhalt plain.scrheadings} + \Parameter{Inhalt scrheadings} +\end{Declaration} +Die Sternvarianten\ChangedAt{v3.14}{\Package{scrlayer-scrpage}} der zuvor +erklärten Befehle unterscheiden sich von der Form ohne Stern lediglich bei +Weglassen des optionalen Arguments \OParameter{Inhalt + plain.scrheadings}. Während die Form ohne Stern in diesem Fall den Inhalt +von \DescRef{\LabelBase.pagestyle.plain.scrheadings} unangetastet lässt, wird +bei der Sternvariante dann das obligatorische Argument \PName{Inhalt + scrheadings} auch für \DescRef{\LabelBase.pagestyle.plain.scrheadings} +verwendet. Sollen also beide Argumente gleich sein, so kann man einfach die +Sternvariante mit nur einem Argument verwenden.% +% +\begin{Example} + Mit der Sternform von \DescRef{\LabelBase.cmd.ifoot} lässt sich das + Beispiel aus der vorherigen Erklärung weiter verkürzen: +\begin{lstcode} + \documentclass[twoside]{scrartcl} + \usepackage{scrlayer-scrpage} + \ihead{Peter Musterheinzel} + \ohead{Seitenstile mit \KOMAScript} + \ifoot*{Verlag Naseblau, Irgendwo} + \pagestyle{scrheadings} + \setkomafont{pageheadfoot}{\small} + \setkomafont{pagehead}{\bfseries} + \usepackage{lipsum} + \begin{document} + \title{Seitenstile mit \KOMAScript} + \author{Peter Musterheinzel} + \maketitle + \lipsum\lipsum + \end{document} +\end{lstcode}% +\end{Example}% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{pagestyleset}{Einstellung} +\end{Declaration} +\BeginIndex{Option}{pagestyleset~=KOMA-Script}% +\BeginIndex{Option}{pagestyleset~=standard}% +In den zurückliegenden Beispielen wurde bereits mehrfach auf die +Voreinstellung der Seitenstile +\DescRef{\LabelBase.pagestyle.scrheadings}\IndexPagestyle{scrheadings} und +\DescRef{\LabelBase.pagestyle.plain.scrheadings}% +\IndexPagestyle{plain.scrheadings} hingewiesen. Tatsächlich unterstützt +\Package{scrlayer-scrpage} derzeit zwei unterschiedliche +Voreinstellungen. Diese sind von Hand über Option \Option{pagestyleset} +auswählbar. + +Mit der \PName{Einstellung} +\PValue{KOMA-Script}\important{\OptionValue{pagestyleset}{KOMA-Script}} wird +die Voreinstellung gewählt, die auch automatisch eingestellt wird, falls die +Option nicht angegeben ist und eine \KOMAScript-Klasse erkannt wurde. Dabei +werden für \DescRef{\LabelBase.pagestyle.scrheadings} im doppelseitigen Satz +Kolumnentitel außen im Kopf und Seitenzahlen außen im Fuß gesetzt. Im +einseitigen Satz wird der Kolumnentitel stattdessen mittig im Kopf und die +Seitenzahl mittig im Fuß platziert. Für die automatischen Kolumnentitel werden +Groß- und Kleinbuchstaben wie vorgefunden verwendet. Dies entspricht Option +\OptionValueRef{\LabelBase}{markcase}{used}\IndexOption{markcase~=used}% +\important{\OptionValueRef{\LabelBase}{markcase}{used}}. Für +\DescRef{\LabelBase.pagestyle.plain.scrheadings} entfallen die +Kolumnentitel. Die Seitenzahlen werden jedoch identisch platziert. + +Wird allerdings \hyperref[cha:scrlttr2]{\Class{scrlttr2}}% +\important{\hyperref[cha:scrlttr2]{\Class{scrlttr2}}}% +\IndexClass{scrlttr2} als Klasse erkannt, so werden die Voreinstellungen an +die Seitenstile jener Klasse angelehnt. Siehe dazu +\autoref{sec:scrlttr2.pagestyle}, ab \autopageref{sec:scrlttr2.pagestyle}. + +Mit der \PName{Einstellung} +\PValue{standard}\important{\OptionValue{pagestyleset}{standard}} wird die +Voreinstellung gewählt, die den Standard-Klassen entspricht. Diese wird auch +automatisch eingestellt, falls die Option nicht angegeben ist und keine +\KOMAScript-Klasse erkannt wurde. Dabei wird für +\DescRef{\LabelBase.pagestyle.scrheadings} im doppelseitigen Satz der +Kolumnentitel im Kopf innen und die Seitenzahl -- ebenfalls im Kopf -- außen +ausgerichtet platziert. Im einseitigen Satz werden dieselben Einstellungen +verwendet. Da hierbei nur rechte Seiten existieren, steht der Kolumnentitel +dann immer linksbündig im Kopf, die Seitenzahl entsprechend rechtsbündig. Die +automatischen Kolumnentitel werden -- trotz erheblicher typografischer +Bedenken -- entsprechend +\OptionValueRef{\LabelBase}{markcase}{upper}\IndexOption{markcase~=upper}% +\important{\OptionValueRef{\LabelBase}{markcase}{upper}} in Großbuchstaben +umgewandelt. Von \DescRef{\LabelBase.pagestyle.scrheadings} deutlich +abweichend hat \DescRef{\LabelBase.pagestyle.plain.scrheadings} die Seitenzahl +im einseitigen Satz mittig im Fuß. Im Unterschied\textnote{\KOMAScript{} + vs. Standardklassen} zum Seitenstil \PageStyle{plain} der Standardklassen +entfällt die Seitenzahl im doppelseitigen Modus. Die Standardklassen setzen +die Seitenzahl stattdessen mittig im Fuß, was im doppelseitigen Satz nicht zum +übrigen Stil der Seiten passt. +\iffalse % Umbruchkorrekturtext +Wer die Seitenzahl zurück haben will, kann dies +mit +\begin{lstcode} + \cfoot[\pagemark]{} +\end{lstcode} +erreichen. % +\fi% +Der Kolumnentitel entfällt bei +\DescRef{\LabelBase.pagestyle.plain.scrheadings}. + +Es ist zu beachten\textnote{Achtung!}, dass mit der Verwendung dieser Option +gleichzeitig der Seitenstil +\DescRef{\LabelBase.pagestyle.scrheadings}\IndexPagestyle{scrheadings}% +\important{\DescRef{\LabelBase.pagestyle.scrheadings}} aktiviert wird. +\iffalse% Umbruchkorrektur +Dies gilt auch, wenn die Option innerhalb eines Dokuments verwendet wird.% +\fi +% +\EndIndexGroup + + +\LoadCommonFile{pagestylemanipulation}% \section{Beeinflussung von Seitenstilen} + + +\begin{Declaration} + \OptionVName{headwidth}{Breite\textup{:}Offset\textup{:}Offset} + \OptionVName{footwidth}{Breite\textup{:}Offset\textup{:}Offset} +\end{Declaration} +In der Voreinstellung sind Kopf\Index{Kopf>Breite} und +Fuß\Index{Fuss=Fuß>Breite} genauso breit wie der Satzspiegel. Mit Hilfe dieser +beiden \KOMAScript-Optionen lässt sich das jedoch ändern. Die \PName{Breite} +ist dabei die gewünschte Breite des Kopfes beziehungsweise Fußes. Der +\PName{Offset} gibt an, wie weit der Kopf respektive Fuß in Richtung des +äußeren Randes -- im einseitigen Satz entsprechend in Richtung des rechten +Randes -- verschoben werden soll. Dabei sind alle +drei\ChangedAt{v3.14}{\Package{scrlayer-scrpage}} Werte optional, können also +auch weggelassen werden. Falls ein Wert weggelassen wird, kann auch ein +zugehöriger Doppelpunkt links davon entfallen. Ist nur ein \PName{Offset} +angegeben, so wird dieser sowohl für linke als auch für rechte Seiten +verwendet. Ansonsten wird im doppelseitigen Satz der erste \PName{Offset} für +ungerade, also rechte Seiten und der zweite für gerade, also linke Seiten +verwendet. Ist insgesamt nur ein Wert und kein Doppelpunkt angegeben, so +handelt es sich um die \PName{Breite}. + +Sowohl für \PName{Breite} als auch für \PName{Offset} kann jeder gültige +Längenwert aber auch jede \LaTeX-Länge oder \TeX-Länge oder \TeX-Abstand +eingesetzt werden. Darüber hinaus sind für beides auch \eTeX-Längen\-ausdrücke +mit den Grundrechenarten \texttt{+}, \texttt{-}, \texttt{*}, \texttt{/} und +runden Klammern erlaubt. Näheres zu solchen Längenausdrücken ist +\cite[Abschnitt~3.5]{manual:eTeX} zu entnehmen. Für \PName{Breite} sind +außerdem einige symbolische Werte zulässig. Diese sind +\autoref{tab:scrlayer-scrpage.symbolic.values} zu entnehmen. + +Die Voreinstellung für \PName{Breite} ist die Breite des Textbereichs. Die +Voreinstellung für \PName{Offset} hängt von der gewählten \PName{Breite} +ab. In der Regel wird im einseitigen Satz die Hälfte des Unterschieds zwischen +\PName{Breite} und der Breite des Textbereichs verwendet. Damit wird der Kopf +über dem Textbereich zentriert. Im doppelseitigen Satz wird hingegen nur ein +Drittel des Unterschieds zwischen \PName{Breite} und der Breite des +Textbereichs verwendet. Ist \PName{Breite} jedoch die Breite des Textbereichs +zuzüglich der Marginalienspalte, so ist die Voreinstellung von \PName{Offset} +immer Null. Falls Ihnen das zu kompliziert ist, sollten Sie den gewünschten +\PName{Offset} einfach selbst angeben.% +% +\begin{table} + \centering + \caption[Symbolische Werte für Option \Option{headwidth} und + \Option{footwidth}]{Erlaubte symbolische Werte für \PName{Breite} bei den + Optionen \Option{headwidth} und \Option{footwidth}} + \label{tab:scrlayer-scrpage.symbolic.values} + \begin{desctabular} + \entry{\PValue{foot}}{% + die aktuelle Breite des Fußes% + }% + \entry{\PValue{footbotline}}{% + die aktuelle Länge der horizontalen Linie unterhalb des Fußes% + }% + \entry{\PValue{footsepline}}{% + die aktuelle Länge der horizontalen Linie zwischen dem Textbereich und + dem Fuß% + } \entry{\PValue{head}}{% + die aktuelle Breite des Kopfes% + }% + \entry{\PValue{headsepline}}{% + die aktuelle Länge der horizontalen Linie zwischen dem Kopf und dem + Textbereich% + }% + \entry{\PValue{headtopline}}{% + die aktuelle Länge der horizontalen Linie über dem Kopf% + }% + \entry{\PValue{marginpar}}{% + die Breite der Marginalienspalte einschließlich des Abstandes zwischen + dem Textbereich und der Marginalienspalte% + }% + \entry{\PValue{page}}{% + die Breite der Seite unter Berücksichtigung einer eventuell mit Hilfe + des Pakets \Package{typearea} definierten Bindekorrektur (siehe Option + \DescRef{typearea.option.BCOR} in \autoref{sec:typearea.typearea}, + \DescPageRef{typearea.option.BCOR})% + }% + \entry{\PValue{paper}}{% + die Breite des Papiers ohne Berücksichtigung einer etwaigen + Bindekorrektur% + }% + \entry{\PValue{text}}{% + die Breite des Textbereichs% + }% + \entry{\PValue{textwithmarginpar}}{% + die Breite des Textbereichs einschließlich der Marginalienspalte und + natürlich des Abstandes zwischen den beiden (Achtung: Nur in diesem Fall + ist die Voreinstellung für \PName{Offset} Null)% + }% + \end{desctabular} +\end{table} +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{headtopline}{Dicke\textup{:}Länge} + \OptionVName{headsepline}{Dicke\textup{:}Länge} + \OptionVName{footsepline}{Dicke\textup{:}Länge} + \OptionVName{footbotline}{Dicke\textup{:}Länge} +\end{Declaration} +\BeginIndex{Option}{headtopline~=\PName{Dicke\textup{:}Länge}}% +\BeginIndex{Option}{headsepline~=\PName{Dicke\textup{:}Länge}}% +\BeginIndex{Option}{footsepline~=\PName{Dicke\textup{:}Länge}}% +\BeginIndex{Option}{footbotline~=\PName{Dicke\textup{:}Länge}}% +Während die \KOMAScript-Klassen nur eine Trennlinie unter dem Kopf und eine +weitere über dem Fuß unterstützen und man diese nur wahlweise ein- und +ausschalten kann, erlaubt das Paket \Package{scrlayer-scrpage} auch noch eine +Linie über dem Kopf und unter dem Fuß, und man kann bei diesen beiden sowohl +die \PName{Länge} als auch die \PName{Dicke} konfigurieren. + +Beide Werte sind optional. Lässt man die \PName{Dicke} weg, so wird +0,4\Unit{pt} angenommen, also eine Haarlinie produziert. Verzichtet man auf +eine Angabe der \PName{Länge}, so wird die Breite des Kopfes respektive des +Fußes als gewünschter Wert angenommen. Wird beides weggelassen, so kann auch +der Doppelpunkt entfallen. Wird nur ein Wert ohne Doppelpunkt angegeben, so +ist dies die \PName{Dicke}. + +Natürlich darf die \PName{Länge} nicht nur kürzer als die aktuelle Breite des +Kopfes respektive des Fußes sein. Sie darf auch länger sein. Siehe dazu auch +die Optionen \DescRef{\LabelBase.option.ilines}\IndexOption{ilines}% +\important{\DescRef{\LabelBase.option.ilines}, + \DescRef{\LabelBase.option.clines}, \DescRef{\LabelBase.option.olines}}, +\DescRef{\LabelBase.option.clines}\IndexOption{clines} und +\DescRef{\LabelBase.option.olines}\IndexOption{olines}, die später in diesem +Abschnitt erklärt werden. + +\BeginIndexGroup +\BeginIndex{FontElement}{headtopline}\LabelFontElement{headtopline}% +\BeginIndex{FontElement}{headsepline}\LabelFontElement{headsepline}% +\BeginIndex{FontElement}{footsepline}\LabelFontElement{footsepline}% +\BeginIndex{FontElement}{footbotline}\LabelFontElement{footbotline}% +Neben der Dicke und der Länge kann man auch die Farben der Linien +ändern. Zunächst richtet sich diese natürlich nach der Farbe, die für den Kopf +und den Fuß eingestellt ist. Davon unabhängig werden aber auch noch die +Einstellungen für die gleich benannten +\important[i]{\FontElement{headtopline}\\ + \FontElement{headsepline}\\ + \FontElement{footsepline}\\ + \FontElement{footbotline}}Elemente \FontElement{headtopline}, +\FontElement{headsepline}, \FontElement{footsepline} und +\FontElement{footbotline} angewendet. Diese können mit den Anweisungen +\DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} geändert werden (siehe +\autoref{sec:scrlayer-scrpage.textmarkup}, ab +\DescPageRef{\LabelBase.cmd.setkomafont}). In der Voreinstellung sind die +Einstellungen für diese Elemente leer, so dass sie zu keiner Änderung der +Schrift oder Farbe führen. Änderungen der Schrift sind im Gegensatz zu +Farbänderungen an dieser Stelle ohnehin nicht sinnvoll und werden daher nicht +empfohlen.% +\EndIndexGroup +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{plainheadtopline}{Ein-Aus-Wert} + \OptionVName{plainheadsepline}{Ein-Aus-Wert} + \OptionVName{plainfootsepline}{Ein-Aus-Wert} + \OptionVName{plainfootbotline}{Ein-Aus-Wert} +\end{Declaration} +Mit diesen Optionen können die Einstellungen für die Linien auch für den +\PageStyle{plain}-Seitenstil übernommen werden. Als \PName{Ein-Aus-Wert} +stehen die Standardwerte für einfache Schalter, die in +\autoref{tab:truefalseswitch} auf \autopageref{tab:truefalseswitch} angegeben +sind, zur Verfügung. Bei aktivierter Option werden die entsprechenden +Linieneinstellungen übernommen. Bei deaktivierter Option wird die +entsprechende Linie im \PageStyle{plain}-Seitenstil hingegen nicht angezeigt. +% +\EndIndexGroup + + +\begin{Declaration} + \Option{ilines} + \Option{clines} + \Option{olines} +\end{Declaration} +Wie bereits zuvor erklärt wurde, können Trennlinien für den Kopf oder Fuß +konfiguriert werden, die länger oder kürzer als die Breite des Kopfes +beziehungsweise des Fußes sind. Bisher blieb die Frage offen, wie diese Linien +dann ausgerichtet werden. In der Voreinstellung sind sie im einseitigen Satz +linksbündig und im doppelseitigen Satz bündig mit dem Anfang des inneren +Randes. Dies entspricht Option \Option{ilines}. Alternativ können sie jedoch +mit Option \Option{clines} auch horizontal bezüglich der Breite des Kopfes +beziehungsweise Fußes zentriert werden. Ebenso ist mit Hilfe von Option +\Option{olines} eine Ausrichtung am äußeren beziehungsweise rechten Rand +möglich.% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "../guide" +%%% End: + +% LocalWords: Paketoptionen Ebenenmodell Sternvariante Sternform Längenwert + + +% LocalWords: Titelkopf Automatismen Bindekorrektur diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer.tex new file mode 100644 index 0000000000..9b755255d6 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlayer.tex @@ -0,0 +1,1805 @@ +% ====================================================================== +% scrlayer.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlayer.tex +% Copyright (c) Markus Kohm, 2013-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrlayer of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel über scrlayer in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrlayer.tex}% + [$Date: 2018-12-15 15:01:34 +0100 (Sat, 15 Dec 2018) $ + KOMA-Script guide (chapter:scrlayer)] + +\chapter[{Definition von Ebenen und Seitenstilen mit \Package{scrlayer}}] + {Definition\ChangedAt{v3.12}{\Package{scrlayer}} von Ebenen und Seitenstilen + mit \Package{scrlayer}} +\labelbase{scrlayer} + +\BeginIndexGroup +\BeginIndex{Package}{scrlayer}% +\BeginIndex{}{Ebenen}% +Anwender von Grafikprogrammen sind mit dem Modell der Ebenen für eine Seite +bereits vertraut. \LaTeX{} selbst ist ein solches Modell jedoch eher +fremd. Dennoch gibt es bereits einige Pakete wie \Package{eso-pic} oder +\Package{textpos}, mit denen bereits eine Art Hintergrund- oder +Vor\-der\-grund\-ebe\-ne in \LaTeX{} verfügbar gemacht wurden. Das Paket +\Package{scrlayer} ist ein weiteres Paket, das solche Hintergrund- und +Vordergrundebenen zur Verfügung stellt. Im Unterschied zu den anderen +genannten Paketen sind die Ebenen bei \Package{scrlayer} jedoch Teil des +Seitenstils. Dadurch ist eine einfache Umschaltung zwischen der Verwendung +unterschiedlicher Ebenen durch die Umschaltung des Seitenstils möglich. + +Um dies zu erreichen, stellt das Paket auf unterer Stufe zusätzlich eine +Schnittstelle zur Definition von Seitenstilen, die auf einem Stapel oder einer +Liste von Ebenen beruhen, zum Hinzufügen von Ebenen wahlweise am Anfang oder +Ende einer solchen Liste von Ebenen oder unmittelbar vor oder hinter einer +anderen Ebene in einer solchen Liste, zum Löschen einer Ebene aus einer +solchen Liste und zum Löschen aller Dubletten einer Ebene aus einer solchen +Liste bereit. Oder kurz und verständlich gesagt: Die Seitenstil-Schnittstelle +von \Package{scrlayer} stellt Befehle bereit, um einen Seitenstil, der auf +einer Liste von Ebenen basiert, zu definieren und diese Ebenenliste zu +verwalten. + +Nichtsdestoweniger wird die direkte Verwendung der Ebenen nur erfahrenen +Anwendern empfohlen. Schnittstellen für Anfänger und durchschnittliche +Anwender werden als zusätzliche Pakete angeboten, die dann ihrerseits +\Package{scrlayer} laden. Siehe hierzu \autoref{cha:scrlayer-scrpage} in +\autoref{part:forAuthors} diese\iffree{r Anleitung}{s Buches}. + + +\LoadCommonFile{options} % \section{Frühe oder späte Optionenwahl} + + +\section{Einige grundlegende Informationen} +\seclabel{generic.information} + +Das Paket benötigt einige grundlegende Informationen über die +verwendete Klasse. Autoren von Klassen können \Package{scrlayer} helfen, indem +sie entsprechende Angaben machen. Anderenfalls versucht das Paket diese +Informationen selbst zu ermitteln. Das funktioniert beispielsweise für die +Standardklassen oder für die \KOMAScript-Klassen. Mit anderen Klassen kann es +funktionieren oder auch ganz oder teilweise fehlschlagen. + +Dieser Abschnitt beschreibt einige der Informationen, die Autoren von Klassen +bereitstellen können. Anwender sollten sich im Normalfall nicht darum zu +kümmern brauchen. + +\begin{Declaration} + \Macro{if@chapter}\ \PName{Dann-Code}\ % + \textMacro{else}\ \PName{Sonst-Code}\ \textMacro{fi} +\end{Declaration} +Wenn \Macro{if@chapter} definiert ist und \Macro{iftrue}\IndexCmd{iftrue} +entspricht, berücksichtigt \Package{scrlayer} bei seiner Arbeit die +Kapitel-Ebene beispielsweise bei Verwendung von Option +\DescRef{\LabelBase.option.automark}. Wenn es definiert ist, aber nicht +\Macro{iftrue} entspricht, behandelt \Package{scrlayer} nur die Ebenen der +Befehle \DescRef{maincls.cmd.part}, \DescRef{maincls.cmd.section}, +\DescRef{maincls.cmd.subsection}, \Macro{sub\dots subsection}, +\DescRef{maincls.cmd.paragraph}, \DescRef{maincls.cmd.subparagraph}, +\Macro{sub\dots subparagraph}. Wenn das Makro nicht definiert ist, macht +\Package{scrlayer} die Frage, ob auch die Kapitel-Ebene zu behandeln ist, an +der Anweisung \DescRef{maincls.cmd.chapter} fest. Ist diese Anweisung +definiert und entspricht sie nicht \Macro{relax}, dann definiert +\Package{scrlayer} das Makro \Macro{if@chapter} selbst als Synonym für +\Macro{iftrue}. Anderenfalls definiert es \Macro{if@chapter} als Synonym für +\Macro{iffalse}\IndexCmd{iffalse}.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{if@mainmatter}\ \PName{Dann-Code}\ % + \textMacro{else}\ \PName{Sonst-Code}\ \textMacro{fi} +\end{Declaration} +Klassen wie \Class{book} oder \Class{scrbook} bieten +\DescRef{maincls.cmd.frontmatter}\IndexCmd{frontmatter}, +\DescRef{maincls.cmd.mainmatter}\IndexCmd{mainmatter} und +\DescRef{maincls.cmd.backmatter}\IndexCmd{backmatter}, um zwischen Vorderteil, +Hauptteil und Endteil eines Buches umschalten zu können. In der Regel +verwenden diese Klassen intern \Macro{if@mainmatter}, um entscheiden zu +können, ob gerade im Hauptteil des Dokuments gearbeitet wird oder +nicht. Klassen wie \Class{report} oder \Class{article} haben kein +\DescRef{maincls.cmd.frontmatter}, \DescRef{maincls.cmd.mainmatter} oder +\DescRef{maincls.cmd.backmatter} und deshalb auch kein +\Macro{if@mainmatter}. Stattdessen gehen sie davon aus, dass es nur einen +Hauptteil gibt. + +Für \Package{scrlayer} ist es aber einfacher, nicht ständig erneut die +Existenz und Verwendung der Umschaltanweisungen zu erkennen und damit zu +entscheiden, ob nun gerade im Hauptteil gearbeitet wird oder nicht, sondern +stattdessen auch bei Klassen wie \Class{report} oder \Class{article} mit +\Macro{if@mainmatter} zu arbeiten. Das sollte bei den genannten Klassen dann +schlicht \Macro{iftrue}\IndexCmd{iftrue} entsprechen. Wenn also +\Macro{if@mainmatter} nicht definiert ist, dann definiert \Package{scrlayer} +es als Synonym für \Macro{iftrue}. + +Einige Klassen definieren jedoch \DescRef{maincls.cmd.frontmatter}, +\DescRef{maincls.cmd.mainmatter} oder \DescRef{maincls.cmd.backmatter} und +trotzdem kein \Macro{if@mainmatter}. In diesem Fall definiert +\Package{scrlayer} \Macro{if@mainmatter} ebenfalls als Synonym für +\Macro{iftrue} und erweitert darüber hinaus die gefundenen Definitionen von +\DescRef{maincls.cmd.frontmatter}, \DescRef{maincls.cmd.mainmatter} und +\DescRef{maincls.cmd.backmatter} so, dass diese \Macro{if@mainmatter} passend +umdefinieren. Falls es jedoch weitere, vergleichbare Befehle zur Umschaltung +zwischen unterschiedlichen Dokumentteilen gibt, so kennt \Package{scrlayer} +diese nicht, testet nicht auf diese und erweitert sie daher auch nicht +passend. In diesem Fall ist \Package{scrlayer} also auf die Mitarbeit des +Klassenautors angewiesen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DeclareSectionNumberDepth}\Parameter{Name~der~Gliederungsebene} + \Parameter{Tiefe~der~Gliederungsebene} +\end{Declaration} +Jeder Gliederungsebene ist normalerweise eine nummerische Tiefe +zugeordnet. Das ist notwendig, damit \LaTeX{} die Hierarchie der +Gliederungsebenen verwalten kann. Allerdings sind die Werte +nur der jeweiligen Klasse bekannt, in der die Gliederungsbefehle definiert +sind. Diese setzt dann in den entsprechenden \LaTeX-Befehlen selbst die +zugehörigen Nummern ein. + +{\setlength{\emergencystretch}{1em}% +Das Paket \Package{scrlayer} benötigt ebenfalls Informationen über die +Hierarchie. Mit Hilfe von \Macro{DeclareSectionNumberDepth} kann +\Package{scrlayer} zum Namen einer Gliederungsebene die zugehörige nummerische +Tiefe bekannt gemacht werden. Für die Standardklassen wäre \PName{Name der + Gliederungsebene} beispielsweise \PValue{part}, \PValue{chapter}, +\PValue{section}, \PValue{subsection}, \PValue{subsubsection}, +\PValue{paragraph} oder \PValue{subparagraph} und die jeweils zugehörige +\PName{Tiefe der Gliederungsebene} wäre -1, 0, 1, 2, 3, 4 oder 5.\par} + +Das Paket \Package{scrlayer} versucht, diese nummerischen Werte zunächst beim +Laden des Pakets und noch einmal während \Macro{begin}\PParameter{document} +selbst zu ermitteln. Aber für den Fall, dass dies einmal nicht zu einem +korrekten Ergebnis führt, beispielsweise falls es vollkommen andere +Gliederungsbefehle gibt, kann man die Zuordnung eben mit +\Macro{DeclareSectionNumberDepth} auch explizit vornehmen.% +% +\EndIndexGroup + + +\section{Deklaration von Ebenen} +\seclabel{layers} + +Eine Ebene (engl. \emph{layer}) ist ein Denkmodell für eine Seite. Im +Gegensatz zu echtem, physischem Papier ist diese Seite vollständig +transparent. Üblicherweise werden mehrere Ebenen übereinander gestapelt und +undurchsichtiges Material auf einer Ebene überdeckt Material auf den Ebenen +darunter. Ein solcher Stapel von Ebenen wird dann auf eine reale Seite Papier +abgebildet. Das Paket \Package{scrlayer} stellt zwei solche Stapel für jede +Seite zur Verfügung: einen Hintergrundstapel und einen Vordergrundstapel. Der +Hintergrundstapel befindet sich unter oder hinter dem normalen Seiteninhalt, +während der Vordergrundstapel über oder vor dem normalen Seiteninhalt +ausgegeben wird. Der normale Seiteninhalt ist daher eine Art von Trennebene +zwischen den beiden Ebenenstapeln. + +Eine Ebene hat mehrere Eigenschaften, die als Antworten auf grundlegende +Fragen verstanden werden können: +\iffree{\begin{description}}{% + \begingroup + \RedeclareSectionCommand[beforeskip=.5\baselineskip plus .25\baselineskip + minus .1\baselineskip]{paragraph}% + \renewcommand*\item[4][]{\paragraph*{#3{#4}#1}}% +}% +\item[Gehört die Ebene zum Vordergrund oder zum Hintergrund?]% + \leavevmode\textnote{Vorder- oder Hintergrund}\hskip 0pt + Hintergrundebenen werden ausgegeben, bevor der normale Inhalt der Seite + gedruckt wird. Optisch erscheinen sie daher \emph{hinter} oder \emph{unter} + dem normalen Inhalt der Seite. Vordergrundebenen werden an den normalen + Inhalt anschließend ausgegeben. Optisch erscheinen sie daher \emph{vor}, + \emph{auf} oder \emph{über} dem normalen Inhalt der Seite. In der + Voreinstellung ist eine Ebene sowohl eine Hintergrundebene als auch eine + Vordergrundebene und wird daher zweimal ausgegeben. Normalerweise ist es + daher sinnvoll, dies explizit einzuschränken. +\item[An welcher Position soll die Ebene ausgegeben + werden?]% + \leavevmode\textnote{horizontale und vertikale Position}\hskip 0pt + Zur Beantwortung dieser Frage dienen Eigenschaften zur Festlegung der + horizontalen und der vertikalen Position. +\item[Wie groß ist die Ebene?]% + \leavevmode\textnote{horizontale und vertikale Größe}\hskip 0pt + Ebenso wie für die Position gibt es auch für die horizontale und vertikale + Ausdehnung der Ebene Eigenschaften. Damit kann eine Ebene auch kleiner oder + größer als das Papier sein und an unterschiedlichen Positionen auf dem + Papier liegen. +\item[Wie werden die horizontale und die vertikale Position + gemessen?]% + \leavevmode\textnote{Ausrichtung}\hskip 0pt + Die Antwort auf diese Frage ist die Eigenschaft der Ausrichtung. Man kann + von der linken Papierkante zur linken Kante der Ebene, zur Mitte der Ebene + oder zur rechten Kante der Ebene messen. Entsprechend kann man von der + oberen Kante des Papiers zur oberen Kante der Ebene, zur Mitte der Ebene + oder zur unteren Kante der Ebene messen. +\item[Ist die Ebene für Textausgabe oder für Grafik vorgesehen?]% + \leavevmode\textnote{Text oder Grafik}\hskip 0pt + Auch diese Frage ist eng mit der Position verknüpft. Während der Anwender + bei der Grafikausgabe beispielsweise davon ausgeht, dass der Ursprung in der + linken unteren Ecke der Ebene liegt, wäre dies bei der Textausgabe eher + ungünstig. Daher liegt der Ursprung für Textebenen um die Höhe einer + Standardtextzeile unterhalb der oberen, linken Ecke der Ebene. Grafikebenen + wiederum spannen von sich aus bereits eine + \Environment{picture}-Umgebung\IndexEnv{picture} auf, in der zusätzliche + Befehle zur Positionierung zur Verfügung stehen. +\item[Soll die Ebene auf linken oder rechten Seiten eines Dokuments gedruckt + werden?]% + \leavevmode\textnote{linke oder rechte Seite}\hskip 0pt + In der Voreinstellung wird eine Ebene auf allen Seiten gedruckt. Es ist zu + beachten, dass \LaTeX{} Seiten mit geraden Seitenzahlen als linke Seiten und + Seiten mit ungeraden Seitenzahlen als rechte Seiten behandelt, dass es + jedoch im einseitigen Modus unabhängig von der Nummer nur rechte Seiten + gibt. \LaTeX{} bezeichnet, den Gepflogenheiten in der englischen Sprache + entsprechend, linke Seiten auch als gerade Seiten und rechte Seiten als + ungerade Seiten. +\item[Soll die Ebene in einseitigen oder in doppelseitigen Dokumenten + verwendet werden?]% + \leavevmode\textnote{einseitig oder doppelseitig}\hskip 0pt + In der Voreinstellung ist die Ebene diesbezüglich unbeschränkt, wird also + sowohl im einseitigen als auch im doppelseitigen Modus + ausgegeben. Nichtsdestotrotz wird eine Ebene, die auf gerade Seiten + beschränkt ist, im einseitigen Modus niemals ausgegeben werden und ist daher + auch keine einseitige Ebene. +\item[Soll die Ebene auf Gleitseiten oder auf Normalseiten ausgegeben + werden?]% + \leavevmode\textnote{Gleitseiten oder Normalseiten}\hskip 0pt + \LaTeX{} erzeugt Gleitseiten für Objekte aus Umgebungen wie + \Environment{table} oder \Environment{figure}, wenn diesen erlaubt wurde, + auf eigenen Seiten ohne Teile des normalen Dokumentinhalts ausgegeben zu + werden (siehe Option \PValue{p} für \Environment{table} oder + \Environment{figure}). In gewisser Weise ist es so der gesamten Seite + erlaubt, im Dokument zu gleiten. Normalseiten in diesem Sinne sind alle + Seiten, die keine Gleitseiten sind. Normalseiten können ebenfalls + Gleitumgebungen am Anfang, im Inneren oder am Ende enthalten. Sehr große + Gleitumgebungen können auch den Eindruck einer Gleitseite erzeugen, obwohl + es sich bei ihnen in Wirklichkeit um oben auf einer Normalseite platzierte + Gleitumgebungen handelt. +\item[Welchen Inhalt hat die Ebene?] + \leavevmode\textnote{Inhalt}\hskip 0pt + Die zugehörige Eigenschaft gibt schlicht an, was gedruckt werden soll, wann + immer die Ebene ausgegeben wird. +\iffree{\end{description}}{% + \endgroup\par\bigskip\noindent\ignorespaces +}% +Damit haben wir derzeit acht Fragen an die Ebenen, aus denen sich unmittelbar +eine Reihe von Eigenschaften ergeben. Später +\iffree{in dieser Anleitung }{}% Umbruchkorrektur +werden wir weitere Eigenschaften kennenlernen, die jedoch auf diese primären +Eigenschaften abgebildet werden können. + +\begin{Declaration} + \Macro{DeclareLayer}\OParameter{Optionenliste}\Parameter{Name der Ebene} + \Macro{DeclareNewLayer}\OParameter{Optionenliste}\Parameter{Name der Ebene} + \Macro{ProvideLayer}\OParameter{Optionenliste}\Parameter{Name der Ebene} + \Macro{RedeclareLayer}\OParameter{Optionenliste}\Parameter{Name der Ebene} + \Macro{ModifyLayer}\OParameter{Optionenliste}\Parameter{Name der Ebene} +\end{Declaration} +Diese Anweisungen können verwendet werden, um Ebenen zu definieren. Der +\PName{Name der Ebene} muss voll expandierbar sein. Die Expansion sollte in +ASCII-Buchstaben resultieren. Einige zusätzliche Zeichen werden ebenfalls +akzeptiert, ihre Verwendung wird jedoch nur erfahrenden Anwendern empfohlen. + +Bei Verwendung von \Macro{DeclareLayer}\important{\Macro{DeclareLayer}} spielt +es keine Rolle, ob eine Ebene \PName{Name der Ebene} bereits existiert oder +nicht. Sie wird in jedem Fall mit den über die \PName{Optionenliste} +angegebenen Eigenschaften definiert. Einzelne Optionen bestehen entweder nur +aus einem Schlüssel oder aus einem Schlüssel, gefolgt von einem +Gleichheitszeichen und einem Wert. Die Optionen sind durch Komma voneinander +getrennt. Um innerhalb der Werte einer Option ein Komma oder ein Leerzeichen +verwenden zu können, muss der entsprechende Wert in geschweifte Klammern +gesetzt werden. Eine Übersicht über die Optionen und die Eigenschaften, die +sie repräsentieren, findet sich in \autoref{tab:scrlayer.layerkeys}. + +Im Unterschied zu \Macro{DeclareLayer} meldet +\Macro{DeclareNewLayer}\important{\Macro{DeclareNewLayer}} einen Fehler, falls +eine Ebene mit dem angegebenen Namen bereits existiert. Damit wird der +Anwender davor bewahrt, versehentlich mehrmals denselben Namen zu +verwenden. Dies ist insbesondere auch dann nützlich, wenn Klassen oder Pakete +intern ebenfalls Ebenen definieren. + +Dagegen definiert \Macro{ProvideLayer}\important{\Macro{ProvideLayer}} die +Ebene nur, wenn nicht bereits eine Ebene mit dem angegebenen Namen +existiert. Wird der Name hingegen bereits für eine andere Ebene verwendet, so +wird die neuerliche Definition ignoriert. Die Anweisung hat also die +Bedeutung: \emph{Definiere die Ebene, falls sie noch nicht existiert.} + +Soll eine bereits existierende Ebene umdefiniert werden, so kann wahlweise +\Macro{RedeclareLayer} oder \Macro{ModifyLayer} verwendet werden. Während mit +\Macro{RedeclareLayer}\important{\Macro{RedeclareLayer}} die Ebene zunächst +auf die Grundeinstellungen zurückgesetzt und damit über die angegebene +\PName{Optionenliste} komplett neu definiert wird, unterbleibt bei +\Macro{ModifyLayer}\important{\Macro{ModifyLayer}} das Zurücksetzen. Es werden +dann nur die Eigenschaften geändert, für die in der \PName{Optionenliste} auch +Angaben vorhanden sind. Die Anwendung auf eine zuvor noch nicht definierte +Ebene stellt bei beiden Anweisungen einen Fehler dar. + +\begin{desclist} + \desccaption{% + Optionen für die Definition von Seiten-Ebenen mit ihrer jeweiligen + Bedeutung als Ebenen-Eigenschaft\label{tab:scrlayer.layerkeys}% + }{% + Optionen für die Definition von Ebenen (\emph{Fortsetzung})% + }% + \entry{% + \ChangedAt{v3.16}{\Package{scrlayer}}% + \OptionVName{addcontents}{Code}}{% + Der angegebene Wert wird an den aktuellen Wert des Attributs + \Option{contents} angehängt. Es wird also ein zusätzlicher Inhalt + generiert. Zu näheren Informationen über die Behandlung von \PName{Code} + siehe Option \Option{contents}.% + }% + \entry{% + \ChangedAt{v3.16}{\Package{scrlayer}}% + \OptionVName{addheight}{zusätzliche Höhe}}{% + Der aktuelle Wert von Attribut \Option{height} wird um den Wert dieser + Option erhöht. Als Wert sind die gleichen Angaben wie bei + \Option{height} möglich.% + }% + \entry{% + \ChangedAt{v3.16}{\Package{scrlayer}}% + \OptionVName{addhoffset}{zusätzlicher horizontaler Abstand}}{% + Der aktuelle Wert von Attribut \Option{hoffset} wird um den Wert dieser + Option erhöht. Als Wert sind die gleichen Angaben wie bei + \Option{hoffset} möglich.% + }% + \entry{% + \ChangedAt{v3.16}{\Package{scrlayer}}% + \OptionVName{addvoffset}{zusätzlicher vertikaler Abstand}}{% + Der aktuelle Wert von Attribut \Option{voffset} wird um den Wert dieser + Option erhöht. Als Wert sind die gleichen Angaben wie bei + \Option{voffset} möglich.% + }% + \entry{% + \ChangedAt{v3.16}{\Package{scrlayer}}% + \OptionVName{addwidth}{zusätzliche Breite}}{% + Der aktuelle Wert von Attribut \Option{width} wird um den Wert dieser + Option erhöht. Als Wert sind die gleichen Angaben wie bei + \Option{width} möglich.% + }% + \nentry{\OptionVName{align}{Ausrichtungszeichen}}{% + Über die \PName{Ausrichtungszeichen} wird die gewünschte Ausrichtung der + Ebene bestimmt. Dabei steht jedes einzelne \PName{Ausrichtungszeichen} für + eine mögliche Anwendung der Werte \PName{Abstand} der Optionen + \Option{hoffset} oder \Option{voffset}. Mehrere + \PName{Ausrichtungszeichen} können ohne Leerzeichen oder Komma direkt + hintereinander geschrieben werden und werden in der Reihenfolge ihres + Auf"|tretens ausgewertet. Makros sind im Wert der Option jedoch + nicht zulässig. Zulässige \PName{Ausrichtungszeichen} sind: + \begin{description} + \item[\PValue{b} --] der Wert der Option \Option{voffset} ist der Abstand + der Unterkante der Ebene von der Oberkante des Papiers. + \item[\PValue{c} --] die Werte der Optionen \Option{hoffset} und + \Option{voffset} sind die Abstände des Zentrums der Ebene von der linken + und der oberen Kante des Papiers. + \item[\PValue{l} --] der Wert der Option \Option{hoffset} ist der Abstand + der linken Kante der Ebene von der linken Kante des Papiers. + \item[\PValue{r} --] der Wert der Option \Option{hoffset} ist der Abstand + der rechten Kante der Ebene von der linken Kante des Papiers. + \item[\PValue{t} --] der Wert der Option \Option{voffset} ist der Abstand + der Oberkante der Ebene von der Oberkante des Papiers. + \end{description} + }% + \entry{\KOption{area}\Parameter{horizontaler Abstand}\Parameter{vertikaler + Abstand}\Parameter{Breite}\Parameter{Höhe}}{% + Die zusammengesetzte Eigenschaft resultiert in den primären Eigenschaften + \OptionVName{hoffset}{horizontaler Abstand}, + \OptionVName{voffset}{vertikaler Abstand}, + \OptionVName{width}{Breite}, \KOption{height}{Höhe}.% + }% + \entry{\ChangedAt{v3.18}{\Package{scrlayer}}% + \Option{backandforeground}}{% + Mit dieser Option wird die Einschränkung der Ebene auf den Vorder- oder + Hintergrund wieder aufgehoben und diesbezüglich die Grundeinstellung + wieder hergestellt. In der Regel ist dies wenig sinnvoll, daher existiert + die Option nur aus Gründen der Vollständigkeit. Diese Option erwartet und + erlaubt keinen Wert.% + }% + \entry{\Option{background}}{% + Mit dieser Option wird die Ebene zu einer reinen Hintergrundebene. Sie + wird also im Gegensatz zur Grundeinstellung nicht mehr gleichzeitig im + Hintergrund und im Vordergrund, sondern nur noch im Hintergrund + ausgegeben. Diese Option erwartet und erlaubt keinen Wert.% + }% + \entry{\Option{bottommargin}}{% + Die zusammengesetzte Eigenschaft setzt die primären Eigenschaften + \Option{hoffset}, \Option{voffset}, \Option{width}, \Option{height} und + \Option{align} so, dass die Ebene horizontal von der linken Kante bis zur + rechten Kante des Papiers reicht und vertikal den gesamten Bereich unter + dem Seitenfuß bis zur unteren Papierkante abdeckt. Diese Option erwartet + und erlaubt keinen Wert.% + }% + \entry{\OptionVName{clone}{Name einer Ebene}}{% + Die zusammengesetzte Eigenschaft setzt alle primären Eigenschaften + entsprechend der aktuellen, primären Eigenschaften der Ebene mit dem + angegebenen \PName{Name einer Ebene}. Bezüglich \PName{Name + einer Ebene} siehe die Hinweise zu \PName{Name der Ebene} am Anfang der + Erklärung zu \Macro{DeclareLayer}. Darüber hinaus muss die zu klonende + Ebene bereits definiert sein.% + }% + \entry{\OptionVName{contents}{Code}}{% + Der angegebene \PName{Code} wird immer dann expandiert und ausgeführt, + wenn die Ebene ausgegeben wird. Damit definiert \PName{Code} das, was auf + der Ebene zu sehen ist. Es werden keine Tests durchgeführt, ob + \PName{Code} gültig und korrekt ist. Fehler in \PName{Code} können daher + zu verschiedenen Fehlermeldungen auf jeder Seite führen, auf der die Ebene + ausgegeben wird.% + }% + \entry{\Option{evenpage}}{% + Mit dieser Option wird die Ebene zu einer Ebene für linke Seiten. Sie wird + also im Gegensatz zur Grundeinstellung nicht mehr sowohl auf linken als + auch auf rechten Seiten ausgegeben. Da es linke Seiten nur im + doppelseitigen Satz gibt, schließt diese Eigenschaft quasi + \Option{twoside} mit ein. Diese Option erwartet und erlaubt keinen Wert.% + }% + \entry{\ChangedAt{v3.18}{\Package{scrlayer}}% + \Option{everypage}}{% + Dies ist eine Kombination von \Option{oddorevenpage} und + \Option{floatornonfloatpage}. Diese Option erwartet und erlaubt keinen + Wert.% + }% + \entry{\ChangedAt{v3.18}{\Package{scrlayer}}% + \Option{everyside}}{% + Mit dieser Option wird die Einschränkung der Ebene auf den einseitigen + oder den doppelseitigen Satz aufgehoben. Sie wird damit wie in der + Voreinstellung wieder sowohl im einseitigen als auch im doppelseitigen + Satz ausgegeben. Diese Option erwartet und erlaubt keinen Wert.% + }% + \entry{\ChangedAt{v3.18}{\Package{scrlayer}}% + \Option{floatornonfloatpage}}{% + Mit dieser Option wird die Einschränkung der Ebene auf Gleitseiten oder + Seiten, die keine Gleitseiten sind, aufgehoben und diesbezüglich die + Voreinstellung wieder hergestellt. Diese Option erwartet und erlaubt + keinen Wert.% + }% + \entry{\Option{floatpage}}{% + Mit dieser Option wird die Ebene zu einer Gleitseitenebene. Sie wird also + im Gegensatz zur Grundeinstellung nicht mehr auf allen Seiten, sondern nur + noch auf Gleitseiten ausgegeben. Näheres zu Gleitseiten ist der Einleitung + zu diesem Abschnitt zu entnehmen. Diese Option erwartet und erlaubt keinen + Wert.% + }% + \entry{\Option{foot}}{% + Die zusammengesetzte Eigenschaft setzt die primären Eigenschaften + \Option{hoffset}, \Option{voffset}, \Option{width}, \Option{height} und + \Option{align} so, dass die Ebene den Seitenfuß in der Breite des + Textbereichs überdeckt. Diese Option erwartet und erlaubt keinen Wert.% + }% + \entry{\Option{footskip}}{% + Die zusammengesetzte Eigenschaft setzt die primären Eigenschaften + \Option{hoffset}, \Option{voffset}, \Option{width}, \Option{height} und + \Option{align} so, dass die Ebene vertikal den Bereich zwischen dem + Textbereich und dem Seitenfuß in Breite des Textbereichs überdeckt. Es ist + zu beachten, dass die Höhe dieses Bereichs zwar von der Länge + \Length{footskip} abhängt, dieser jedoch nicht entspricht. Diese Option + erwartet und erlaubt keinen Wert.% + }% + \entry{\Option{foreground}}{% + Mit dieser Option wird die Ebene zu einer reinen Vordergrundebene. Sie + wird also im Gegensatz zur Grundeinstellung nicht mehr gleichzeitig im + Hintergrund und im Vordergrund, sondern nur noch im Vordergrund + ausgegeben. Diese Option erwartet und erlaubt keinen Wert.% + }% + \entry{\Option{head}}{% + Die zusammengesetzte Eigenschaft setzt die primären Eigenschaften + \Option{hoffset}, \Option{voffset}, \Option{width}, \Option{height} und + \Option{align} so, dass die Ebene den Seitenkopf in der Breite des + Textbereichs überdeckt. Diese Option erwartet und erlaubt keinen Wert.% + }% + \entry{\Option{headsep}}{% + Die zusammengesetzte Eigenschaft setzt die primären Eigenschaften + \Option{hoffset}, \Option{voffset}, \Option{width}, \Option{height} und + \Option{align} so, dass die Ebene den Abstand zwischen dem Seitenkopf und + dem Textbereich in der Breite des Textbereichs überdeckt. Ihre Höhe + entspricht damit der Länge \Length{headsep}. Diese Option erwartet und + erlaubt keinen Wert.% + }% + \entry{\OptionVName{height}{Höhe}}{% + Setzt die \PName{Höhe} der Ebene. Beachten Sie, dass \PName{Höhe} + wahlweise eine \LaTeX-Länge sein kann, die mit \Macro{newlength} definiert + wurde, eine \TeX-Länge, die mit \Macro{newdimen} oder \Macro{newskip} + definiert wurde, ein Längenwert wie 10\Unit{pt} oder ein Längenausdruck + unter Verwendung von +, -, /, *, (, und ). Die genaue Syntax eines + Längenausdrucks ist \cite[Abschnitt~3.5]{manual:eTeX} zu entnehmen.% + }% + \entry{\OptionVName{hoffset}{Abstand}}{% + Setzt den \PName{Abstand} der Ebene von der linken Kante des Papiers. Wie + der \PName{Abstand} gemessen wird, hängt von Eigenschaft \Option{align} + ab. Beachten Sie, dass \PName{Abstand} wahlweise eine \LaTeX-Länge sein + kann, die mit \Macro{newlength} definiert wurde, eine \TeX-Länge, die mit + \Macro{newdimen} oder \Macro{newskip} definiert wurde, ein Längenwert wie + 10\Unit{pt} oder ein Längenausdruck unter Verwendung von +, -, /, *, (, + und ). Die genaue Syntax eines Längenausdrucks ist + \cite[Abschnitt~3.5]{manual:eTeX} zu entnehmen.% + }% + \entry{\Option{innermargin}}{% + Die zusammengesetzte Eigenschaft setzt die primären Eigenschaften + \Option{hoffset}, \Option{voffset}, \Option{width}, \Option{height} und + \Option{align} so, dass die Ebene den inneren Rand der Seite von der + Papieroberkante bis zur Papierunterkante überdeckt. Der innere Rand + entspricht im einseitigen Satz dem linken Rand. Diese Option erwartet und + erlaubt keinen Wert.% + }% + \entry{\Option{leftmargin}}{% + Die zusammengesetzte Eigenschaft setzt die primären Eigenschaften + \Option{hoffset}, \Option{voffset}, \Option{width}, \Option{height} und + \Option{align} so, dass die Ebene den linken Rand der Seite von der + Papieroberkante bis zur Papierunterkante überdeckt. Diese Option erwartet + und erlaubt keinen Wert.% + }% + \entry{\ChangedAt{v3.19}{\Package{scrlayer}}% + \OptionVName{mode}{Modus}}{% + Diese primäre Eigenschaft bestimmt, in welchem \PName{Modus} der Inhalt der + Ebene ausgegeben wird. Die Voreinstellung ist \PValue{text}. Dabei wird + die oberste Grundlinie um die Höhe einer Standardtextzeile unterhalb der + Oberkante der Ebene platziert. Damit ist Text normalerweise sauber am + oberen Rand der Ebene ausgerichtet. Im \PValue{picture}-\PName{Modus} wird + hingegen eine \Environment{picture}-Umgebung mit dem Ursprung in der + linken, unteren Ecke der Ebene aufgespannt. Der ebenfalls vordefinierte + \PName{Modus} \PValue{raw} entspricht in der Voreinstellung \PValue{text}. + + Die %\textnote{Achtung!} + Änderung des \PName{Modus} einer Ebene führt in der Regel zu einer + Verschiebung des Inhalts. Außerdem stehen beispielsweise im \PName{Modus} + \PValue{picture} zusätzliche Platzierungsbefehle zur Verfügung, die in + einem anderen \PName{Modus} zu Fehlermeldungen führen. Daher ist es + normalerweise nicht sinnvoll, den \PName{Modus} einer Ebene nachträglich + zu ändern!% + }% + \entry{\Option{nonfloatpage}}{% + Mit dieser Option wird die Ebene auf Seiten beschränkt, die keine + Gleitseiten sind. Sie wird also im Gegensatz zur Grundeinstellung nicht + mehr auf allen Seiten, sondern nur noch auf Nichtgleitseiten + ausgegeben. Näheres zu Gleitseiten und Nichtgleitseiten ist der Einleitung + zu diesem Abschnitt zu entnehmen. Diese Option erwartet und erlaubt keinen + Wert.% + }% + \entry{\ChangedAt{v3.18}{\Package{scrlayer}}% + \Option{oddorevenpage}}{% + Mit dieser Option werden Beschränkungen der Ebene auf rechte oder linke + Seiten aufgehoben. Damit wird die Ebene wie in der Voreinstellung sowohl + auf linken als auch rechten Seiten ausgegeben. Diese Option erwartet und + erlaubt keinen Wert.% + }% + \entry{\Option{oddpage}}{% + Mit dieser Option wird die Ebene zu einer Ebene für rechte Seiten. Sie + wird also im Gegensatz zur Grundeinstellung nicht mehr sowohl auf linken + als auch auf rechten Seiten ausgegeben. Es ist zu beachten, dass im + einseitigen Satz alle Seiten unabhängig von der Seitenzahl rechte Seiten + sind. Diese Option erwartet und erlaubt keinen Wert.% + }% + \entry{\Option{oneside}}{% + Mit dieser Option wird die Ebene zu einer Ebene für den einseitigen + Satz. Sie wird also im Gegensatz zur Grundeinstellung nicht mehr sowohl im + einseitigen als auch im doppelseitigen Satz ausgegeben. Diese Option + erwartet und erlaubt keinen Wert.% + }% + \entry{\Option{outermargin}}{% + Die zusammengesetzte Eigenschaft setzt die primären Eigenschaften + \Option{hoffset}, \Option{voffset}, \Option{width}, \Option{height} und + \Option{align} so, dass die Ebene den äußeren Rand der Seite von der + Papieroberkante bis zur Papierunterkante überdeckt. Der äußere Rand + entspricht im einseitigen Satz dem rechten Rand. Diese Option erwartet und + erlaubt keinen Wert.% + }% + \entry{\Option{page}}{% + Die zusammengesetzte Eigenschaft setzt die primären Eigenschaften + \Option{hoffset}, \Option{voffset}, \Option{width}, \Option{height} und + \Option{align} so, dass die Ebene die komplette Seite überdeckt. Diese + Option erwartet und erlaubt keinen Wert.% + }% + \entry{\ChangedAt{v3.16}{\Package{scrlayer}}% + \OptionVName{pretocontents}{Code}}{% + Der angegebene Wert wird dem aktuellen Wert des Attributs + \Option{contents} vorangestellt. Es wird also ein zusätzlicher Inhalt vor + dem bisherigen Inhalt generiert. Zu näheren Informationen über die + Behandlung von \PName{Code} siehe Option \Option{contents}.% + }% + \entry{\Option{rightmargin}}{% + Die zusammengesetzte Eigenschaft setzt die primären Eigenschaften + \Option{hoffset}, \Option{voffset}, \Option{width}, \Option{height} und + \Option{align} so, dass die Ebene den rechten Rand der Seite von der + Papieroberkante bis zur Papierunterkante überdeckt. Diese Option erwartet + und erlaubt keinen Wert.% + }% + \entry{\Option{textarea}}{% + Die zusammengesetzte Eigenschaft setzt die primären Eigenschaften + \Option{hoffset}, \Option{voffset}, \Option{width}, \Option{height} und + \Option{align} so, dass die Ebene den kompletten Textbereich + überdeckt. Diese Option erwartet und erlaubt keinen Wert.% + }% + \entry{\Option{topmargin}}{% + Die zusammengesetzte Eigenschaft setzt die primären Eigenschaften + \Option{hoffset}, \Option{voffset}, \Option{width}, \Option{height} und + \Option{align} so, dass die Ebene den oberen Rand der Seite von der linken + Kante des Papiers bis zu dessen rechter Kante überdeckt. Diese Option + erwartet und erlaubt keinen Wert.% + }% + \entry{\Option{twoside}}{% + Mit dieser Option wird die Ebene zu einer Ebene für den doppelseitigen + Satz. Sie wird also im Gegensatz zur Grundeinstellung nicht mehr sowohl im + einseitigen als auch im doppelseitigen Satz ausgegeben. Diese Option + erwartet und erlaubt keinen Wert.% + }% + \entry{\ChangedAt{v3.18}{\Package{scrlayer}}% + \Option{unrestricted}}{% + Hebt alle Ausgabebeschränkungen auf. Damit ist die Option eine Kombination + von \Option{backandforeground}, \Option{everyside} und + \Option{floatornonfloatpage}. Diese Option erwartet und erlaubt keinen + Wert.% + }% + \entry{\OptionVName{voffset}{Abstand}}{% + Setzt den \PName{Abstand} der Ebene von der Papieroberkante. Wie der + \PName{Abstand} gemessen wird, hängt von Eigenschaft \Option{align} + ab. Beachten Sie, dass \PName{Abstand} wahlweise eine \LaTeX-Länge sein + kann, die mit \Macro{newlength} definiert wurde, eine \TeX-Länge, die mit + \Macro{newdimen} oder \Macro{newskip} definiert wurde, ein Längenwert wie + 10\Unit{pt} oder ein Längenausdruck unter Verwendung von +, -, /, *, (, + und ). Die genaue Syntax eines Längenausdrucks ist + \cite[Abschnitt~3.5]{manual:eTeX} zu entnehmen.% + }% + \entry{\OptionVName{width}{Breite}}{% + Setzt die \PName{Breite} der Ebene. Beachten Sie, dass \PName{Breite} + wahlweise eine \LaTeX-Länge sein kann, die mit \Macro{newlength} definiert + wurde, eine \TeX-Länge, die mit \Macro{newdimen} oder \Macro{newskip} + definiert wurde, ein Längenwert wie 10\Unit{pt} oder ein Längenausdruck + unter Verwendung von +, -, /, *, (, und ). Die genaue Syntax eines + Längenausdrucks ist \cite[Abschnitt~3.5]{manual:eTeX} zu entnehmen.% + }% +\end{desclist} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{layerhalign} + \Macro{layervalign} + \Macro{layerxoffset} + \Macro{layeryoffset} + \Macro{layerwidth} + \Macro{layerheight} +\end{Declaration} +Diese Anweisungen sind nur im mit \Option{contents}, \Option{addcontents} oder +\Option{pretocontents} angegebenen \PName{Code} gültig. Sie enthalten die +tatsächlich verwendete Ausrichtung, Position und Ausdehnung der Ebene während +deren Ausgabe. Dies ist jedoch nicht zwangsläufig auch die tatsächliche +Ausdehnung des Inhalts, falls dieser beispielsweise überbreit oder überhoch +ist oder die Ebene nicht komplett ausfüllt. + +Die primäre Ebeneneigenschaft \PValue{align} wird auf +\Macro{layerhalign}\ChangedAt{v3.19}{\Package{scrlayer}} und +\Macro{layervalign} abgebildet. Dabei werden die horizontalen Werte \PValue{l} +und \PValue{r} nur in \Macro{layerhalign} übernommen, während die vertikalen +Werte \PValue{t} und \PValue{b} nur in \Macro{layervalign} übernommen +werden. \iffree{Der sowohl horizontale als auch vertikale }{}% Umbruchkorrektur +Wert \PValue{c} wird in +beide Anweisungen übernommen. Sind bei \PValue{align} mehrere, +widersprüchliche Angaben zu finden, so gewinnt die jeweils letzte. Damit ist +also \Macro{layerhalign} immer entweder \PValue{l}, \PValue{c} oder \PValue{r} +und \Macro{layervalign} immer entweder \PValue{t}, \PValue{c} oder \PValue{b}. + +Eine\textnote{Achtung!} Umdefinierung der Anweisungen und damit Änderung der in +ihnen gespeicherten Werte ist nicht gestattet und führt zu unvorhersehbaren +Ergebnissen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{LenToUnit}\Parameter{Länge} +\end{Declaration} +Diese\ChangedAt{v3.19}{\Package{scrlayer}} Anweisung stammt ursprünglich von +\Package{eso-pic}\IndexPackage{eso-pic}\iffree{ ab + Version~2.0f}{}%Umbruchkorrektur +. Sie rechnet Längen-Werte in Vielfache von \Length{unitlength} um und kann +daher anstelle von Koordinaten oder anderen von \Length{unitlength} abhängigen +Werten einer \Environment{picture}-Umgebung verwendet werden. Siehe dazu auch +\cite{package:eso-pic} und die nachfolgende Erklärung zu \Macro{putUR}, +\Macro{putLL} und \Macro{putLR}. Die Anweisung wird nur definiert, wenn sie +nicht bereits beispielsweise durch das Laden von \Package{eso-pic} definiert +ist.% +\iffalse% Umbruchkorrekturtext +\par +Es sei an dieser Stelle darauf hingewiesen, dass man bei Verwendung von Paket +\Package{picture}\IndexPackage{picture}\textnote{\Package{picture}} (siehe +\cite{package:picture}) die Anweisung \Macro{LenToUnit} in der Regel nicht +mehr benötigt. Das Paket erweitert die \Environment{picture}-Umgebung und +deren Anweisung so, dass man für Koordinaten auch direkt \LaTeX-Längen +verwenden kann.% +\fi +\EndIndexGroup + + +\begin{Declaration} + \Macro{putUL}\Parameter{Inhalt} + \Macro{putUR}\Parameter{Inhalt} + \Macro{putLL}\Parameter{Inhalt} + \Macro{putLR}\Parameter{Inhalt} + \Macro{putC}\Parameter{Inhalt} +\end{Declaration} +Diese\ChangedAt{v3.19}{\Package{scrlayer}} Anweisungen können innerhalb der +primären Ebeneneigenschaft \PValue{contents} verwendet werden, wenn die Ebene +mit \OptionValue{mode}{picture} erstellt wurde. In diesem Fall platziert +\Macro{putUL} den \PName{Inhalt} relativ zur oberen, linken Ecke der Ebene und +entspricht damit +\lstinline[breaklines=false]|\put(0,\LenToUnit{\layerheight})|. \Macro{putUR} +platziert \PName{Inhalt} relativ zur oberen, rechten Ecke der Ebene und +entspricht damit +\lstinline[breaklines=false] +|\put(\LenToUnit{\layerwidth},\LenToUnit{\layerheight})|. +\iffree{}{\unskip\linebreak}% Umbruchkorrektur +\Macro{putLL} platziert \PName{Inhalt} relativ zur unteren, linken Ecke der +Ebene und entspricht damit +\lstinline[breaklines=false]|\put(0,0)|. \Macro{putLR} platziert +\PName{Inhalt} relativ zur unteren, rechten Ecke der Ebene und entspricht +damit +\lstinline[breaklines=false]|\put(\LenToUnit{\layerwidth},0)|. \Macro{putC} +schlussendlich platziert \PName{Inhalt} relativ zur Mitte der Ebene.% +% +\begin{Example} + Sie wollen feststellen, wie genau die Höhe des Textbereichs bei + \OptionValueRef{typearea}{DIV}{classic} tatsächlich der Breite der Seite + entspricht, und erstellen dazu eine Ebene, die sowohl den Textbereich + umrandet als auch einen Kreis mit der Papierbreite als Durchmesser im + Zentrum des Textbereichs platziert: +\begin{lstcode} +\documentclass[DIV=classic]{scrartcl} +\usepackage{pict2e} +\usepackage{scrlayer} +\DeclareNewLayer[% + textarea,background,mode=picture, + contents={% + \putLL{\line(1,0){\LenToUnit{\layerwidth}}}% + \putLR{\line(0,1){\LenToUnit{\layerheight}}}% + \putUR{\line(-1,0){\LenToUnit{\layerwidth}}}% + \putUL{\line(0,-1){\LenToUnit{\layerheight}}}% + \putC{\circle{\LenToUnit{\paperwidth}}}% + } +]{showtextarea} +\DeclareNewPageStyleByLayers{test}{showtextarea} +\pagestyle{test} +\begin{document} +\null +\end{document} +\end{lstcode} + Wie Sie sehen werden, passt die von \Package{typearea} vorgenommene + Abbildung auf einen ganzzahligen \PName{DIV}-Wert im Beispiel sehr gut. +\end{Example} +Näheres zu dem im Beispiel skizzierten spätmittelalterlichen Buchseitenkanon +finden Sie übrigens in \autoref{sec:typearea.circleConstruction}, +\autopageref{sec:typearea.circleConstruction}. + +Die Anweisung +\Macro{DeclareNewPageStyleByLayers}\IndexCmd{DeclareNewPageStyleByLayers}, die +im Beispiel bereits verwendet wurde, dient der Definition eines Seitenstils, +der die neu definiert Ebene ausgibt. Sie wird in +\autoref{sec:scrlayer.pagestyles}, +\DescPageRef{scrlayer.cmd.DeclareNewPageStyleByLayers} erklärt werden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{GetLayerContents}\Parameter{Name~der~Ebene} +\end{Declaration} +Mit\ChangedAt{v3.16}{\Package{scrlayer}} dieser Anweisung kann der aktuelle +Inhalt einer Ebene ermittelt werden. Es\textnote{Achtung!} ist unbedingt zu +beachten, dass bei Verwendung dieser Anweisung im \PName{Code} der +Ebenen-Attribute \Option{contents}, \Option{addcontents} oder +\Option{pretocontents} unendliche Rekursionen entstehen können, wenn dabei auf +den Inhalt der aktuellen Ebene zugegriffen wird. Der Anwender ist selbst dafür +verantwortlich, solche Situationen zu vermeiden!% +\EndIndexGroup + + +\begin{Declaration} + \Macro{IfLayerExists}\Parameter{Name~der~Ebene} + \Parameter{Dann-Code}\Parameter{Sonst-Code} +\end{Declaration} +Diese Anweisung kann dazu verwendet werden, Code in Abhängigkeit davon, ob +eine Ebene existiert oder nicht, auszuführen. Wenn die Ebene \PName{Name der + Ebene} existiert, so wird der \PName{Dann-Code} ausgeführt, anderenfalls der +\PName{Sonst-Code}. Bitte beachten Sie, dass die Anweisung nicht wirklich +testen kann, ob eine Ebene existiert. Sie verwendet stattdessen Heuristiken, +die niemals falsch-negativ sein können, jedoch im Extremfall falsch-positiv +sein könnten. % +\iffalse% Umbruchvarianten +Nichtsdestotrotz: Falls der Test falsch-positiv ist, läuft etwas +schief. Beispielsweise könnte dies ein Indikator für die Verwendung eines +inkompatiblen Pakets oder dafür sein, dass der Anwender etwas tut, was er +besser nicht tun sollte.% +\else +Falsch-positive Entscheidungen weisen auf ein Problem, beispielsweise die +Verwendung eines inkompatiblen Pakets oder ungünstige Wahl von internen +Makronamen durch den Anwender.% +\fi +\EndIndexGroup + + +\begin{Declaration} + \Macro{DestroyLayer}\Parameter{Name~der~Ebene} +\end{Declaration} +Existiert eine Ebene \PName{Name der Ebene}, so werden alle zu dieser Ebene +gehörenden Makros zu \Macro{relax}. Die Ebene kann nicht länger verwendet +werden. In bereits mit \Package{scrlayer} definierten Seitenstils werden +derart zerstörte Ebenen ignoriert. Zerstörte Ebenen können mit +\DescRef{\LabelBase.cmd.DeclareNewLayer} oder +\DescRef{\LabelBase.cmd.ProvideLayer} neu definiert werden. Sie können jedoch +vor einer neuerlichen Definition nicht länger mit +\DescRef{\LabelBase.cmd.RedeclareLayer} oder +\DescRef{\LabelBase.cmd.ModifyLayer} verändert werden. + +Die Anweisung ist dazu bestimmt, innerhalb des Arguments \PName{Code} von +\DescRef{\LabelBase.cmd.scrlayerOnAutoRemoveInterface} (siehe +\autoref{sec:scrlayer.enduserinterfaces}, +\DescPageRef{scrlayer.cmd.scrlayerOnAutoRemoveInterface}) verwendet zu +werden. Damit können Ebenen, die unter Verwendung von entfernbaren Anweisungen +einer entfernbaren Benutzerschnittstelle definiert wurden, zusammen mit dieser +Benutzerschnittstelle entfernt werden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{layercontentsmeasure} +\end{Declaration} +Mit Hilfe der \KOMAScript-Option +\DescRef{\LabelBase.option.draft}\IndexOption{draft~=\PName{Ein-Aus-Wert}} +kann für das Paket \Package{scrlayer} ein Entwurfsmodus aktiviert werden. In +diesem Entwurfsmodus wird hinter jeder Ebene zunächst eine Bemaßung der Ebene +ausgegeben. Diese Bemaßung erfolgt mit \Macro{layercontentsmeasure}. Diese +Anweisung zeigt am oberen und linken Rand der Ebene ein Maßband in Zentimeter +und am rechten und unteren Rand der Ebene ein Maßband in Zoll. Die Anweisung +\Macro{layercontentsmeasure} kann statt über die Option auch schlicht als +alleiniger \PName{Code} für die Eigenschaft \Option{contents} einer Ebene +verwendet werden.% +% +\EndIndexGroup + + +\section{Deklaration und Verwaltung von Seitenstilen} +\seclabel{pagestyles} + +\BeginIndexGroup +\BeginIndex{}{Seiten>Stil}% +Wir kennen nun Ebenen und wissen, wie diese definiert und verwaltet +werden. Aber bisher wissen wir noch nicht, wie sie verwendet werden. Die +möglicherweise überraschende Antwort lautet: mit Hilfe von +Seitenstilen. Üblicherweise werden Seitenstile in \LaTeX{} zur Definition von +Kopf und Fuß der Seite verwendet. + +Kopf und Fuß für ungerade oder rechte Seiten\textnote{gerade oder ungerade + Seite} werden im doppelseitigen Modus auf Seiten mit ungerader Seitenzahl +ausgegeben. Im einseitigen Modus werden sie auf allen Seiten verwendet. Das +ist unmittelbar mit den +Optionen\important[i]{\Option{evenpage}\\\Option{oddpage}} \Option{oddpage} +und \Option{evenpage} für Ebenen vergleichbar. + +Der Seitenkopf\textnote{Kopf oder Fuß} wird vor dem normalen Seiteninhalt +ausgegeben. Der Seitenfuß wird entsprechend nach dem normalen Seiteninhalt +ausgegeben. Dies korrespondiert also unmittelbar mit den +Optionen\important[i]{\Option{background}\\\Option{foreground}} +\Option{background} und \Option{foreground} für Ebenen. + +Daher liegt es nahe, Seitenstile als Listen von Ebenen zu definieren. Aber +statt nur die genannten vier Optionen können dabei alle Eigenschaften +verwendet werden, die in \autoref{sec:scrlayer.layers}, +\autoref{tab:scrlayer.layerkeys}, ab \autopageref{tab:scrlayer.layerkeys} +erklärt wurden. + +Als Ergebnis dieser Überlegungen ist eine Form von Seitenstilen, die +\Package{scrlayer} bietet, der Ebenen-Seitenstil\textnote{Ebenen-Seitenstil}% +\Index{Seitenstil>Ebenen-}\Index{Ebenen>Seitenstil}\Index{Seiten>Stil}. Ein +solcher Ebenen-Seitenstil besteht aus Ebenen und zusätzlich aus mehreren Haken +(engl. \emph{hooks}). Die Ebenen wurden bereits in +\autoref{sec:scrlayer.layers} beschrieben. Die +Haken\Index[indexmain]{Haken}\textnote{Haken} sind Punkte in der Expansion +oder Anwendung von Seitenstilen, zu denen zusätzlicher Code hinzugefügt werden +kann. Erfahrene Anwender kennen dieses Konzept bereits von beispielsweise +\Macro{AtBeginDocument} (siehe \cite{latex:usrguide}) oder +\DescRef{scrlfile.cmd.BeforeClosingMainAux} (siehe +\DescPageRef{scrlfile.cmd.BeforeClosingMainAux}). + +Eine zweite Form von Seitenstilen, die \Package{scrlayer} bietet, ist der +Alias-Seitenstil\textnote{Alias-Seitenstil}% +\Index{Seitenstil>Alias-}\Index{Alias>Seitenstil}\Index{Seiten>Stil} oder +Seitenstil-Alias. Ein Seitenstil-Alias besteht in Wirklichkeit aus einem +anderen Seitenstil. Anders ausgedrückt ist der Name eines Seitenstil-Alias ein +Alias-Name für einen anderen Seitenstil-Alias oder einen primären +Seitenstil. Daher führt die Manipulation an einem Seitenstil-Alias zu einer +Manipulation am originären Seitenstil. Ist der originäre Seitenstil selbst +ebenfalls ein Seitenstil-Alias, so führt dessen Manipulation wiederum zu einer +Manipulation dessen originären Seitenstils und immer so weiter, bis +schließlich ein realer Seitenstil verändert wird. Der Ausdruck \emph{realer + Seitenstil}\textnote{realer Seitenstil} wird zur Unterscheidung von einem +Seitenstil-Alias verwendet. Alle Seitenstile, die kein Seitenstil-Alias sind, +sind reale Seitenstile. Seitenstil-Aliase können nicht nur für Seitenstile +definiert werden, die mit \Package{scrlayer} definiert wurden, sondern für +alle Seitenstile. + + +\begin{Declaration} + \Macro{currentpagestyle} + \Macro{toplevelpagestyle} +\end{Declaration} +Das Paket \Package{scrlayer} erweitert die \LaTeX-Anweisung +\DescRef{maincls.cmd.pagestyle}\IndexCmd{pagestyle} so, dass diese +\Macro{currentpagestyle} als den Namen des jeweils aktiven Seitenstils +definiert. Es\textnote{Achtung!} ist zu beachten, dass +\DescRef{maincls.cmd.thispagestyle}\IndexCmd{thispagestyle} selbst +\Macro{currentpagestyle} nicht verändert. Wird +\DescRef{maincls.cmd.thispagestyle} verwendet, so kann sich +\Macro{currentpagestyle} aber innerhalb der \LaTeX-Ausgabefunktion +verändern. Dies hat jedoch nur dann Auswirkungen, wenn +\Macro{currentpagestyle} bis in die \LaTeX-Ausgabefunktion geschützt verwendet +wird. + +Es sei darauf hingewiesen, dass die später in diesem Abschnitt dokumentierten +Ebenen-Seitenstile nicht auf diese Erweiterung von +\DescRef{maincls.cmd.pagestyle} angewiesen sind, da sie selbst auch +\Macro{currentpagestyle} umdefinieren. Die Erweiterung wurde für die +Verwendung von anderen Seitenstilen, die nicht auf \Package{scrlayer} +basieren, vorgenommen. Es ist außerdem zu beachten\textnote{Achtung!}, dass +\Macro{currentpagestyle} vor der ersten Verwendung von +\DescRef{maincls.cmd.pagestyle} nach dem Laden von \Package{scrlayer} leer +ist. Bei der Definition einer Endanwender-Schnittstelle dürfte es daher +nützlich sein, mit einer impliziten \DescRef{maincls.cmd.pagestyle}-Anweisung +den aktuellen Seitenstil auf eine Voreinstellung zu setzen.% + +Wird mit \DescRef{maincls.cmd.pagestyle} ein Alias-Seitenstils aktiviert, so +liefert \Macro{currentpagestyle} nicht den Alias-Namen, sondern den des +originären Seitenstils. Den\ChangedAt{v3.16}{\Package{scrlayer}} Alias-Namen +kann man in diesem Fall mit \Macro{toplevelpagestyle} erhalten. Es wird davon +abgeraten, Seitenstile zu definieren, die beispielsweise per +\DescRef{scrbase.cmd.ifstr} abhängig von \Macro{toplevelpagestyle} +unterschiedliche Ergebnisse liefern, da dies bei Aktivierung per +\DescRef{maincls.cmd.thispagestyle} zu falschen Resultaten führen kann.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{BeforeSelectAnyPageStyle}\Parameter{Code} + \Macro{AfterSelectAnyPageStyle}\Parameter{Code} +\end{Declaration} +Die Anweisung \Macro{BeforeSelectAnyPageStyle} fügt einem Haken\Index{Haken} +(engl. \emph{hook}) \PName{Code} hinzu, der innerhalb der Ausführung von +Anweisung \DescRef{maincls.cmd.pagestyle}% +\important{\DescRef{maincls.cmd.pagestyle}}\IndexCmd{pagestyle}, unmittelbar +vor der Auswahl des Seitenstils ausgeführt wird. Innerhalb von \PName{Code} +kann \texttt{\#1} als Platzhalter für das Argument von +\DescRef{maincls.cmd.pagestyle} verwendet werden. + +Die Anweisung \Macro{AfterSelectAnyPageStyle} arbeitet ähnlich. Allerdings +wird hier \PName{Code} ausgeführt, nachdem der Seitenstil gewählt und +\DescRef{\LabelBase.cmd.currentpagestyle} auf den Namen des realen Seitenstils +gesetzt wurde. + +Es ist zu beachten\textnote{Achtung!}, dass \PName{Code} jeweils nur bei der +Wahl eines Seitenstils mit Hilfe von \DescRef{maincls.cmd.pagestyle} +ausgeführt wird. Wird ein Seitenstil auf andere Art, beispielsweise mit Hilfe +von \DescRef{maincls.cmd.thispagestyle}, gewählt, so wird \PName{Code} nicht +ausgeführt. Es ist außerdem zu beachten\textnote{Achtung!}, dass einmal +hinzugefügter \PName{Code} nicht mehr entfernt werden kann. Allerdings wird +der \PName{Code} lokal hinzugefügt. Sein Gültigkeitsbereich kann daher mit +einer Gruppe beschränkt werden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DeclarePageStyleAlias}\Parameter{Seitenstil-Alias-Name} + \Parameter{originärer~Seitenstil-Name} + \Macro{DeclareNewPageStyleAlias}\Parameter{Seitenstil-Alias-Name} + \Parameter{originärer~Seitenstil-Name} + \Macro{ProvidePageStyleAlias}\Parameter{Seitenstil-Alias-Name} + \Parameter{originärer~Seitenstil-Name} + \Macro{RedeclarePageStyleAlias}\Parameter{Seitenstil-Alias-Name} + \Parameter{originärer~Seitenstil-Name} +\end{Declaration} +\BeginIndex{}{Seitenstil>Alias-}% +\BeginIndex{}{Alias>Seitenstil}% +Diese Anweisungen können verwendet werden, um einen Seitenstil mit dem Namen +\PName{Seitenstil-Alias-Name} zu definieren, der einfach nur ein Alias für +einen bereits existierenden Seitenstil mit dem Namen \PName{originärer + Seitenstil-Name} ist. Falls bereits ein Seitenstil mit dem Namen +\PName{Seitenstil-Alias-Name} existiert, wird dieser vor der Erzeugung des +Alias mit \Macro{DeclarePageStyleAlias} oder \Macro{RedeclarePageStyleAlias} +zerstört. + +Die Anweisung \Macro{DeclareNewPageStyleAlias} erzeugt eine Fehlermeldung, +falls zuvor bereits ein Seitenstil \PName{Seitenstil-Alias-Name} +definiert wurde. Dabei spielt es keine Rolle, ob der existierende Seitenstil +selbst ein Alias-Seitenstil, ein Ebenen-Seitenstil oder eine andere Art von +Seitenstil ist. + +Die Anweisung \Macro{ProvidePageStyleAlias} definiert den Seitenstil-Alias +nur, falls nicht bereits ein Seitenstil +\PName{Seitenstil-Alias-Name} existiert. Falls ein solcher Seitenstil +existiert, bleibt dieser erhalten und die Anweisung tut schlicht nichts. + +Im Gegensatz zu den drei vorgenannten Anweisungen erwartet +\Macro{RedeclarePageStyleAlias}, dass bereits ein Seitenstil mit dem Namen +\PName{Seitenstil-Alias-Name} existiert. Anderenfalls erzeugt die Anweisung +eine Fehlermeldung. +\iffree{\csname @tempswafalse\endcsname}{\csname @tempswatrue\endcsname}% +\csname if@tempswa\endcsname% Umbruchkorrekturtext +\begin{Example} + Angenommen, Sie schreiben eine Klasse und verwenden darin für + Kapitelanfangsseiten den Seitenstil \PageStyle{chapter}. In der + Voreinstellung soll dieser Seitenstil dem Seitenstil \PageStyle{plain} + entsprechen. Daher verwenden Sie das Paket \Package{scrlayer} und definieren + mit +\begin{lstcode} + \DeclareNewPageStyleAlias{chapter}{plain} +\end{lstcode} + den Seitenstil \PageStyle{chapter} als Alias für den Seitenstil + \PageStyle{plain}. Will hingegen der Anwender später, dass der Seitenstil + \PageStyle{chapter} dem Seitenstil \PageStyle{empty} entspricht, so erreicht + er dies mit: +\begin{lstcode} + \RedeclarePageStyleAlias{chapter}{empty} +\end{lstcode}% +\end{Example}% +\fi +\EndIndexGroup + + +\begin{Declaration} + \Macro{DestroyPageStyleAlias}\Parameter{Seitenstil-Alias-Name}% +\end{Declaration} +\BeginIndex{}{Seitenstil>Alias-}% +\BeginIndex{}{Alias>Seitenstil}% +Mit dieser Anweisung wird der Seitenstil-Alias mit dem angegebenen Namen +\PName{Seitenstil-Alias-Name} für \LaTeX{} wieder undefiniert, wenn es +tatsächlich einen Alias-Seitenstil dieses Namens gibt. Anschließend kann der +Seitenstil auch mit \DescRef{\LabelBase.cmd.DeclareNewPageStyleAlias} oder +\DescRef{\LabelBase.cmd.ProvidePageStyleAlias} neu definiert werden. + +Die Anweisung ist dazu bestimmt, innerhalb des Arguments \PName{Code} von +\DescRef{\LabelBase.cmd.scrlayerOnAutoRemoveInterface} (siehe +\autoref{sec:scrlayer.enduserinterfaces}, +\DescPageRef{scrlayer.cmd.scrlayerOnAutoRemoveInterface}) verwendet zu +werden, um Seitenstile, die als Teil eines Endanwender-Interfaces definiert +wurden, beim automatischen Entfernen dieses Interfaces mit zu entfernen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{GetRealPageStyle}\Parameter{Seitenstil-Name}% +\end{Declaration} +\BeginIndex{}{Seitenstil>Alias-}% +\BeginIndex{}{Alias>Seitenstil}% +Diese Anweisung sucht rekursiv nach dem tatsächlichen Namen eines +Seitenstils, wenn der angegebene \PName{Seitenstil-Name} zu einem +Alias-Seitenstil gehört. Ist \PName{Seitenstil-Name} nicht der Name eines +Alias-Seitenstils, so ist das Ergebnis \PName{Seitenstil-Name} selbst. Das +gilt auch, falls ein Seitenstil namens \PName{Seitenstil-Name} gar nicht +existiert. Die Anweisung ist voll expandierbar und kann damit beispielsweise +auch im zweiten Argument einer \Macro{edef}-Anweisung verwendet werden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DeclarePageStyleByLayers}\OParameter{Optionenliste} + \Parameter{Seitenstil-Name} + \Parameter{Ebenenliste} + \Macro{DeclareNewPageStyleByLayers}\OParameter{Optionenliste} + \Parameter{Seitenstil-Name} + \Parameter{Ebenenliste} + \Macro{ProvidePageStyleByLayers}\OParameter{Optionenliste} + \Parameter{Seitenstil-Name} + \Parameter{Ebenenliste} + \Macro{RedeclarePageStyleByLayers}\OParameter{Optionenliste} + \Parameter{Seitenstil-Name} + \Parameter{Ebenenliste} +\end{Declaration} +\BeginIndex{}{Seitenstil>Ebenen-}% +\BeginIndex{}{Ebenen>Seitenstil}% +Diese Anweisungen deklarieren einen Seitenstil mit dem Namen +\PName{Seitenstil-Name}. Der Seitenstil besteht aus einer Anzahl von Ebenen, +die in der mit Komma separierten \PName{Ebenenliste} angegeben sind. Es ist zu +beachten\textnote{Achtung!}, dass sowohl \PName{Seitenstil-Name} als auch +\PName{Ebenenliste} voll expandierbar sein müssen und die Expansion zu einer +Reihe von Buchstaben führen sollte. Einige zusätzliche Zeichen werden +ebenfalls akzeptiert, ihre Verwendung wird jedoch nur erfahrenden Anwendern +empfohlen. + +Die \PName{Optionenliste} ist eine mit Komma separierte Liste von Optionen der +Form \texttt{\PName{Schlüssel}=\PName{Code}}. Diese Optionen können verwendet +werden, um zusätzliche Eigenschaften zu setzen und zusätzliche Möglichkeiten +zu nutzen. Derzeit werden sie verwendet, um \mbox{Code} an bestimmten Stellen +der Aktivierung oder Verwendung eines Seitenstils über Haken\Index{Haken} +(engl. \emph{hooks}) auszuführen. Für allgemeine Informationen zu Haken sei +auf die Einleitung zu diesem Abschnitt verwiesen. Details zu den Haken und +ihrer Bedeutung sind \autoref{tab:scrlayer.pagestyle.hooks} zu entnehmen. + +\begin{desclist} + \desccaption{% + Optionen und gleichnamige Haken für Ebenen-Seitenstile (in der Reihenfolge + ihrer Abarbeitung)\label{tab:scrlayer.pagestyle.hooks}% + }{% + Optionen für die Haken von Ebenen-Seitenstilen (\emph{Fortsetzung})% + }% + \entry{\OptionVName{onselect}{Code}}{% + Der \PName{Code} dieses Hakens\Index{Haken} wird immer dann ausgeführt, + wenn der Seitenstil beispielsweise mit \DescRef{maincls.cmd.pagestyle} + ausgewählt wird. Es ist zu beachten, dass + \DescRef{maincls.cmd.thispagestyle} selbst keinen Seitenstil unmittelbar + auswählt, sondern der Seitenstil in diesem Fall erst innerhalb der + Ausgaberoutine von \LaTeX{} aktiviert wird.% + }% + \entry{\OptionVName{oninit}{Code}}{% + Der \PName{Code} dieses Hakens\Index{Haken} wird immer dann ausgeführt, + wenn die Ausgabe der Ebenen für den Seitenstil initialisiert + wird. Beachten Sie, dass dies für jede Seite zweimal geschieht: einmal für + Hintergrund-Ebenen und einmal für Vordergrund-Ebenen.% + }% + \entry{\OptionVName{ononeside}{Code}}{% + Der \PName{Code} dieses Hakens\Index{Haken} wird immer dann ausgeführt, + wenn im einseitigen Modus die Ausgabe der Ebenen für den Seitenstil + initialisiert wird. Beachten Sie, dass dies für jede Seite zweimal + geschieht: einmal für Hintergrund-Ebenen und einmal für + Vordergrund-Ebenen.% + }% + \entry{\OptionVName{ontwoside}{Code}}{% + Der \PName{Code} dieses Hakens\Index{Haken} wird immer dann ausgeführt, + wenn im doppelseitigen Modus die Ausgabe der Ebenen für den Seitenstil + initialisiert wird. Beachten Sie, dass dies für jede Seite zweimal + geschieht: einmal für Hintergrund-Ebenen und einmal für + Vordergrund-Ebenen.% + }% + \entry{\OptionVName{onoddpage}{Code}}{% + Der \PName{Code} dieses Hakens\Index{Haken} wird immer dann ausgeführt, + wenn die Ausgabe der Ebenen für den Seitenstil auf einer rechten Seite + initialisiert wird. Beachten Sie, dass dies für jede Seite zweimal + geschieht: einmal für Hintergrund-Ebenen und einmal für + Vordergrund-Ebenen. Beachten Sie außerdem, dass im einseitigen Modus alle + Seiten rechte Seiten sind.% + }% + \entry{\OptionVName{onevenpage}{Code}}{% + Der \PName{Code} dieses Hakens\Index{Haken} wird immer dann ausgeführt, + wenn die Ausgabe der Ebenen für den Seitenstil auf einer linken Seite + initialisiert wird. Beachten Sie, dass dies für jede Seite zweimal + geschieht: einmal für Hintergrund-Ebenen und einmal für + Vordergrund-Ebenen. Beachten Sie außerdem, dass im einseitigen Modus keine + linken Seiten existieren.% + }% + \entry{\OptionVName{onfloatpage}{Code}}{% + Der \PName{Code} dieses Hakens\Index{Haken} wird immer dann ausgeführt, + wenn die Ausgabe der Ebenen für den Seitenstil auf einer + Gleitumgebungsseite initialisiert wird. Beachten Sie, dass dies für jede + Seite zweimal geschieht: einmal für Hintergrund-Ebenen und einmal für + Vordergrund-Ebenen. Beachten Sie außerdem, dass Gleitumgebungsseiten nur + diejenigen Seiten sind, auf denen eine oder mehrere p-platzierte + Gleitumgebungen ausgegeben werden.% + }% + \entry{\OptionVName{onnonfloatpage}{Code}}{% + Der \PName{Code} dieses Hakens\Index{Haken} wird immer dann ausgeführt, + wenn die Ausgabe der Ebenen für den Seitenstil auf einer Seite + initialisiert wird, die keine Gleitumgebungsseite ist. Beachten Sie, dass + dies für jede Seite zweimal geschieht: einmal für Hintergrund-Ebenen und + einmal für Vordergrund-Ebenen. Beachten Sie außerdem, dass + Gleitumgebungsseiten nur diejenigen Seiten sind, auf denen eine oder + mehrere p-platzierte Gleitumgebungen ausgegeben werden, und auf anderen + Seiten sehr wohl t-, b- oder h-platzierte Gleitumgebungen stehen können.% + }% + \entry{\OptionVName{onbackground}{Code}}{% + Der \PName{Code} dieses Hakens\Index{Haken} wird immer dann ausgeführt, + wenn die Ausgabe der Ebenen für den Hintergrund einer Seite initialisiert + wird. Beachten Sie, dass dies auf jeder Seite genau einmal der Fall ist.% + }% + \entry{\OptionVName{onforeground}{Code}}{% + Der \PName{Code} dieses Hakens\Index{Haken} wird immer dann ausgeführt, + wenn die Ausgabe der Ebenen für den Vordergrund einer Seite initialisiert + wird. Beachten Sie, dass dies auf jeder Seite genau einmal der Fall ist.% + }% +\end{desclist} + +\iffalse% Umbruchvarianten +Während die Anweisung +\Macro{DeclarePageStyleByLayers} %\important{\Macro{DeclarePageStyleByLayers}}% + % Leider zu lang. Deshalb auch auf alle + % weiteren verzichtet. +den Seitenstil immer definiert, erzeugt \Macro{DeclareNewPageStyleByLayers} +eine Fehlermeldung, falls bereits ein Seitenstil gleichen Namens +existiert. Beachten\textnote{Achtung!} Sie, dass die Deklaration eines +Seitenstils, der bereits ein Alias für einen anderen Seitenstil ist (siehe +beispielsweise \Macro{DeclareAliasPageStyle} zuvor in diesem Abschnitt) nicht +zu der Umdefinierung des angegebenen Alias-Seitenstils, sondern des realen +Seitenstils (siehe \DescRef{\LabelBase.cmd.GetRealPageStyle} zuvor in diesem +Abschnitt) führt.% +\else% +Die Anweisung \Macro{DeclarePageStyleByLayers} definiert den Seitenstil +unabhängig davon, ob bereits ein Seitenstil des Namens \PName{Seitenstil-Name} +existiert. Gegebenenfalls wird der existierende Seitenstil komplett neu +definiert. Falls bereits ein Alias-Seitenstil \PName{Seitenstil-Name} +existiert wird jedoch nicht der Alias-Seitenstil selbst neu definiert, sondern +der zugehörige reale Seitenstil (siehe +\DescRef{\LabelBase.cmd.GetRealPageStyle} zuvor in diesem Abschnitt). + +Die Anweisung \Macro{DeclareNewPageStyleByLayers} unterscheidet sich in dem +Fall, dass bereits ein gleichnamiger Seitenstil existiert. Unabhängig davon, +ob es sich um einen realen Seitenstil oder einen Alias-Seitenstil handelt, +wird in diesem Fall ein Fehler gemeldet.% +\fi + +Im Unterschied dazu wird bei \Macro{ProvidePageStyleByLayers} der Seitenstil +unverändert erhalten, wenn bereits ein Seitenstil des Namens +\PName{Seitenstil-Name} existiert. Existiert kein solcher Seitenstil, so wird +er wie bei \Macro{DeclarePageStyleByLayers} definiert. + +Die Anweisung \Macro{RedeclarePageStyleByLayers} wiederum erwartet, dass +bereits ein Seitenstil des Namens \PName{Seitenstil-Name} existiert und +definiert dessen realen Seitenstil dann um. Existiert jedoch noch kein +Seitenstil des angegebenen Namens, so resultiert daraus eine Fehlermeldung. + +Beachten Sie des Weiteren die nachfolgenden Anmerkungen zum Pseudo-Seitenstil +\PageStyle{@everystyle@}.% +\EndIndexGroup + + +\begin{Declaration} + \PageStyle{@everystyle@} + \PageStyle{empty} +\end{Declaration} +\BeginIndex{}{Seitenstil>Ebenen-}% +\BeginIndex{}{Ebenen>Seitenstil}% +Das Paket \Package{scrlayer} definiert von sich aus bereits zwei in gewisser +Weise spezielle Seitenstile. Der erste davon ist +\PageStyle{@everystyle@}\important{\PageStyle{@everystyle@}}. Dieser +Seitenstil sollte niemals als normaler Seitenstil, beispielsweise mit +\DescRef{maincls.cmd.pagestyle} oder \DescRef{maincls.cmd.thispagestyle}, oder +als Ziel eines Alias-Seitenstils verwendet werden. Stattdessen werden die +Ebenen und Haken\Index{Haken} dieses Seitenstils von allen anderen +Ebenen-Seitenstilen mit verwendet. Dabei werden die Haken von +\PageStyle{@everystyle@} jeweils vor den entsprechenden Haken und die Ebenen +jeweils vor den entsprechenden Ebenen des aktiven Seitenstils ausgeführt. + +Damit ist das Hinzufügen einer Ebene zum Pseudo-Seitenstil +\PageStyle{@everystyle@} oder von Code zu einem Haken dieses Seitenstils +vergleichbar mit dem Hinzufügen einer Ebene beziehungsweise von Haken-Code zu +allen Ebenen-Seitenstile. Der eine entscheidende Unterschied ist: Befehle, die +sich auf die Ebenen eines Seitenstils beziehen, das sind neben +\DescRef{\LabelBase.cmd.ForEachLayerOfPageStyle} beispielsweise auch die +Anweisungen \DescRef{\LabelBase.cmd.AddLayersToPageStyleBeforeLayer} oder +\DescRef{\LabelBase.cmd.AddLayersToPageStyleAfterLayer}, lassen die Ebenen des +Seitenstils \PageStyle{@everystyle@} unberücksichtigt, wenn sie auf einen +anderen Ebenen-Seitenstil angewendet werden. + +Der zweite etwas andere Ebenen-Seitenstil ist +\PageStyle{empty}\important{\PageStyle{empty}}. Bereits vom \LaTeX-Kern wird +ein Seitenstil dieses Namens definiert, der einen leeren Kopf und Fuß hat. Das +Paket \Package{scrlayer} definiert diesen Seitenstil als Ebenen-Seitenstil +ohne Ebenen um. Nichtsdestotrotz kann er wie jeder andere Ebenen-Seitenstil +verwendet werden. Der Hauptvorteil dieses Ebenen-Seitenstils gegenüber dem +ursprünglichen Seitenstil aus dem \LaTeX-Kern ist, dass er ebenfalls die +Haken\Index{Haken} und Ebenen des Pseudo-Seitenstils \PageStyle{@everystyle@} +ausführt.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{onpsselect}{Code} + \OptionVName{onpsinit}{Code} + \OptionVName{onpsoneside}{Code} + \OptionVName{onpstwoside}{Code} + \OptionVName{onpsoddpage}{Code} + \OptionVName{onpsevenpage}{Code} + \OptionVName{onpsfloatpage}{Code} + \OptionVName{onpsnonfloatpage}{Code} + \OptionVName{onpsbackground}{Code} + \OptionVName{onpsforeground}{Code} +\end{Declaration} +\BeginIndex{}{Seitenstil>Ebenen-}% +\BeginIndex{}{Ebenen>Seitenstil}% +Für jeden der Haken\Index{Haken} aus \autoref{tab:scrlayer.pagestyle.hooks} +existiert außerdem eine \KOMAScript-Option% +\iftrue% +. Die Namen der \KOMAScript-Optionen ähneln den Namen der Optionen für die +Befehle zur Deklaration von Ebenen-Seitenstilen. Es wird lediglich ein +»\texttt{ps}« nach dem »\texttt{on}« am Anfang des Namens eingefügt% +\else% +, in deren Namen lediglich ein \texttt{ps} eingefügt wurde% +\fi% +. Die Werte dieser \KOMAScript-Optionen werden als Anfangswerte für die +entsprechenden Haken verwendet. Dieser Anfangswert wird dann um alle Werte, +die dem entsprechenden Haken in der \PName{Optionenliste} der +Deklarationsbefehle zugewiesen werden, erweitert. Der Anfangswert kann mit +Hilfe der Anweisung \DescRef{\LabelBase.cmd.ModifyLayerPageStyleOptions}, die +später in diesem Abschnitt erklärt wird, entfernt werden.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{singlespacing}{Ein-Aus-Wert} +\end{Declaration} +Wird\ChangedAt{v3.24}{\Package{scrlayer}\and \Package{scrlayer-scrpage}} ein +Dokument beispielsweise mit Hilfe von Paket +\Package{setspace}\IndexPackage{setspace}\important{\Package{setspace}} mit +erhöhtem Zeilenabstand gesetzt, ist es oft dennoch nicht erwünscht, dass Kopf +und Fuß der Seite ebenfalls mit diesem erhöhten Zeilenabstand gesetzt +werden. Das gilt umso mehr, wenn Kopf und Fuß nur aus jeweils einer Zeile +bestehen. In diesem Fall kann man \KOMAScript-Option \Option{singlespacing} +setzen. In der Voreinstellung\textnote{Voreinstellung} ist die Option jedoch +nicht gesetzt! Die Option wirkt generell für alle Ebenen-Seitenstile. Will man +hingegen nur einige Ebenen-Seitenstil einzeilig gesetzt haben, so sollte man +stattdessen für diese Seitenstile +\OptionValue{oninit}{\Macro{linespread}\PParameter{1}\Macro{selectfont}} +verwenden.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{deactivatepagestylelayers}{Ein-Aus-Wert} + \Macro{ForEachLayerOfPageStyle}\Parameter{Seitenstil-Name} + \Parameter{Code} + \Macro{ForEachLayerOfPageStyle*}\Parameter{Seitenstil-Name} + \Parameter{Code} +\end{Declaration} +\BeginIndex{}{Seitenstil>Ebenen-}% +\BeginIndex{}{Ebenen>Seitenstil}% +Solange \KOMAScript-Option \Option{deactivatepagestylelayers} nicht +aktiviert ist, kann mit \Macro{ForEachLayerOfPageStyle} für jede Ebene des +Seitenstils mit dem Namen \PName{Seitenstil-Name} beliebiger \PName{Code} +ausgeführt werden. Innerhalb von \PName{Code} dient dabei \PValue{\#1} als +Platzhalter für den Namen der gerade abgearbeiteten Ebene. +\begin{Example} + Angenommen, Sie wollen die Namen aller Ebenen des Seitenstils + \PValue{scrheadings} als Komma-separierte Liste, so können Sie dies mit +\begin{lstcode} + \newcommand*\commaatlist{} + \ForEachLayerOfPageStyle{scrheadings}{% + \commaatlist#1\gdef\commaatlist{, }} + \let\commaatlist\relax +\end{lstcode} + erreichen. +\end{Example} +Die Verwendung von \Macro{gdef} anstelle von \Macro{def} ist im Beispiel +notwendig\textnote{Achtung!}, weil \PName{Code} innerhalb einer Gruppe +ausgeführt wird, um unerwünschte Seiteneffekte zu minimieren. Die Anweisung +\Macro{gdef} definiert \Macro{commaatlist} jedoch global um, so dass beim +Aufruf des Codes für die nächste Ebene die Änderung Bestand hat. + +Alternativ\ChangedAt{v3.18}{\Package{scrlayer}} hätte man auch zwar mit +\Macro{def}, dafür aber mit der Sternvariante \Macro{ForEachLayerOfPageStyle*} +arbeiten können. Diese Form verzichtet bei der Ausführung von \PName{Code} auf +eine Gruppe. Allerdings muss der Anwender dann selbst +sicherstellen, dass \PName{Code} keine unerwünschten Seiteneffekte +hat. Insbesondere würde die Deaktivierung der Ebenen mit +\OptionValue{deactivatepagestylelayers}{true} innerhalb von \PName{Code} dann +über den Aufruf von \Macro{ForEachLayerOfPageStyle*} hinaus Bestand haben. + +Diverse Anweisungen von \Package{scrlayer} setzen intern selbst ebenfalls +\Macro{ForEachLayerOfPageStyle} ein. Auch deren Funktion kann daher über die +\KOMAScript-Option \Option{deactivatepagestylelayers} verändert werden. Diese +Option kann also verwendet werden, um alle Ebenen aller Seitenstile temporär +zu deaktivieren und damit zu verstecken.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AddLayersToPageStyle}\Parameter{Seitenstil-Name} + \Parameter{Ebenenliste} + \Macro{AddLayersAtBeginOfPageStyle}\Parameter{Seitenstil-Name} + \Parameter{Ebenenliste} + \Macro{AddLayersAtEndOfPageStyle}\Parameter{Seitenstil-Name} + \Parameter{Ebenenliste} + \Macro{RemoveLayersFromPageStyle}\Parameter{Seitenstil-Name} + \Parameter{Ebenenliste} +\end{Declaration} +\BeginIndex{}{Seitenstil>Ebenen-}% +\BeginIndex{}{Ebenen>Seitenstil}% +Diese Anweisungen können verwendet werden, um Ebenen zu einem Seitenstil +hinzuzufügen oder davon zu entfernen. Der Seitenstil wird dabei über +\PName{Seitenstil-Name} referenziert. Die Ebenen werden in einer durch Komma +separierten \PName{Ebenenliste} angegeben. + +Sowohl die Anweisung \Macro{AddLayersToPageStyle} als auch die Anweisung +\Macro{AddLayersAtEndOfPageStyle}\textnote{hinzufügen am Ende} fügt die Ebenen +am Ende der Ebenenliste des Seitenstils ein. Logisch liegen die neu +hinzugefügten Ebenen also über oder vor den bereits vorhandenen Ebenen, wobei +Hintergrund-Ebenen natürlich weiterhin logisch hinter der Textebene und damit +auch hinter allen Vordergrund-Ebenen liegen. + +Die Anweisung \Macro{AddLayersAtBeginOfPageStyle}\textnote{hinzufügen am + Anfang} fügt die Ebenen hingegen am Anfang der Ebenenliste des Seitenstils +ein. Dabei werden die Ebenen in der Reihenfolge am Anfang eingefügt, in der +sie auch in der \PName{Ebenenliste} stehen. Damit wird die Ebene, die ganz am +Ende von \PName{Ebenenliste} steht, nach dem Einfügen die erste und damit die +unterste oder hinterste Ebene (jeweils entweder der Vordergrund- oder der +Hintergrundebenen) sein. + +\iffalse% Umbruchkorrekturtext (beim Aktiveren muss unten \textnot{entfernen} + % entfernt werden!) +Die Anweisung \Macro{RemoveLayersFromPageStyle} dient dem genauen +Gegenteil. Sie entfernt\textnote{entfernen} die angegebenen Ebenen von +Seitenstil.% +\fi + +Der Versuch, mit Hilfe von +\Macro{RemoveLayersFromPageStyle}\textnote{entfernen} Ebenen von einem +Seitenstil zu entfernen, die gar nicht Teil des Seitenstils sind, wird +ignoriert, führt also nicht zu einer Fehlermeldung. Dagegen ist der Versuch, +Ebenen zu einem Seitenstil, der kein Ebenen-Seitenstil ist und auch kein +Alias-Seitenstil, der zu einem Ebenen-Seitenstil führt, hinzuzufügen oder von +einem solchen zu entfernen, ein Fehler und wird als solcher gemeldet.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AddLayersToPageStyleBeforeLayer}\Parameter{Seitenstil-Name} + \Parameter{Ebenenliste} + \Parameter{Referenzebenen-Name} + \Macro{AddLayersToPageStyleAfterLayer}\Parameter{Seitenstil-Name} + \Parameter{Ebenenliste} + \Parameter{Referenzebenen-Name}% +\end{Declaration} +\BeginIndex{}{Seitenstil>Ebenen-}% +\BeginIndex{}{Ebenen>Seitenstil}% +\iffalse% Umbruchvarianten +Diese beiden Befehle ähneln den vorangegangenen. Allerdings wird hier +zusätzlich ein \PName{Referenzebenen-Name} angegeben. Die Ebenen des über den +\PName{Seitenstil-Name} angegebenen Seitenstils werden nach dieser +Referenzebene durchsucht. % +\else% +Die Befehle ähneln den vorherigen. Die existierenden Ebenen des Seitenstils +werden jedoch nach \PName{Referenzebenen-Name} durchsucht. % +\fi% +Die Ebenen der \PName{Ebenenliste} werden dann +vor\textnote{hinzufügen vor/nach Ebene} +respektive nach jedem Auf"|treten der Referenzebene % +\iffalse% Umbruchkorrekturtext +in die Ebenen des Seitenstils % +\fi% +eingefügt. Dabei bleibt die Reihenfolge der Ebenen der +\PName{Ebenenliste} erhalten. + +Ist die Referenzebene nicht Bestandteil des Seitenstils, so wird auch nichts +eingefügt. Ist der Seitenstil hingegen kein Ebenen-Seitenstil und auch kein +Alias-Seitenstil, der zu einem Ebenen-Seitenstil führt, so wird ein Fehler +gemeldet.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{UnifyLayersAtPageStyle}\Parameter{Seitenstil-Name} +\end{Declaration} +\BeginIndex{}{Seitenstil>Ebenen-}% +\BeginIndex{}{Ebenen>Seitenstil}% +Bei den Befehlen zur Definition eines Seitenstils oder zum Hinzufügen von +Ebenen zu einem Seitenstil wird nicht darauf geachtet, ob eine Ebene mehrfach +Bestandteil eines Seitenstils ist oder wird. Dies ist also durchaus +zulässig. In den meisten Fällen hat es allerdings keinen Sinn, eine Ebene +mehrfach als Bestandteil eines Seitenstils zu haben. Daher kann mit Hilfe von +\Macro{UnifyLayersAtPageStyle} dafür gesorgt werden, dass alle +Ebenen-Dubletten vom Seitenstil mit dem angegebenen \PName{Seitenstil-Name} +entfernt werden. + +Es ist zu beachten\textnote{Achtung!}, dass sich dabei die Reihenfolge der +Ebenen ändern kann. Wird also eine spezielle Reihenfolge gewünscht, sollten +stattdessen alle Ebenen entfernt und die gewünschten Ebenen in der erwarteten +Reihenfolge neu hinzugefügt werden. In einem solchen Fall ist +\Macro{UnifyLayersAtPageStyle} also nicht geeignet.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ModifyLayerPageStyleOptions}\Parameter{Seitenstil-Name} + \Parameter{Optionenliste} + \Macro{AddToLayerPageStyleOptions}\Parameter{Seitenstil-Name} + \Parameter{Optionenliste} +\end{Declaration} +\BeginIndex{}{Seitenstil>Ebenen-}% +\BeginIndex{}{Ebenen>Seitenstil}% +Mit diesen beiden Anweisungen können die Optionen und damit die +Haken\Index{Haken} eines Ebenen-Seitenstils nachträglich verändert werden. Bei +\Macro{ModifyLayerPageStyleOptions}\textnote{Seitenstil-Optionen ändern} +werden dabei genau die Optionen, die in der durch Komma separierten +\PName{Optionenliste} angegeben sind, auf die dortigen neuen Werte +gesetzt. Die bisherigen Werte gehen dabei verloren. Es sind alle Optionen aus +\autoref{tab:scrlayer.pagestyle.hooks}, +\autopageref{tab:scrlayer.pagestyle.hooks} erlaubt. Optionen +\iffree{beziehungsweise}{oder} Haken, die nicht in der \PName{Optionenliste} +angegeben sind, bleiben hingegen unverändert. Diese Anweisung ist +\iffree{damit auch }{}% Umbruchkorrektur +die einzige Möglichkeit, die globalen Voreinstellungen der +\KOMAScript-Optionen von einem Seitenstil zu entfernen. + +Die Anweisung \Macro{AddToLayerPageStyleOptions}\textnote{Seitenstil-Optionen + erweitern} dagegen überschreibt die bisher vorhandenen Werte nicht, sondern +fügt die neuen zu den bisherigen hinzu oder -- genauer gesagt -- hängt die +neuen Werte an die alten an.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{IfLayerPageStyleExists}\Parameter{Seitenstil-Name} + \Parameter{Dann-Code} + \Parameter{Sonst-Code} + \Macro{IfRealLayerPageStyleExists}\Parameter{Seitenstil-Name} + \Parameter{Dann-Code} + \Parameter{Sonst-Code} +\end{Declaration} +\BeginIndex{}{Seitenstil>Ebenen-}% +\BeginIndex{}{Ebenen>Seitenstil}% +Mit den Anweisungen kann Code in Abhängigkeit davon ausgeführt werden, ob +ein Seitenstil ein Ebenen-Seitenstil ist oder nicht. Dabei führt +\Macro{IfLayerPageStyleExists} den \PName{Dann-Code} nur dann aus, wenn +\PName{Seitenstil-Name} der Name eines Ebenen-Seitenstils oder der Name eines +Alias-Seitenstils ist, der zu einem Ebenen-Seitenstil führt. Anderenfalls +führt die Anweisung den \PName{Sonst-Code} aus. + +\iffree{Die Anweisung }{}%Umbruchvarianten +\Macro{IfRealLayerPageStyleExists} geht einen Schritt weiter und führt +\iffree{den }{}% Umbruchvarianten +\PName{Dann-Code} nur dann aus, wenn der über \PName{Seitenstil-Name} +angegebene Seitenstil selbst ein Ebenen-Seitenstil ist. Im Falle eines +Alias-Seitenstils führt diese Anweisung also selbst dann \PName{Sonst-Code} +aus, wenn dieser Alias-Seitenstil zu einem Ebenen-Seitenstil führt.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{IfLayerAtPageStyle}\Parameter{Seitenstil-Name} + \Parameter{Ebenen-Name} + \Parameter{Dann-Code} + \Parameter{Sonst-Code} + \Macro{IfSomeLayersAtPageStyle}\Parameter{Seitenstil-Name} + \Parameter{Ebenenliste} + \Parameter{Dann-Code} + \Parameter{Sonst-Code} + \Macro{IfLayersAtPageStyle}\Parameter{Seitenstil-Name} + \Parameter{Ebenenliste} + \Parameter{Dann-Code} + \Parameter{Sonst-Code} +\end{Declaration} +\BeginIndex{}{Seitenstil>Ebenen-}% +\BeginIndex{}{Ebenen>Seitenstil}% +Mit diesen Anweisungen kann überprüft werden, ob ein oder mehrere Ebenen +Bestandteil eines Seitenstils sind. \Macro{IfLayerAtPageStyle} erwartet dabei +nach dem \PName{Seitenstil-Name} im ersten Argument im zweiten Argument +genau\textnote{genau eine Ebene} einen \PName{Ebenen-Name}. Ist die +entsprechende Ebene Bestandteil des Seitenstils, so wird der \PName{Dann-Code} +ausgeführt, anderenfalls der \PName{Sonst-Code}. + +Im Unterschied dazu erlauben \Macro{IfSomeLayersAtPageStyle} und +\Macro{IfLayersAtPageStyle} im zweiten Argument eine durch Komma separierte +\PName{Ebenenliste}. Dabei führt +\Macro{IfSomeLayersAtPageStyle}\textnote{mindestens eine Ebene} den +\PName{Dann-Code} bereits aus, wenn \emph{mindestens eine} der Ebenen +Bestandteil des Seitenstils ist. Dagegen führt +\Macro{IfLayersAtPageStyle}\textnote{alle Ebenen} den \PName{Dann-Code} nur +aus, wenn \emph{alle} Ebenen Bestandteil des Seitenstils sind. \iffree{Ist die + Bedingung nicht erfüllt, so}{Anderenfalls} wird jeweils \PName{Sonst-Code} +ausgeführt. + +Durch geeignete Schachtelung sind auch komplexe Bedingungen abbildbar. Gibt +man statt einer \PName{Ebenenliste} jeweils nur einen \PName{Ebenen-Name} an, +so sind alle drei Anweisungen gleichbedeutend.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DestroyRealLayerPageStyle}\Parameter{Ebenen-Seitenstil-Name} +\end{Declaration} +\BeginIndex{}{Seitenstil>Ebenen-}% +\BeginIndex{}{Ebenen>Seitenstil}% +\iftrue% +Mit der Anweisung wird ein Ebenen-Seitenstil aus \LaTeX-Sicht undefiniert. +Wurde statt eines Ebenen-Seitenstils ein Alias-Seitenstil, ein anderer +Seitenstil oder ein unbekannter Seitenstil angegeben, so wird die Anweisung +ignoriert.% +\else% +Mit dieser Anweisung kann ein Ebenen-Seitenstil aus \LaTeX-Sicht wieder +undefiniert werden. Dies gilt jedoch nur, wenn es einen Ebenen-Seitenstil mit +dem Namen \PName{Ebenen-Seitenstil-Name} auch tatsächlich gibt. Handelt es sich +stattdessen um einen Alias-Seitenstil -- auch wenn dieser zu einem +Ebenen-Seitenstil führt -- oder um einen anderen Seitenstil oder ist gar kein +Seitenstil mit dem Namen \PName{Ebenen-Seitenstil-Name} bekannt, so geschieht +nichts, die Anweisung wird ignoriert.% +\fi + +Falls \PName{Ebenen-Seitenstil-Name} der Name des aktuellen Seitenstils ist, +so wird dieser auf eine Art leeren Seitenstil gesetzt. Falls der mit +\DescRef{maincls.cmd.thispagestyle} gesetzte Seitenstil +\PName{Ebenen-Seitenstil-Name} lautet, so wird dieser einfach nur +zurückgesetzt. Die vorherige Anweisung \DescRef{maincls.cmd.thispagestyle} +verliert damit ihre aktuelle Auswirkung. + +Es ist zu beachten\textnote{Achtung!}, dass die Ebenen des Seitenstils nicht +automatisch mit vernichtet werden. Falls Sie die Ebenen ebenfalls vernichten +möchten, so können Sie dies beispielsweise mit +\begin{lstcode} + \ForEachLayerOfPageStyle{...}{\DestroyLayer{#1}} +\end{lstcode} +vor der Vernichtung des Seitenstils selbst erreichen. + +Die Anweisung ist dazu bestimmt, innerhalb des Arguments \PName{Code} von +\DescRef{\LabelBase.cmd.scrlayerOnAutoRemoveInterface} (siehe +\autoref{sec:scrlayer.enduserinterfaces}, +\DescPageRef{scrlayer.cmd.scrlayerOnAutoRemoveInterface}) verwendet zu +werden, um Seitenstile, die als Teil eines Endanwender-Interfaces definiert +wurden, beim automatischen Entfernen dieses Interfaces mit zu entfernen.% +\EndIndexGroup +\EndIndexGroup + +\LoadCommonFile{headfootheight}% \section{Höhe von Kopf und Fuß} + +\LoadCommonFile{pagestylemanipulation}% \section{Beeinflussung der Inhalte von Seitenstilen} + +\section{Definition und Verwaltung von Schnittstellen für Endanwender} +\seclabel{enduserinterfaces} + +Das Paket \Package{scrlayer} stellt eine experimentelle Benutzerschnittstelle +zur Verfügung um (konkurrierende) Schnittstellen für Endanwender definieren +und verwalten zu können. \iffree{% Umbruchvarianten + Möglicherweise wird diese Schnittstelle langfristig wieder aus + \Package{scrlayer} verschwinden und dann stattdessen von \Package{scrbase} + übernommen werden. }{}% +Derzeit ist die Schnittstelle aber noch hoch +experimentell\iffree{% Umbruchvariante + und wird daher von eigenen Befehlen innerhalb von \Package{scrlayer} nur für + Unterpakete von \Package{scrlayer} bereit gestellt}{}% +. Es empfiehlt sich beim aktuellen Entwicklungsstand nicht, sich darauf zu +verlassen, dass die automatische Entfernung einer konkurrierenden +Schnittstelle funktioniert. Stattdessen sollte die Verwendung konkurrierender +Schnittstellen vermieden werden. + +Dieser Abschnitt beschreibt lediglich die Schnittstellen"=Anweisungen für die +Definition einer Endanwender-Schnittstelle. Für Endanwender selbst ist er +damit von geringem Interesse. Vielmehr richtet sich dieser Teil der Anleitung +an Autoren von Paketen und Klassen, die auf \Package{scrlayer} +aufbauen. Endanwender finden Informationen zu konkreten +Endanwender-Schnittstellen in \autoref{cha:scrlayer-scrpage}, +\autoref{cha:scrlayer-scrpage-experts} und \autoref{cha:scrlayer-notecolumn}. + + +\begin{Declaration} + \Macro{scrlayerInitInterface}\OParameter{Schnittstellen-Name} +\end{Declaration} +Mit dieser Anweisung wird eine neue Schnittstelle mit dem Namen +\PName{Schnittstellen-Name} registriert. Der +\PName{Schnittstellen-Name} muss einzigartig sein. Das bedeutet, dass eine +Schnittstelle gleichen Namens noch nicht registriert sein darf. Sollte dies +doch der Fall sein, so wird ein Fehler ausgegeben. + +Diese Anweisung sollte immer ganz am Anfang einer Endanwender-Schnittstelle +stehen. Daher wird sie hier auch zuerst erklärt. Wird das optionale Argument +-- einschließlich der eckigen Klammern -- weggelassen, so wird dafür +\PValue{\Macro{@currname}.\Macro{@currext}} verwendet. Für Klassen und +Pakete ist dies der Dateiname der Klasse respektive des Pakets. Aber +selbstverständlich kann jede andere Zeichenfolge der Kategorie \emph{letter} +oder \emph{other} verwendet werden. Dies ist beispielsweise sinnvoll, wenn +eine Klasse oder ein Paket mehrere Endanwender-Schnittstellen definiert.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{forceoverwrite}{Ein-Aus-Wert} + \OptionVName{autoremoveinterfaces}{Ein-Aus-Wert} + \Macro{scrlayerAddToInterface}\OParameter{Schnittstellen-Name} + \Parameter{Befehl}\Parameter{Code} + \Macro{scrlayerAddCsToInterface}\OParameter{Schnittstellen-Name} + \Parameter{Befehlssequenz}\Parameter{Code} +\end{Declaration} +Eine der besonderen Eigenschaften der Endanwender-Schnittstellen von +\Package{scrlayer} ist es, dass die Schnittstelle verwendete Befehle (auch +bekannt als \emph{Makros} oder engl. \emph{macros}) registrieren sollte. Dies +kann mit \Macro{scrlayerAddToInterface} erfolgen. Das optionale Argument +\PName{Schnittstellen-Name} entspricht hier dem Namen, der mit +\DescRef{\LabelBase.cmd.scrlayerInitInterface} zuvor registriert wurde. + +Werden\textnote{Achtung!} Anweisungen nicht nur während des Ladens einer +Klasse oder eines Pakets, sondern auch zur Laufzeit definiert, so ist das +optionale Argument auch dann zu verwenden, wenn es dem Dateinamen der Klasse +beziehungsweise des Pakets entspricht, da die Werte von \Macro{@currname} und +\Macro{@currext} nur während des Ladens Gültigkeit besitzen. + +Das erste obligatorische Argument ist der +\PName{Befehl}\footnote{\PName{Befehl} besteht aus einem umgekehrten + Schrägstrich (engl. \emph{backslash}), gefolgt von einer + \PName{Befehlssequenz}, die entweder aus Zeichen der Kategorie \emph{letter} + oder aus genau einem Zeichen der Kategorie \emph{other} besteht, oder aus + einem Zeichen der Kategorie \emph{active} (ohne umgekehrten Schrägstrich + davor).}, der zu der Endanwender-Schnittstelle hinzugefügt werden +soll. Falls der Befehl definiert werden kann, erfolgt dies. Außerdem wird dann +der Befehl auf \Macro{relax} gesetzt und \PName{Code} wird +ausgeführt. Innerhalb von \PName{Code} kann der \PName{Befehl} dann +beispielsweise mit Hilfe von \Macro{newcommand} definiert werden. + +Wann aber kann ein \PName{Befehl}\textnote{definierbare Befehle} definiert +werden? Ist ein \PName{Befehl} undefiniert oder \Macro{relax}, so kann er +immer definiert werden. Wurde ein \PName{Befehl} bereits definiert \emph{und} +für eine andere Endanwender-Schnittstelle registriert \emph{und} wurde auch die +\KOMAScript-Option \Option{autoremoveinterfaces} aktiviert, so wird diese +andere Endanwender-Schnittstelle automatisch entfernt, der \PName{Befehl} auf +\Macro{relax} gesetzt und für die angegebene neue Endanwender-Schnittstelle +registriert. Damit ist \PName{Befehl} auch dann definierbar. Falls ein +\PName{Befehl} bereits definiert ist, \emph{aber nicht} Teil einer anderen +Endanwender-Schnittstelle ist, \emph{und} falls die \KOMAScript-Option +\Option{forceoverwrite} aktiviert wurde, wird \PName{Befehl} ebenfalls +\Macro{relax} und für die angegebene Endanwender-Schnittstelle +registriert. Der \PName{Befehl} ist also auch in diesem Fall definierbar. In +allen anderen Fällen ist er jedoch nicht definierbar, also insbesondere, falls +er bereits definiert ist und die \KOMAScript-Optionen +\Option{autoremoveinterfaces} und \Option{forceoverwrite} deaktiviert sind. + +Die Anweisung \Macro{scrlayerAddCsToInterface} arbeitet ganz ähnlich der +vorgenannten Anweisung \Macro{scrlayerAddToInterface}. Allerdings erwartet sie +als erstes Argument keinen \PName{Befehl}, sondern eine +\PName{Befehlssequenz}\footnote{Eine \PName{Befehlssequenz} muss voll + expandierbar sein und ihre Expansion muss zu Zeichen der Kategorie + \emph{letter}, \emph{other} oder \emph{space} führen.}.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{scrlayerOnAutoRemoveInterface}\OParameter{Schnittstellen-Name} + \Parameter{Code} +\end{Declaration} +Für den Fall, dass die Endanwender-Schnittstelle mit dem angegebenen +\PName{Schnittstellen-Name} automatisch entfernt wird (siehe +\KOMAScript-Option \DescRef{\LabelBase.option.autoremoveinterfaces} zuvor in +diesem Abschnitt) kann zusätzlich \PName{Code} ausgeführt werden. Dies kann +beispielsweise verwendet werden, um Ebenen oder Seitenstile automatisch mit zu +vernichten (siehe \DescRef{\LabelBase.cmd.DestroyLayer}, +\DescRef{\LabelBase.cmd.DestroyPageStyleAlias}, and +\DescRef{\LabelBase.cmd.DestroyRealLayerPageStyle}), die auf Befehlen der +Endanwender-Schnittstelle beruhen. Bezüglich der Voreinstellung für das +optionale Argument sei auf die Erklärung zu +\DescRef{\LabelBase.cmd.scrlayerInitInterface} verwiesen.% +\EndIndexGroup +% +\EndIndexGroup + + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "../guide" +%%% End: + + + +% LocalWords: Vordergrundebene Sternvariante Gleitseiten Hintergrundebenen +% LocalWords: Ausgabebeschränkungen Grafikausgabe Textausgabe Textebenen +% LocalWords: Standardgrundlinie Grafikebenen Standardtextzeile überhoch +% LocalWords: Platzierungsbefehle Ebeneneigenschaft Satzspiegelkonstruktion +% LocalWords: Kreisschlagen Buchseitenkanon spätmittelalterlichen +% LocalWords: Makronamen diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrlfile.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlfile.tex new file mode 100644 index 0000000000..75c52600bf --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlfile.tex @@ -0,0 +1,779 @@ +% ====================================================================== +% scrlfile.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlfile.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrlfile of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------------- +% +% Kapitel über scrlfile in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrlfile.tex}% + [$Date: 2018-02-16 04:42:17 +0100 (Fri, 16 Feb 2018) $ + KOMA-Script guide (chapter: scrlfile)] + +\chapter{Paketabhängigkeiten mit \Package{scrlfile} + beherrschen} +\labelbase{scrlfile} + +\BeginIndexGroup +\BeginIndex{Package}{scrlfile} + +Die Einführung von \LaTeXe{} brachte 1994 eine Menge Neuerungen im Umgang mit +\LaTeX-Erweiterungen. So stehen dem Paketautor heute eine ganze Reihe von +Befehlen zur Verfügung, um festzustellen, ob ein anderes Paket oder eine +bestimmte Klasse verwendet wird und ob dabei bestimmte Optionen zur Anwendung +kommen. Der Paketautor kann selbst andere Pakete laden oder diesen Optionen +mit auf den Weg geben für den Fall, dass sie später noch geladen werden. Es +bestand daher die Hoffnung, dass es künftig unerheblich wäre, in welcher +Reihenfolge Pakete geladen werden. Diese Hoffnung hat sich leider nicht +erfüllt. + +\section{Die Sache mit den Paketabhängigkeiten} +\seclabel{dependency} +%\begin{Explain} + Immer häufiger definieren unterschiedliche Pakete den gleichen + Befehl neu oder um. Dabei ist es dann sehr entscheidend, in welcher + Reihenfolge die Pakete geladen werden. Manchmal ist das für den + Anwender kaum zu überschauen. Teilweise ist es auch + notwendig, in irgendeiner Form auf das Laden eines + anderen Pakets zu reagieren. + + Nehmen wir als einfaches Beispiel das Laden des + \Package{longtable}-Pakets bei Verwendung von \KOMAScript{}. Das + \Package{longtable}-Paket definiert seine eigene Form von + Tabellenüberschriften. Diese passen perfekt zu den + Standardklassen. Sie passen aber überhaupt + nicht zu den Voreinstellungen für die Tabellenüberschriften von + \KOMAScript{} und reagieren auch nicht auf die entsprechenden + Möglichkeiten der Konfiguration. Um dieses Problem zu lösen, müssen + die Befehle von \Package{longtable}, die für die + Tabellenüberschriften zuständig sind, von \KOMAScript{} umdefiniert + werden. Allerdings sind die \KOMAScript{}-Klassen bereits + abgearbeitet, wenn das Paket geladen wird. + + Bisher bestand die einzige Möglichkeit, dieses Problem zu lösen + darin, die Umdefinierung mit Hilfe von \Macro{AtBeginDocument} auf + einen späteren Zeitpunkt zu verschieben. Will der Anwender die + entsprechende Anweisung jedoch selbst umdefinieren, so sollte er + dies eigentlich ebenfalls in der Präambel tun. Das kann er jedoch + nicht, weil \KOMAScript{} ihm dabei in die Quere kommt. Er müsste + die Umdefinierung also ebenfalls mit Hilfe von + \Macro{AtBeginDocument} durchführen. + + Aber eigentlich müsste \KOMAScript{} die Abarbeitung gar nicht auf + den Zeitpunkt von \Macro{begin}\PParameter{document} verschieben. Es + würde genügen, wenn sie bis unmittelbar nach dem Laden von + \Package{longtable} verzögert werden könnte. Leider fehlen + entsprechende Anweisungen im \LaTeX-Kern. Das Paket + \Package{scrlfile} bringt hier Abhilfe. + + Ebenso wäre es denkbar, dass man vor dem Laden eines bestimmten + Pakets gerne die Bedeutung eines Makros in einem Hilfsmakro retten + und nach dem Laden des Pakets wieder restaurieren will. Auch das + geht mit \Package{scrlfile}. + + Die Anwendung von \Package{scrlfile} ist nicht auf die Abhängigkeit + von Paketen beschränkt. Auch Abhängigkeiten von anderen Dateien + können berücksichtigt werden. So kann beispielsweise dafür gesorgt + werden, dass das nicht unkritische Laden einer Datei wie + \File{french.ldf} automatisch zu einer Warnung führt. + + Obwohl das Paket in erster Linie für andere Paketautoren interessant + sein dürfte, gibt es durchaus auch Anwendungen für normale + \LaTeX-Benutzer. Deshalb sind in diesem Kapitel auch für beide + Gruppen Beispiele aufgeführt. +%\end{Explain} + + +\section{Aktionen vor und nach dem Laden} +\seclabel{macros} + +Mit \Package{scrlfile} können vor und nach dem Laden von Dateien Aktionen +ausgelöst werden. Bei den dazu verwendeten Befehlen wird zwischen allgemeinen +Dateien, Klassen und Paketen unterschieden. + + +\begin{Declaration} + \Macro{BeforeFile}\Parameter{Datei}\Parameter{Anweisungen} + \Macro{AfterFile}\Parameter{Datei}\Parameter{Anweisungen} +\end{Declaration}% +Mit Hilfe von \Macro{BeforeFile} kann dafür gesorgt werden, dass die +\PName{Anweisungen} vor dem nächsten Laden einer bestimmten \PName{Datei} +ausgeführt werden. Vergleichbar arbeitet \Macro{AfterFile}. Nur werden die +\PName{Anweisungen} hier erst nach dem Laden der \PName{Datei} +ausgeführt. Wird die Datei nie geladen, so werden die \PName{Anweisungen} in +beiden Fällen natürlich auch nie ausgeführt. Bei \PName{Datei} sind etwaige +Dateiendungen wie bei \Macro{input} als Teil des Dateinamens anzugeben. + +Um die Funktionalität bereitstellen zu können, bedient sich \Package{scrlfile} +der bekannten \LaTeX-Anweisung +\Macro{InputIfFileExists}. Diese\textnote{Achtung!} wird hierzu umdefiniert. +Falls die Anweisung nicht die erwartete Definition hat, gibt +\Package{scrlfile} eine Warnung aus. Dies geschieht für den Fall, dass die +Anweisung in späteren \LaTeX-Versionen geändert wird oder bereits von einem +anderen Paket umdefiniert wurde. + +Die Anweisung \Macro{InputIfFileExists} wird von \LaTeX{} immer verwendet, +wenn eine Datei geladen werden soll. Dies geschieht unabhängig davon, ob die +Datei mit \Macro{LoadClass}, \Macro{documentclass}, \Macro{usepackage}, +\Macro{RequirePackage}, \Macro{include} oder vergleichbaren Anweisungen +geladen wird. Lediglich +% Umbruchkorrektur: listings korrigieren +\begin{lstcode} + \input foo +\end{lstcode} +lädt die Datei \texttt{foo} ohne Verwendung von \Macro{InputIfFileExists}. Sie +sollten daher stattdessen immer +% Umbruchkorrektur: listings korrigieren +\begin{lstcode} + \input{foo} +\end{lstcode} +verwenden. Beachten Sie die Klammern um den Dateinamen!% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{BeforeClass}\Parameter{Klasse}\Parameter{Anweisungen} + \Macro{BeforePackage}\Parameter{Paket}\Parameter{Anweisungen} +\end{Declaration}% +Diese beiden Befehle arbeiten vergleichbar zu \DescRef{\LabelBase.cmd.BeforeFile} mit dem einen +Unterschied, dass die \PName{Klasse} beziehungsweise das \PName{Paket} mit +seinem Namen und nicht mit seinem Dateinamen angegeben wird. Die Endungen +»\File{.cls}« und »\File{.sty}« entfallen hier also.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AfterClass}\Parameter{Klasse}\Parameter{Anweisungen} + \Macro{AfterClass*}\Parameter{Klasse}\Parameter{Anweisungen} + \Macro{AfterClass+}\Parameter{Klasse}\Parameter{Anweisungen} + \Macro{AfterClass!}\Parameter{Klasse}\Parameter{Anweisungen} + \Macro{AfterAtEndOfClass}\Parameter{Klasse}\Parameter{Anweisungen} + \Macro{AfterPackage}\Parameter{Paket}\Parameter{Anweisungen} + \Macro{AfterPackage*}\Parameter{Paket}\Parameter{Anweisungen} + \Macro{AfterPackage+}\Parameter{Paket}\Parameter{Anweisungen} + \Macro{AfterPackage!}\Parameter{Paket}\Parameter{Anweisungen} + \Macro{AfterAtEndOfPackage}\Parameter{Paket}\Parameter{Anweisungen} +\end{Declaration}% +Die Anweisungen \Macro{AfterClass} und \Macro{AfterPackage} arbeiten +weitgehend wie \DescRef{\LabelBase.cmd.AfterFile}, mit dem winzigen +Unterschied, dass die \PName{Klasse} beziehungsweise das \PName{Paket} mit +seinem Namen und nicht mit seinem Dateinamen angegeben wird. Die Endungen +»\File{.cls}« und »\File{.sty}« entfallen hier also. + +Bei\important[i]{\Macro{AfterClass*}\\\Macro{AfterPackage*}} den +Sternvarianten gibt es eine zusätzliche Funktionalität. Wurde oder wird die +entsprechende Klasse oder das entsprechende Paket bereits geladen, so werden +die \PName{Anweisungen} nicht nach dem nächsten Laden, sondern unmittelbar +ausgeführt. + +Bei\important[i]{\Macro{AfterClass+}\\\Macro{AfterPackage+}} der +Plusvariante\ChangedAt{v3.09}{\Package{scrlfile}} werden die +\PName{Anweisungen} sicher erst dann ausgeführt, wenn die Klasse oder das +Paket vollständig geladen wurde. Der Unterschied zwischen der Stern- und der +Plusvariante kommt nur zum Tragen, falls die Anweisung verwendet wird, während +das Laden der Klassen bzw. des Pakets zwar bereits begonnen hat, aber noch +nicht beendet wurde. Wenn das Laden der Klasse bzw. des Pakets noch nicht +abgeschlossen wurde, werden die \PName{Anweisungen} in allen Fällen vor den in +der Klasse bzw. dem Paket mit \Macro{AtEndOfClass} oder \Macro{AtEndOfPackage} +verzögerten Anweisungen ausgeführt. + +Um\important[i]{\Macro{AfterClass!}\\\Macro{AfterPackage!}} eine Ausführung +nach den in der Klasse oder dem Paket selbst mit \Macro{AtEndOfClass} oder +\Macro{AtEndOfPackage} verzögerten Anweisungen sicherzustellen, ist die +Variante mit Ausrufezeichen\ChangedAt{v3.09}{\Package{scrlfile}} zu +verwenden. Bei dieser Spielart werden die \PName{Anweisungen} nicht mehr im +Kontext der angegebenen Klasse oder des angegebenen Pakets ausgeführt. + +Will\important[i]{\Macro{AfterAtEndOfClass}\\\Macro{AfterAtEndOfPackage}} man +nur für den Fall, dass die Klasse bzw. das Paket noch nicht geladen wurde, +erreichen, dass \PName{Anweisungen} nach der Klasse bzw. dem Paket und +außerhalb des Kontextes der angegebenen Klasse bzw. des angegebenen Pakets +ausgeführt werden, so verwendet man für Klassen die Anweisung +\Macro{AfterAtEndOfClass}\ChangedAt{v3.09}{\Package{scrlfile}} +und für Pakete \Macro{AfterAtEndOfPackage}.% +% +\begin{Example} + Als Beispiel für Paket- oder Klassenautoren will ich zunächst + erklären, wie \KOMAScript{} selbst Gebrauch von den neuen + Anweisungen macht. Dazu findet sich beispielsweise in \Class{scrbook} + Folgendes: +\begin{lstcode} + \AfterPackage{hyperref}{% + \@ifpackagelater{hyperref}{2001/02/19}{}{% + \ClassWarningNoLine{scrbook}{% + You are using an old version of hyperref + package!\MessageBreak% + This version has a buggy hack at many + drivers\MessageBreak% + causing \string\addchap\space to behave + strange.\MessageBreak% + Please update hyperref to at least version + 6.71b}% + }% + } +\end{lstcode} + Alte Versionen von \Package{hyperref} definierten ein Makro von + \Class{scrbook} in einer Weise um, die mit neueren Versionen + von \KOMAScript{} nicht mehr funktioniert. Neuere Versionen von + \Package{hyperref} unterlassen dies, wenn sie eine neuere Version + von \KOMAScript{} erkennen. Für den Fall, dass \Package{hyperref} + zu einem späteren Zeitpunkt geladen wird, sorgt also \Class{scrbook} + dafür, dass unmittelbar nach dem Laden des Pakets überprüft wird, ob + es sich um eine verträgliche Version handelt. Falls dies nicht der + Fall ist, wird eine Warnung ausgegeben. + + An anderer Stelle findet sich in drei der \KOMAScript-Klassen Folgendes: +\begin{lstcode} + \AfterPackage{caption2}{% + \renewcommand*{\setcapindent}{% +\end{lstcode}% }} + Nach dem Laden von \Package{caption2} und nur falls das Paket + geladen wird, wird hier die \KOMAScript{} eigene Anweisung + \DescRef{maincls.cmd.setcapindent} umdefiniert. Der Inhalt der Umdefinierung + ist für dieses Beispiel unerheblich. Es sei nur erwähnt, dass + \Package{caption2} die Kontrolle über die + \DescRef{maincls.cmd.caption}-Anweisung übernimmt und daher die normale + Definition von \DescRef{maincls.cmd.setcapindent} keinerlei Wirkung mehr + hätte. Die Umdefinierung verbessert dann die Zusammenarbeit mit + \Package{caption2}. + + Es gibt aber auch Beispiele für den sinnvollen Einsatz der neuen + Anweisungen durch normale Anwender. Angenommen, Sie erstellen ein + Dokument, aus dem sowohl eine PS-Datei mit \LaTeX{} und dvips als auch + eine PDF-Datei mit \mbox{pdf\LaTeX} erstellt werden soll. Das Dokument soll + außerdem Hyperlinks aufweisen. Im Tabellenverzeichnis haben Sie + Einträge, die über mehrere Zeilen gehen. Nun gibt es zwar mit + \mbox{pdf\LaTeX} bei der PDF-Ausgabe keine Probleme, da dort Links + umbrochen werden können. Bei Verwendung des + \Package{hyperref}-Treibers für dvips oder + \mbox{hyper\TeX} ist dies jedoch nicht + möglich. In diesem Fall hätten Sie gerne, dass bei + \Package{hyperref} die Einstellung \Option{linktocpage} verwendet + wird. Die Entscheidung, welcher Treiber geladen wird, wird von + \Package{hyperref} automatisch getroffen. + + Alles weitere kann nun \DescRef{\LabelBase.cmd.AfterFile} überlassen werden: +\begin{lstcode}[moretexcs={hypersetup}] + \documentclass{article} + \usepackage[ngerman]{babel} + \usepackage{scrlfile} + \AfterFile{hdvips.def}{\hypersetup{linktocpage}} + \AfterFile{hypertex.def}{\hypersetup{linktocpage}} + \usepackage{hyperref} + \begin{document} + \listoffigures + \clearpage + \begin{figure} + \caption{Dies ist ein Beispiel mit einer + Abbildungsunterschrift, die mehrere Zeile + umfasst und bei der trotzdem auf die + Verwendung des optionalen Arguments verzichtet + wurde.} + \end{figure} + \end{document} +\end{lstcode} + Egal, ob nun der \Package{hyperref}-Treiber \Option{hypertex} oder + \Option{dvips} zu Anwendung kommt, wird die dann nützliche Einstellung + \Option{linktocpage} verwendet. Wenn Sie jedoch mit \mbox{pdf\LaTeX} eine + PDF-Datei erstellen, wird darauf verzichtet, da dann der + \Package{hyperref}-Treiber \File{hpdftex.def} verwendet wird. Das bedeutet, + dass weder die Treiberdatei \File{hdvips.def} noch \File{hypertex.def} + geladen wird. +\end{Example} +\iffalse% Umbruchkorrekturtext (der besser nicht mehr verwendet wird!) +Übrigens\textnote{Tipp!} können Sie das Laden von \Package{scrlfile} und die +obigen Anweisungen \DescRef{\LabelBase.cmd.AfterFile} auch in Ihre private +\File{hyperref.cfg} (siehe oben) einfügen. Verwenden Sie dabei jedoch zum +Laden des Pakets besser \Macro{RequirePackage} anstelle von +\Macro{usepackage} (siehe \cite{latex:clsguide}). Die neuen Zeilen müssen in +obigem Beispiel unmittelbar nach der \Macro{ProvidesFile}-Zeile, also +unbedingt vor der Ausführung der Optionen \Option{dvips} oder \Option{pdftex}, +eingefügt werden.% +\fi% +Übrigens\textnote{Tipp!} kann \Package{scrlfile} auch bereits vor +\DescRef{maincls.cmd.documentclass}\IndexCmd{documentclass} geladen werden. In +diesem Fall ist allerdings \Macro{RequirePackage}\IndexCmd{RequirePackage} +anstelle von \DescRef{maincls.cmd.usepackage} zu verwenden (siehe +\cite{latex:clsguide}).% +\EndIndexGroup + + +\begin{Declaration} + \Macro{BeforeClosingMainAux}\Parameter{Anweisungen} + \Macro{AfterReadingMainAux}\Parameter{Anweisungen} +\end{Declaration} +Diese Anweisungen unterscheiden sich in einem Detail von den zuvor erklärten +Anweisungen. Jene ermöglichen Aktionen vor und nach dem Laden von +Dateien. Das ist hier nicht der Fall. Paketautoren haben des Öfteren das +Problem, dass sie Anweisungen in die \File{aux}-Datei schreiben wollen, +nachdem die letzte Seite des Dokuments ausgegeben wurde. Dazu wird -- in +Unkenntnis der dadurch verursachten Probleme -- häufig Code +wie der folgende eingesetzt: +\begin{lstcode}[escapechar=\$] + \AtEndDocument{%$\textnote{Nicht nachmachen!}$ + \if@filesw + \write\@auxout{% + \protect\writethistoaux% + }% + \fi + } +\end{lstcode} +Dies ist jedoch keine wirkliche Lösung. Wurde die letzte +Seite vor \Macro{end}\PParameter{document} bereits ausgegeben, so führt obiges +zu keiner Ausgabe in die \File{aux}-Datei. Würde man zur Lösung dieses +Problems nun ein \Macro{immediate} vor \Macro{write} setzen, so hätte man das +umgekehrte Problem: wurde die letzte Seite bei +\Macro{end}\PParameter{document} noch nicht ausgegeben, so wird +\Macro{writethistoaux} zu früh in die \File{aux}-Datei geschrieben. Man sieht +daher häufig auch Lösungsversuche wie: +\begin{lstcode}[escapechar=\$] + \AtEndDocument{%$\textnote{Nicht nachmachen!}$ + \if@filesw + \clearpage + \immediate\write\@auxout{% + \protect\writethistoaux% + }% + \fi + } +\end{lstcode} +Diese Lösung hat jedoch den Nachteil, dass damit die Ausgabe der letzten Seite +erzwungen wird. Eine Anweisung wie +\begin{lstcode} + \AtEndDocument{% + \par + \vspace*{\fill}% + Hinweis am Ende des Dokuments. + \par + } +\end{lstcode} +führt dann nicht mehr dazu, dass der Hinweis am Ende der letzten Seite des +Dokuments ausgegeben wird, sie würde stattdessen am Ende der nächsten Seite +ausgegeben. Gleichzeitig würde \Macro{writethistoaux} wieder eine Seite zu +früh in die \File{aux}-Datei geschrieben. + +Die beste Lösung des Problems wäre nun, wenn man unmittelbar in die +\File{aux}-Datei schreiben könnte, nachdem das finale +\DescRef{maincls.cmd.clearpage} innerhalb von \Macro{end}\PParameter{document} +ausgeführt, aber bevor die \File{aux}-Datei geschlossen wird. Dies ist das +Ziel von \Macro{BeforeClosingMainAux}: +\begin{lstcode} + \BeforeClosingMainAux{% + \if@filesw + \immediate\write\@auxout{% + \protect\writethistoaux% + }% + \fi + } +\end{lstcode} +Das ist auch dann erfolgreich, wenn das finale \DescRef{maincls.cmd.clearpage} +innerhalb von \Macro{end}\PParameter{document} tatsächlich zu keiner Ausgabe +einer Seite mehr führt oder wenn -- sei es korrekt verwendet oder in +Unkenntnis der oben erläuterten Probleme -- \DescRef{maincls.cmd.clearpage} +innerhalb einer \Macro{AtEndDocument}-Anweisung zum Einsatz kam. + +Es gibt jedoch für \Macro{BeforeClosingMainAux} eine Einschränkung: Im +Argument \PName{Anweisungen} sollte keine Satzanweisung verwendet +werden. Es darf also mit \Macro{BeforeClosingMainAux} kein zusätzliches +Material gesetzt werden! Wird diese Einschränkung nicht beachtet, so ist das +Ergebnis ebenso unvorhersehbarer wie bei den gezeigten Problemen mit +\Macro{AtEndDocument}. + +Die Anweisung \Macro{AfterReadingMainAux}\ChangedAt{v3.03}{\Package{scrlfile}} +führt sogar \PName{Anweisungen} nach dem Schließen und Einlesen der +\File{aux}-Datei innerhalb von \Macro{end}\PParameter{document} aus. Dies ist +nur in einigen wenigen, sehr seltenen Fällen sinnvoll, beispielsweise, wenn +man statistische Informationen in die \File{log}-Datei schreiben will, die +erst nach dem Einlesen der \File{aux}-Datei gültig sind, oder zur +Implementierung zusätzlicher \emph{Rerun}-Aufforderungen. Satzanweisungen sind +an dieser Stelle noch kritischer zu betrachten als bei +\Macro{BeforeClosingMainAux}.% +% +\EndIndexGroup + + +\section{Dateien beim Einlesen ersetzen} +\seclabel{replace} + +In den bisherigen Abschnitten wurden Anweisungen erklärt, mit denen es möglich +ist, vor oder nach dem Einlesen einer bestimmten Datei, eines bestimmten +Pakets oder einer Klasse Aktionen auszuführen. Es ist mit \Package{scrlfile} +aber auch möglich, eine ganz andere Datei als die angeforderte einzulesen. + +\begin{Declaration} + \Macro{ReplaceInput}\Parameter{Dateiname}\Parameter{Ersatzdatei} +\end{Declaration} +Mit\ChangedAt{v2.96}{\Package{scrlfile}} dieser Anweisung wird eine Ersetzung +der Datei mit dem als erstes angegebenen \PName{Dateiname} definiert. Wenn +\LaTeX{} anschließend angewiesen wird, diese Datei zu laden, wird stattdessen +\PName{Ersatzdatei} geladen. Die Definition der Ersatzdatei wirkt sich auf +alle Dateien aus, die vom Anwender oder intern von \LaTeX{} mit Hilfe von +\Macro{InputIfFileExists} geladen werden. Dazu ist es allerdings erforderlich, +dass \Package{scrlfile} diese Anweisung umdefiniert. + +\begin{Example} + Sie wollen, dass anstelle der Datei \File{\Macro{jobname}.aux}, die Datei + \File{\Macro{jobname}.xua} geladen wird. Dazu verwenden Sie: +\begin{lstcode} + \ReplaceInput{\jobname.aux}{\jobname.xua} +\end{lstcode} + Wenn Sie nun zusätzlich \File{\Macro{jobname}.xua} auch noch durch + \File{\Macro{jobname}.uxa} ersetzen: +\begin{lstcode} + \ReplaceInput{\jobname.xua}{\jobname.uxa} +\end{lstcode} + dann wird \File{\Macro{jobname}.aux} am Ende durch + \File{\Macro{jobname}.uxa} ersetzt. Es wird also die komplette + Ersetzungskette abgearbeitet. + + Einer Ersetzung im Kreis: +\begin{lstcode} + \ReplaceInput{\jobname.aux}{\jobname.xua} + \ReplaceInput{\jobname.xua}{\jobname.aux} +\end{lstcode} + würde jedoch zu einem \emph{stack size error} führen. Es ist also nicht + möglich, eine einmal ersetzte Datei wieder durch ihren Ursprung zu ersetzen. +\end{Example} + +Theoretisch wäre es auch möglich, auf diesem Wege ein Paket durch ein anderes +oder eine Klasse durch eine andere zu ersetzen. Dabei würde \LaTeX{} aber +erkennen, dass die angeforderten Dateinamen nicht zum Namen des Pakets oder +der Klasse passen. Eine Lösung dieses Problems finden Sie nachfolgend. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ReplaceClass}\Parameter{Klasse}\Parameter{Ersatzklasse} + \Macro{ReplacePackage}\Parameter{Paket}\Parameter{Ersatzpaket} +\end{Declaration} +Eine\ChangedAt{v2.96}{\Package{scrlfile}}\textnote{Achtung!} Klasse oder ein +Paket sollte niemals mit Hilfe der oben erklärten Anweisung +\DescRef{\LabelBase.cmd.ReplaceInput} ersetzt werden. In diesem Fall würde +\LaTeX{} eine Warnung über nicht übereinstimmende Klassen- oder Paketnamen +melden. Auch echte Fehler sind möglich, wenn eine Klasse oder ein Paket unter +einem falschen Dateinamen geladen wird. +\begin{Example} + Sie ersetzen das Paket \Package{scrpage2} durch dessen offiziellen + Nachfolger \Package{scrlayer-scrpage}, indem Sie +\begin{lstcode}[escapechar=\$] + \ReplaceInput{scrpage2.sty}{scrlayer-scrpage.sty}$\textnote{Nicht nachmachen!}$ +\end{lstcode} + verwenden. Dies wird beim Laden von \Package{scrpage2} zu der Warnung +\begin{lstcode} + LaTeX warning: You have requested `scrpage2', + but the package provides + `scrlayer-scrpage'. +\end{lstcode} + führen. Für den Anwender wäre diese Warnung mehr als verwirrend, hat er doch + gar nicht \Package{scrlayer-scrpage}, sondern tatsächlich \Package{scrpage2} + angefordert, das jedoch durch \Package{scrlayer-scrpage} ersetzt wurde. +\end{Example} +Eine Lösung dieser Probleme besteht nun darin, statt +\DescRef{\LabelBase.cmd.ReplaceInput} eine der Anweisungen +\Macro{ReplaceClass} oder \Macro{ReplacePackage} zu verwenden. Es ist zu +beachten, dass wie bei \Macro{documentclass} und \Macro{usepackage} der Name +der Klasse oder des Pakets und nicht deren kompletter Dateiname anzugeben ist. + +Die Ersetzung funktioniert für Klassen, die mit +\Macro{documentclass}, \Macro{LoadClassWithOptions} oder \Macro{LoadClass} +geladen werden. Für Pakete funktioniert die Ersetzung beim Laden mit +\Macro{usepackage}, \Macro{RequirePackageWithOptions} und +\Macro{RequirePackage}. + +Es\textnote{Achtung!} ist zu beachten, dass die \PName{Ersatzklasse} oder das +\PName{Ersatzpaket} mit denselben Optionen geladen wird, mit denen die +ursprünglich geforderte Klasse oder das ursprünglich geforderte Paket geladen +würden. Wird ein Paket oder eine Klasse durch ein Paket oder eine Klasse +ersetzt, die eine geforderte Option nicht unterstützt, würde das zu den +üblichen Warnungen und Fehlern führen. Es ist jedoch möglich, solche in der +\PName{Ersatzklasse} oder dem \PName{Ersatzpaket} fehlenden Optionen per +\DescRef{\LabelBase.cmd.BeforeClass} oder +\DescRef{\LabelBase.cmd.BeforePackage} neu zu definieren. + +\begin{Example} + Angenommen, das Paket \Package{oldfoo} soll beim Laden durch das + Paket \Package{newfoo} ersetzt werden. Dies wird mit +\begin{lstcode} + \ReplacePackage{oldfoo}{newfoo} +\end{lstcode} + erreicht. Das alte Paket hat eine Option \Option{oldopt}, die das neue Paket + jedoch nicht hat. Mit +\begin{lstcode} + \BeforePackage{newfoo}{% + \DeclareOption{oldopt}{% + \PackageInfo{newfoo}% + {option `oldopt' not supported}% + }% + }% +\end{lstcode} + wird diese Option nun für das Paket \Package{newfoo} nachdefiniert. Dadurch + wird vermieden, dass beim Laden des Pakets \Package{oldfoo} ein Fehler über + die im Paket \Package{newfoo} nicht unterstützte Option gemeldet wird. + + Existiert hingegen eine Option \Option{newopt}, die anstelle der Option + \Option{oldopt} verwendet werden soll, so kann dies ebenfalls erreicht + werden: +\begin{lstcode} + \BeforePackage{newfoo}{% + \DeclareOption{oldopt}{% + \ExecuteOptions{newopt}% + }% + }% +\end{lstcode} + Es ist sogar möglich, festzulegen, dass beim Laden des neuen Pakets + andere Voreinstellung gelten sollen: +\begin{lstcode} + \BeforePackage{newfoo}{% + \DeclareOption{oldopt}{% + \ExecuteOptions{newopt}% + }% + \PassOptionsToPackage{newdefoptA,newdefoptB}% + {newfoo}% + } +\end{lstcode} + oder auch direkt: +\begin{lstcode} + \BeforePackage{newfoo}{% + \DeclareOption{oldopt}{% + \ExecuteOptions{newopt}% + }% + }% + \PassOptionsToPackage{newdefoptA,newdefoptB}% + {newfoo}% +\end{lstcode} + Man beachte, dass im letzten Beispiel der Aufruf von + \Macro{PassOptionsToPackage} nicht innerhalb, sondern erst nach + \Macro{BeforePackage} erfolgt. +\end{Example} + +Damit Klassen ersetzt werden können, ist es natürlich erforderlich +\Package{scrlfile} vor der Klasse zu laden. Dazu ist +\Macro{RequirePackage}\IndexCmd{RequirePackage} anstelle von +\DescRef{maincls.cmd.usepackage} zu verwenden (siehe \cite{latex:clsguide}).% +\EndIndexGroup + + +\begin{Declaration} + \Macro{UnReplaceInput}\Parameter{Dateinamen} + \Macro{UnReplacePackage}\Parameter{Paket} + \Macro{UnReplaceClass}\Parameter{Klasse} +\end{Declaration} +Eine\ChangedAt{v3.12}{\Package{scrlfile}} Ersetzung kann auch wieder +aufgehoben werden. Dabei sollten Ersetzungen von Dateien immer mit +\Macro{UnReplaceInput}, Ersetzungen von Paketen mit \Macro{UnReplacePackage} +und Ersetzungen von Klassen mit \Macro{UnReplaceClass} aufgehoben werden. Nach +der Aufhebung der Ersetzung führen Ladebefehle für den entsprechenden +\PName{Dateiname}, das entsprechende \PName{Paket} oder die entsprechende +\PName{Klasse} dann wieder dazu, dass die Datei, das Paket oder die Klasse +selbst anstelle der Ersatzdatei, des Ersatzpakets oder der Ersatzklasse +geladen wird.% +\EndIndexGroup + + +\section{Dateien gar nicht erst einlesen} +\seclabel{prevent} + +Gerade\ChangedAt{v3.08}{\Package{scrlfile}} in Klassen und Paketen, die +innerhalb von Firmen oder Instituten verwendet werden, findet man häufig, dass +sehr viele Pakete nur deshalb geladen werden, weil die Anwender diese Pakete +oft verwenden. Wenn es dann mit einem dieser automatisch geladenen Paketen zu +einem Problem kommt, muss man irgendwie das Laden des problematischen Pakets +verhindern. Auch hier bietet \Package{scrlfile} eine einfache Lösung. + +\begin{Declaration} + \Macro{PreventPackageFromLoading}\OParameter{Stattdessencode} + \Parameter{Paketliste} + \Macro{PreventPackageFromLoading*}\OParameter{Stattdessencode} + \Parameter{Paketliste} +\end{Declaration} +Wird diese Anweisung\ChangedAt{v3.08}{\Package{scrlfile}} vor dem +Laden eines Paket mit \Macro{usepackage}\IndexCmd{usepackage}, +\Macro{RequirePackage}\IndexCmd{RequirePackage} oder +\Macro{RequirePackageWithOptions}\IndexCmd{RequirePackageWithOptions} +aufgerufen, so wird das Laden des Pakets effektiv verhindert, falls es in +der \PName{Paketliste} zu finden ist. +% +\begin{Example} + Angenommen, Sie arbeiten in einer Firma, in der alle Dokumente mit + Latin~Modern erzeugt werden. In der Firmenklasse, \Class{firmenci}, befinden + sich daher die Zeilen: +\begin{lstcode} + \RequirePackage[T1]{fontenc} + \RequirePackage{lmodern} +\end{lstcode} + Nun wollen Sie zum ersten Mal ein Dokument mit + X\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\LaTeX{} oder Lua\LaTeX{} + setzen. Da beim hierbei empfohlenen Paket \Package{fontspec} ohnehin + Latin-Modern voreingestellt ist und das Laden von \Package{fontenc} eher + störend wäre, wollen Sie das Laden beider Pakete verhindern. Sie laden die + Klasse deshalb nun in Ihrem eigenen Dokument wie folgt: +\begin{lstcode} + \RequirePackage{scrlfile} + \PreventPackageFromLoading{fontenc,lmodern} + \documentclass{firmenci} +\end{lstcode} +\end{Example} +Wie im Beispiel zu sehen ist, kann man das Paket \Package{scrlfile} auch +bereits vor der Klasse laden. In diesem Fall muss das Laden dann aber mit +Hilfe von \Macro{RequirePackage}\IndexCmd{RequirePackage} erfolgen, da +\Macro{usepackage} vor \Macro{documentclass} verboten ist (siehe +\cite{latex:clsguide}). + +Wird eine leere \PName{Paketliste} angegeben oder wird ein Paket angegeben, +das bereits geladen ist, gibt \Macro{PreventPackageFromLoading} eine +Warnung aus, während +\Macro{PreventPackageFromLoading*}\ChangedAt{v3.12}{\Package{scrlfile}} +lediglich einen entsprechenden Hinweis in die Log-Datei schreibt. + +Das optionale Argument\ChangedAt{v3.12}{\Package{scrlfile}} kann verwendet +werden, wenn anstelle des Ladens des Pakets etwas anderes getan werden +soll. Innerhalb des \PName{Stattdessencode}s dürfen jedoch keine anderen +Pakete und keine Dateien geladen werden. Zum Laden eines anderen Pakets siehe +\DescRef{\LabelBase.cmd.ReplacePackage} in \autoref{sec:scrlfile.replace} auf +\DescPageRef{\LabelBase.cmd.ReplacePackage}. Beachten\textnote{Achtung!} Sie +bitte auch, dass der \PName{Stattdessencode} mehrfach ausgeführt wird, falls +Sie versuchen, das Paket mehrfach zu laden!% +\EndIndexGroup + + +\begin{Declaration} + \Macro{StorePreventPackageFromLoading}\Parameter{\textMacro{Anweisung}} + \Macro{ResetPreventPackageFromLoading} +\end{Declaration} +\Macro{Anweisung} wird mit +\Macro{StorePreventPackageFromLoading}\ChangedAt{v3.08}{\Package{scrlfile}} +als die aktuelle Liste der Pakete definiert, für die das Laden verhindert +werden soll. Dagegen setzt +\Macro{ResetPreventPackageFromLoading}\ChangedAt{v3.08}{\Package{scrlfile}} +die Liste der Pakete, für die das Laden verhindert werden soll, zurück. Danach +können wieder alle Pakete geladen werden. +\begin{Example} + Angenommen, Sie sind innerhalb eines Pakets unbedingt auf das Laden eines + anderen Pakets angewiesen und wollen nicht, dass der Anwender das Laden + dieses Pakets mit + \DescRef{\LabelBase.cmd.PreventPackageFromLoading}% + \IndexCmd{PreventPackageFromLoading} + verhindern kann. Also setzen Sie die Paketliste für die Ausnahmen zuvor + zurück: +\begin{lstcode} + \ResetPreventPackageFromLoading + \RequirePackage{foo} +\end{lstcode} + Allerdings hat dies den Nachteil, dass ab diesem Zeitpunkt die komplette + Ausnahmeliste des Anwenders verloren ist. Also speichern Sie die Liste + zunächst zwischen und reaktivieren sie später wieder: +\begin{lstcode} + \newcommand*{\Users@PreventList}{}% + \StorePreventPackageFromLoading\Users@PreventList + \ResetPreventPackageFromLoading + \RequirePackage{foo} + \PreventPackageFromLoading{\Users@PreventList} +\end{lstcode} + Es ist zu beachten, dass\textnote{Achtung!} \Macro{Users@PreventList} durch + die Anweisung \Macro{StorePreventPackageFromLoading} auch definiert + werden würde, wenn diese bereits anderweitig definiert wäre. Eine vorhandene + Definition würde also ohne Rücksicht überschrieben werden. In diesem + Beispiel wurde deshalb mit einem vorherigen \Macro{newcommand*} + sichergestellt, dass in dem Fall zur Sicherheit eine Fehlermeldung + ausgegeben wird. +\end{Example} +An dieser Stelle sei darauf hingewiesen, dass Sie bei Manipulationen an der mit +\Macro{StorePreventPackageFromLoading} zwischengespeicherten Liste selbst die +Verantwortung für eine korrekte Wiederherstellbarkeit tragen. So muss die +Liste unbedingt mit Komma separiert sein, sollte keine Leerzeichen oder +Gruppenklammern enthalten und muss voll expandierbar sein.% + +Beachten\textnote{Achtung!} Sie bitte, dass +\Macro{ResetPreventPackageFromLoading} den \PName{Stattdessencode} für ein +Paket nicht löscht, sondern nur vorübergehend dessen Ausführung nicht mehr +erfolgt.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{UnPreventPackageFromLoading}\Parameter{Paketliste} + \Macro{UnPreventPackageFromLoading*}\Parameter{Paketliste} +\end{Declaration} +Statt\ChangedAt{v3.12}{\Package{scrlfile}} die Liste der Pakete, für die das +Laden verhindert werden soll, komplett zurück zu setzen, kann man auch +einzelne oder mehrere Pakete gezielt von dieser Liste entfernen. Die +Sternvariante des Befehls löscht außerdem den \PName{Stattdessencode}, der für +das Paket gespeichert ist. Falls die Verhinderungsliste beispielsweise aus +einer gespeicherten Liste wiederhergestellt wird, wird dann der +\PName{Stattdessencode} trotzdem nicht mehr ausgeführt.% +% +\begin{Example} + Angenommen, Sie wollen zwar verhindern, dass ein Paket \Package{foo} + geladen wird, wollen aber nicht, dass ein eventuell bereits gespeicherter + \PName{Stattdessencode} ausgeführt wird. Stattdessen soll nur Ihr neuer + \PName{Stattdessencode} ausgeführt werden. Dies ist wie folgt möglich: +\begin{lstcode} + \UnPreventPackageFromLoading*{foo} + \PreventPackageFromLoading[% + \typeout{Stattdessencode}% + ]{foo} +\end{lstcode} + Für die Anweisung \Macro{UnPreventPackageFromLoading*} ist es unerheblich, + ob das Paket zuvor überhaupt vom Laden ausgenommen war. + + Natürlich können Sie die Anweisung indirekt auch nutzen, um den + \PName{Stattdessencode} aller Pakete zu löschen: +\begin{lstcode} + \StorePreventPackageFromLoading\TheWholePreventList + \UnPreventPackageFromLoading*{\TheWholePreventList} + \PreventPackageFromLoading{\TheWholePreventList} +\end{lstcode} + Die Pakete werden dann zwar noch immer nicht geladen, ihr + \PName{Stattdessencode} existiert aber nicht mehr und wird nicht mehr + ausgeführt.% +\end{Example}% +\EndIndexGroup +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrlttr2-experts.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlttr2-experts.tex new file mode 100644 index 0000000000..45ea423af3 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlttr2-experts.tex @@ -0,0 +1,2048 @@ +% ====================================================================== +% scrlttr2-experts.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlttr2-experts.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Diese Datei ist Teil der KOMA-Script-Sammlung für LaTeX2e. +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrlttr2 of the KOMA-Script guide expert part +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel über scrlttr2 im Experten-Teil der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrlttr2-experts.tex}% + [$Date: 2018-04-26 14:55:38 +0200 (Thu, 26 Apr 2018) $ + KOMA-Script guide (chapter: scrlttr2 for experts)] + +\chapter{Zusätzliche Informationen zur + Klasse \Class{scrlttr2} und Paket \Package{scrletter}} +\labelbase{scrlttr2-experts} + +\BeginIndexGroup \BeginIndex{Class}{scrlttr2} In diesem Kapitel finden Sie +zusätzliche Informationen zu der \KOMAScript-Klasse \Class{scrlttr2}. % +\iffree{Einige Teile des Kapitels sind dabei dem \KOMAScript-Buch + \cite{book:komascript} vorbehalten. Dies sollte kein Problem sein, denn + der}{Der} % +Anwender, der die Klasse einfach nur verwenden will, wird diese Informationen +normalerweise nicht benötigen. Ein Teil der Informationen richtet sich an +Anwender, denen die vordefinierten Möglichkeiten nicht mehr genügen. So +befasst sich beispielsweise der erste Abschnitt ausführlich mit den +Pseudolängen, die den Briefbogen bestimmen und die für Anpassungen an eigene +Briefbogenlayouts abweichend zu setzen sind.% +\iffalse% Es wird Zeit das komplett rauszuwerfen! +\ Darüber hinaus finden + sich in diesem Kapitel auch Informationen über Möglichkeiten, die aus + Gründen der Verbesserung der Kompatibilität zur obsoleten \KOMAScript-Klasse + \Class{scrlettr} geschaffen wurden. Es wird auch ausführlich erklärt, wie + man einen Brief dieser veralteten Klasse auf die aktuelle Briefklasse + übertragen kann. +\fi + +\BeginIndex{Package}{scrletter}% +Darüber hinaus gibt es seit +\KOMAScript~3.15\ChangedAt[2014/11]{v3.15}{\Package{scrletter}} das Paket +\Package{scrletter}, das zusammen mit einer der \KOMAScript-Klassen +\Class{scrartcl}, \Class{scrreprt} oder \Class{scrbook} verwendet werden +kann. Es stellt nahezu die komplette Funktionalität von \Class{scrlttr2} für +die drei genannten Klassen zur Verfügung. Einige wenige Unterschiede gibt es +jedoch, die ebenfalls in diesem Kapitel genannt werden.% + + +\section{Pseudolängen für fortgeschrittene Anwender} +\seclabel{pseudoLengths} +\BeginIndexGroup +\BeginIndex{}{Pseudolängen} + +\TeX{} arbeitet mit einem festen Satz an Registern. Es gibt Register für +Token, für Boxen, für Zähler, für Abstände (englisch: \emph{skip}) und für +Größen (englisch: \emph{dimension}). Von all diesen Registern gibt es jeweils +256~Stück. Für \LaTeX{}-Längen, die mit \Macro{newlength} angefordert werden, +werden Abstandsregister belegt. Sind alle diese Register verbraucht, kann man +keine weiteren Längen definieren. Sowohl \Class{scrlttr2} als auch +\Package{scrletter} würden normalerweise allein für die erste Seite mehr als +20 solche Register verbrauchen. \LaTeX{} selbst belegt bereits 40 dieser +Register. Das \hyperref[cha:typearea]{\Package{typearea}}% +\IndexPackage{typearea}-Paket benötigt ebenfalls einige, so dass ein Viertel +der kostbaren Register verbraucht wäre. Aus diesem Grund werden +briefspezifische Längen bei \KOMAScript{} eben nicht in Längen, sondern in +Makros abgelegt, den Pseudolängen. Der Nachteil dieses Vorgehens besteht +darin, dass man mit diesen Makros nicht so einfach rechnen kann wie mit echten +Längen. + +Bitte beachten\textnote{Achtung!} Sie unbedingt, dass die Pseudolängen zwar +intern als Makros implementiert sind, bei den Befehlen zur Nutzung der +Pseudolängen jedoch nur die Namen anzugeben sind. Diese werden wie die Namen +von \LaTeX-Zählern und im Gegensatz zu Makros oder echten Längen ohne +umgekehrten Schrägstrich geschrieben! + +Wer nun einwenden will, dass \LaTeX{} in der empfohlenen und für \KOMAScript{} +benötigten Installation mit \eTeX{} inzwischen das oben genannte +Beschränkungsproblem nicht mehr besitzt, hat Recht. Allerdings kam diese +Entscheidung für \Class{scrlttr2} ein wenig zu spät. Bei \Package{scrletter} +wurde das Konzept der Pseudolängen aus Gründen der Kompatibilität übernommen. + +Eine Auf"|listung aller von \KOMAScript{} definierten und verwendeten +Pseudolängen ist \autoref{tab:scrlttr2-experts.pseudoLengths} zu +entnehmen. Dabei ist auch angegeben, wo in den nachfolgenden Unterabschnitten +nähere Erklärungen zu der jeweiligen Pseudolänge zu finden +sind.%| + +\autoref{fig:scrlttr2-experts.pseudoLengths} auf +\autopageref{fig:scrlttr2-experts.pseudoLengths} zeigt eine schematische +Darstellung der wichtigsten Abstände auf dem Briefbogen. Dabei sind neben den +Pseudolängen für die veränderbaren Abstände zusätzlich in heller Schrift auch +die Längen angegeben, die für einige, wenige fest programmierte Abstände +verwendet werden. Aus Gründen der Übersichtlichkeit wurde in der Darstellung +auf einige weniger häufig benötigte Pseudolängen jedoch auch verzichtet. +% +\iffree{}{\enlargethispage*{\baselineskip}}% Umbruchkorrektur!!! +\begin{desclist} + \renewcommand{\abovecaptionskipcorrection}{-\normalbaselineskip}% + \desccaption{% + Von \Class{scrlttr2} und \Package{scrletter} verwendete Pseudolängen% + \label{tab:scrlttr2-experts.pseudoLengths}% + }{% + Von \Class{scrlttr2} und \Package{scrletter} verwendete Pseudolängen + (\emph{Fortsetzung})% + }% + \pentry{backaddrheight}{% + Höhe der Rücksendeadresse am oberen Rand des Anschriftfeldes + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.backaddrheight})% + }% + \pentry{bfoldmarklength}{% + Länge der unteren horizontalen Faltmarke + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.bfoldmarkvpos})% + }% + \pentry{bfoldmarkvpos}{% + Abstand der unteren horizontalen Faltmarke von der oberen Kante des + Papiers + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.bfoldmarkvpos})% + }% + \pentry{firstfoothpos}{% + Abstand des Brief"|fußes von der linken Kante des Papiers; Werte + größer der Breite oder kleiner der negativen Breite des Papiers werden + gesondert behandelt (\autoref{sec:scrlttr2-experts.firstFoot}, + \DescPageRef{scrlttr2-experts.plength.firstfoothpos})%| + }% + \pentry{firstfootvpos}{% + Abstand des Brief"|fußes von der oberen Kante des Papiers + (\autoref{sec:scrlttr2-experts.firstFoot}, + \DescPageRef{scrlttr2-experts.plength.firstfootvpos})%| + }% + \pentry{firstfootwidth}{% + Breite des Brief"|fußes + (\autoref{sec:scrlttr2-experts.firstFoot}, + \DescPageRef{scrlttr2-experts.plength.firstfootwidth})%| + }% + \pentry{firstheadhpos}{% + Abstand des Briefkopfes von der linken Kante des Papiers; Werte + größer der Breite oder kleiner der negativen Breite des Papiers werden + gesondert behandelt (\autoref{sec:scrlttr2-experts.firstHead}, + \DescPageRef{scrlttr2-experts.plength.firstheadhpos})% + }%\iffree{}{\enlargethispage*{\baselineskip}}% Umbruchkorrektur!!! + \pentry{firstheadvpos}{% + Abstand des Briefkopfes von der oberen Kante des Papiers + (\autoref{sec:scrlttr2-experts.firstHead}, + \DescPageRef{scrlttr2-experts.plength.firstheadvpos})% + }% + \pentry{firstheadwidth}{% + Breite des Briefkopfes + (\autoref{sec:scrlttr2-experts.firstHead}, + \DescPageRef{scrlttr2-experts.plength.firstheadwidth})% + }% + \pentry{foldmarkhpos}{% + Abstand der horizontalen Faltmarken von der linken Kante des Papiers + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.foldmarkhpos})% + }% + \pentry{foldmarkvpos}{% + Abstand der vertikalen Faltmarken von der oberen Kante des Papiers + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.foldmarkvpos})% + }% + \pentry{fromrulethickness}{% + Dicke einer optionalen + \iffalse horizontalen \fi% Umbruchkorrektur + Linie im Briefkopf + (\autoref{sec:scrlttr2-experts.firstHead}, + \DescPageRef{scrlttr2-experts.plength.fromrulethickness})% + }% + \pentry{fromrulewidth}{% + Länge einer optionalen + \iffalse horizontalen \fi% Umbruchkorrektur + Linie im Briefkopf + (\autoref{sec:scrlttr2-experts.firstHead}, + \DescPageRef{scrlttr2-experts.plength.fromrulewidth})% + }% + \pentry{lfoldmarkhpos}{% + Abstand der vertikalen Faltmarke von der linken Kante des Papiers + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.lfoldmarkhpos})% + }% + \pentry{lfoldmarklength}{% + Länge der vertikalen Faltmarke + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.lfoldmarklength})% + }% + \pentry{locheight}{% + Höhe der Absenderergänzung, falls der Wert nicht 0 ist; bei 0 wird + stattdessen \PLength{toaddrheight} verwendet + (\autoref{sec:scrlttr2-experts.locationField}, + \DescPageRef{scrlttr2-experts.plength.locheight})% + }% + \pentry{lochpos}{% + Abstand der Absenderergänzung von der rechten Papierkante, falls der Wert + positiv ist, oder negativer Abstand der Absenderergänzung von der linken + Papierkante, falls der Wert negativ ist; bei 0 wird stattdessen der + negative Wert von \PLength{toaddrhpos} verwendet + (\autoref{sec:scrlttr2-experts.locationField}, + \DescPageRef{scrlttr2-experts.plength.lochpos})% + }% + \pentry{locvpos}{% + Abstand der Absenderergänzung von der oberen Papierkante, falls der Wert + nicht 0 ist; bei 0 wird stattdessen \PLength{toaddrvpos} verwendet + (\autoref{sec:scrlttr2-experts.locationField}, + \DescPageRef{scrlttr2-experts.plength.locvpos})% + }% + \pentry{locwidth}{% + Breite des Feldes für die Absenderergänzung, wobei bei einem Wert von 0 + die Breite automatisch aufgrund der in \autoref{sec:scrlttr2.firstpage}, + \DescPageRef{scrlttr2.option.locfield} beschriebenen Option + \DescRef{scrlttr2.option.locfield} berechnet wird + (\autoref{sec:scrlttr2-experts.locationField}, + \DescPageRef{scrlttr2-experts.plength.locwidth})% + }\iffree{}{\enlargethispage*{\baselineskip}}% Umbruchkorrektur!!!% + \pentry{mfoldmarklength}{% + Länge der mittleren horizontalen Faltmarke + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.mfoldmarklength})% + }% + \pentry{mfoldmarkvpos}{% + Abstand der mittleren horizontalen Faltmarke von der oberen Kante des + Papiers + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.mfoldmarkvpos})% + }% + \pentry{pfoldmarklength}{% + Länge der Lochermarke + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.pfoldmarklength})% + }% + \pentry{PPdatamatrixvskip}{% + vertikaler Abstand zwischen Port-Payé-Kopf und Data-Matrix bei + \OptionValueRef{scrlttr2}{addrfield}{PP} + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.PPdatamatrixvskip})% + }% + \pentry{PPheadheight}{% + Höhe für den Port-Payé-Kopf + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.PPheadheight})% + }% + \pentry{PPheadwidth}{% + Breite des linken Port-Payé-Feldes bei + \OptionValueRef{scrlttr2}{addrfield}{PP} + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.PPheadwidth})% + }% + \pentry{refaftervskip}{% + vertikaler Abstand nach der Geschäftszeile + (\autoref{sec:scrlttr2-experts.refLine}, + \DescPageRef{scrlttr2-experts.plength.refaftervskip})% + }% + \pentry{refhpos}{% + Abstand der Geschäftszeile von der linken Papierkante, wobei bei einem + Wert von 0 automatisch relativ zur Papierbreite zentriert wird + (\autoref{sec:scrlttr2-experts.refLine}, + \DescPageRef{scrlttr2-experts.plength.refhpos})% + }% + \pentry{refvpos}{% + Abstand der Geschäftszeile von der oberen Kante des Papiers + (\autoref{sec:scrlttr2-experts.refLine}, + \DescPageRef{scrlttr2-experts.plength.refvpos})% + }% + \pentry{refwidth}{% + Breite der Geschäftszeile + (\autoref{sec:scrlttr2-experts.refLine}, + \DescPageRef{scrlttr2-experts.plength.refwidth})% + }% + \pentry{sigbeforevskip}{% + vertikaler Abstand zwischen Gruß und Signatur + (\autoref{sec:scrlttr2-experts.closing}, + \DescPageRef{scrlttr2-experts.plength.sigbeforevskip})% + }% + \pentry{sigindent}{% + Einzug der Signatur gegenüber dem Textkörper + (\autoref{sec:scrlttr2-experts.closing}, + \DescPageRef{scrlttr2-experts.plength.sigindent})% + }% + \pentry{specialmailindent}{% + linker Einzug der Versandart innerhalb des Anschriftfeldes + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.specialmailindent})% + }% + \pentry{specialmailrightindent}{% + rechter Einzug der Versandart innerhalb des Anschriftfeldes + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.specialmailrightindent})% + }% + \pentry{subjectaftervskip}{% + vertikaler Abstand nach dem Betreff + (\autoref{sec:scrlttr2-experts.subject}, + \DescPageRef{scrlttr2-experts.plength.subjectaftervskip})% + }% + \pentry{subjectbeforevskip}{% + zusätzlicher vertikaler Abstand vor dem Betreff + (\autoref{sec:scrlttr2-experts.subject}, + \DescPageRef{scrlttr2-experts.plength.subjectbeforevskip})% + }% + \pentry{subjectvpos}{% + Abstand des Betreffs von der oberen Kante des Papiers, wobei ein Wert von + 0 stattdessen den Betreff gemäß Option \DescRef{scrlttr2.option.subject} setzt + (\autoref{sec:scrlttr2-experts.subject}, + \DescPageRef{scrlttr2-experts.plength.subjectaftervskip})% + }% + \pentry{tfoldmarklength}{% + Länge der oberen horizontalen Faltmarke + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.tfoldmarklength})% + }% + \pentry{tfoldmarkvpos}{% + Abstand der oberen horizontalen Faltmarke von der oberen Kante des Papiers + (\autoref{sec:scrlttr2-experts.foldmarks}, + \DescPageRef{scrlttr2-experts.plength.tfoldmarkvpos})% + }% + \pentry{toaddrheight}{% + Höhe des Anschriftfeldes + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.toaddrheight})% + }% + \pentry{toaddrhpos}{% + Abstand des Anschriftfeldes von der linken Papierkante, falls der Wert + positiv ist, oder negativer Abstand des Anschriftfeldes von der rechten + Papierkante, falls der Wert negativ ist + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.toaddrhpos})% + }% + \pentry{toaddrindent}{% + linker und rechter Einzug der Anschrift innerhalb des Anschrift\-feldes + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.toaddrindent})% + }% + \iffree{}{\enlargethispage*{\baselineskip}}% Umbruchoptimierung!!! + \pentry{toaddrvpos}{% + Abstand des Anschriftfeldes von der oberen Kante des Papiers + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.toaddrvpos})% + }% + \pentry{toaddrwidth}{% + Breite des Anschriftfeldes + (\autoref{sec:scrlttr2-experts.addressee}, + \DescPageRef{scrlttr2-experts.plength.toaddrwidth})% + }% +\end{desclist} + +\begin{figure} + \centering + \includegraphics{plenDIN} + \caption{Schematische Darstellung der wichtigsten Pseudolängen für den + Briefbogen} + \label{fig:scrlttr2-experts.pseudoLengths} +\end{figure} + +\begin{Declaration} + \Macro{newplength}\Parameter{Name} +\end{Declaration} +Mit\ChangedAt{v3.26}{\Class{scrlttr2}\and \Package{scrletter}} Hilfe dieser +Anweisung wird eine neue Pseudolänge definiert. Die neue Pseudolänge ist dann +über ihren \PName{Namen} eindeutig identifiziert. Jeder Name kann also nur +einmal vergeben werden. +% +\iffalse % Umbruchoptimierungstext +Es wird sichergestellt, dass jeder \PName{Name} nur +einmal vergeben wird.% +\else +\iffalse +Wird versucht, eine bereits vorhandene Pseudolänge erneut +zu definieren, so wird dies mit einer Fehlermeldung quittiert.% +\fi +% +\fi + +\BeginIndex{Cmd}{@newplength}% +Da der Anwender selbst normalerweise keine eigenen Pseudolängen definieren +muss, handelte es sich bei diesem Befehl bis \KOMAScript~3.25 um keine +Benutzeranweisung. Stattdessen existierte bis dahin nur \Macro{@newplength} +mit derselben Funktionalität. Für Paketautoren existieren diese Anweisungen +noch immer.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setplength}% + \OParameter{Faktor}\Parameter{Pseudolänge}\Parameter{Wert} + \Macro{addtoplength}% + \OParameter{Faktor}\Parameter{Pseudolänge}\Parameter{Wert} +\end{Declaration} +Mit\ChangedAt{v3.26}{\Class{scrlttr2}\and \Package{scrletter}} Hilfe von +\Macro{setplength} kann einer \PName{Pseudolänge} das Vielfache eines +\PName{Wertes} zugewiesen werden. Der \PName{Faktor} wird dabei als optionales +Argument übergeben (siehe auch \DescRef{scrlttr2.cmd.setlengthtoplength}, +\autoref{sec:scrlttr2.pseudoLength}, +\DescPageRef{scrlttr2.cmd.setlengthtoplength}). + +Mit \Macro{addtoplength} kann man zu einer \PName{Pseudolänge} das Vielfache +eines \PName{Wertes} addieren. Auch dabei wird der \PName{Faktor} als +optionales Argument übergeben. + +Um einer \PName{Pseudolänge} das Vielfache einer anderen Pseudolänge +zuzuweisen oder zu ihr zu addieren, verwendet man innerhalb von +\PName{Wert} die Anweisung \Macro{useplength} (siehe +\autoref{sec:scrlttr2.pseudoLength}, +\DescPageRef{scrlttr2.cmd.useplength}). Um von einer \PName{Pseudolänge} +den Wert einer anderen \PName{Pseudolänge} zu subtrahieren, verwendet man +gleichzeitig als \PName{Faktor} ein Minuszeichen oder \PValue{-1} oder einen +anderen negativen Faktor. + +\BeginIndex{Cmd}{@setplength}% +\BeginIndex{Cmd}{@addtoplength}% +Da der Anwender selbst normalerweise keine Pseudolängen ändern muss, handelte +es sich bis \KOMAScript~3.25 bei diesen Befehlen um keine +Benutzeranweisungen. Stattdessen existierten bis dahin nur +\Macro{@setplength} und \Macro{@addtoplength} mit derselben +Funktionalität. Für Paketautoren existieren diese Anweisungen noch immer.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setplengthtowidth} + \OParameter{Faktor}\Parameter{Pseudolänge}\Parameter{Inhalt} + \Macro{setplengthtoheight} + \OParameter{Faktor}\Parameter{Pseudolänge}\Parameter{Inhalt} + \Macro{setplengthtodepth} + \OParameter{Faktor}\Parameter{Pseudolänge}\Parameter{Inhalt} + \Macro{setplengthtototalheight} + \OParameter{Faktor}\Parameter{Pseudolänge}\Parameter{Inhalt} +\end{Declaration} +Die\ChangedAt{v3.26}{\Class{scrlttr2}\and \Package{scrletter}} ersten drei +Anweisungen entsprechen im Wesentlichen \Macro{settowidth}, +\Macro{settoheight} und \Macro{settodepth} aus dem \LaTeX-Kern, setzen aber +keine Länge, sondern eine \PName{Pseudolänge}. Entsprechend +\DescRef{\LabelBase.cmd.setplength} sind sie ebenfalls um einen optionalen +\PName{Faktor} erweitert. Sie setzen also eine \PName{Pseudolänge} auf die +Breite, Höhe oder Tiefe von \PName{Inhalt} multipliziert mit dem optional +angegebenen \PName{Faktor}. Die zusätzliche Anweisung +\Macro{setplengthtototalheight} setzt die \PName{Pseudolänge} auf die Summe +der Höhe und Tiefe von \PName{Inhalt} multipliziert mit dem optionalen +\PName{Faktor}.% +\EndIndexGroup + + +\subsection{Faltmarken} +\seclabel{foldmarks} +\BeginIndexGroup +\BeginIndex{}{Faltmarke}% + +Falt- oder Falzmarken sind kleine horizontale Striche am linken und kleine +vertikale Striche am oberen Rand. \KOMAScript{} unterstützt für den Briefbogen +derzeit drei konfigurierbare horizontale und eine konfigurierbare vertikale +Faltmarke. Dazu wird noch eine horizontale Loch- oder Seitenmittenmarke +unterstützt, die nicht in der Vertikalen verschoben werden kann. + + +\begin{Declaration} + \PLength{tfoldmarkvpos} + \PLength{mfoldmarkvpos} + \PLength{bfoldmarkvpos} +\end{Declaration} +\KOMAScript{} kennt für Briefe \Class{scrlttr2} insgesamt drei in der vertikalen +Platzierung konfigurierbare Faltmarken. Die Position der oberen Faltmarke vom +oberen Papierrand wird von der Pseudolänge \PLength{tfoldmarkvpos} +bestimmt. Für die Position der mittleren Faltmarke ist Pseudolänge +\PLength{mfoldmarkvpos}\ChangedAt{v2.97e}{\Class{scrlttr2}}, für die unteren +Faltmarke \PLength{bfoldmarkvpos} zuständig. Mit der +Locher-\Index{Lochermarke} oder Seitenmittenmarke kommt noch eine weitere +horizontale Marke dazu. Diese wird jedoch immer in der vertikalen Seitenmitte +platziert. +\iftrue% Umbruchkorrekturtext! +Da ihre vertikale Position also nicht konfigurierbar ist, existiert +auch keine Pseudolänge dafür. +\fi + +Die\important{Achtung!} obere und untere Faltmarke dienen nicht der exakten +Drittelung des Papiers beim Falten. Stattdessen soll das Papier mit ihrer +Hilfe so geknickt werden können, dass das Feld für die Anschrift in einem +Fensterbriefumschlag zu sehen ist. Die Einstellungen sind daher in den +vordefinierten \File{lco}-Dateien\textnote{\File{lco}-Datei}% +\Index{lco-Datei=\File{lco}-Datei} unterschiedlich gewählt. Eine +Besonderheit\textnote{Achtung!} stellt \Option{DINmtext} dar. Hier wird +zwingend von einem Briefumschlag im Format C6/5 (auch »C6 lang« genannt) +ausgegangen. Briefe, die mit dieser Option erstellt wurden, sind normalerweise +weder für Umschläge im Format C5 noch für Umschläge im Format C4 geeignet. + +Die mittlere Faltmarke wird für abendländische Briefe normalerweise nicht +benötigt. Beispielsweise in Japan gibt es jedoch so unterschiedliche +Briefumschläge, dass eine weitere Faltmarke benötigt wurde (siehe die +japanischen \File{lco}-Dateien). An dieser Stelle sei darauf hingewiesen, dass +die Bezeichnungen »obere«, »mittlere« und »untere« Faltmarke lediglich eine +Sprachkonvention darstellen. Tatsächlich ist nicht festgelegt, dass +\PLength{tfoldmarkvpos} kleiner als \PLength{mfoldmarkvpos} und dieses kleiner +als \PLength{bfoldmarkvpos} sein muss. Ist\textnote{Achtung!} eine der +Pseudolängen hingegen Null, so wird die entsprechende Faltmarke auch dann +nicht gesetzt, wenn sie per Option \DescRef{scrlttr2.option.foldmarks}% +\IndexOption{foldmarks~=\PName{Einstellung}}% +\important{\DescRef{scrlttr2.option.foldmarks}} (siehe +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.foldmarks}) +explizit aktiviert wurde.% +% +\EndIndexGroup + + +\begin{Declaration} + \PLength{tfoldmarklength} + \PLength{mfoldmarklength} + \PLength{bfoldmarklength} + \PLength{pfoldmarklength} +\end{Declaration} +Diese\ChangedAt{v2.97e}{\Class{scrlttr2}} vier Pseudolängen bestimmen die +Länge der vier horizontalen Marken. Dabei gilt eine +Besonderheit. Ist\textnote{Achtung!} die Länge nämlich mit Null angegeben, so +werden bei den Pseudolängen \PLength{tfoldmarklength}, +\PLength{mfoldmarklength} und \PLength{bfoldmarklength} für die drei in der +vertikalen Position konfigurierbaren Faltmarken stattdessen 2\Unit{mm} als +Länge verwendet. Die Länge der Lochermarke, \PLength{pfoldmarklength}, wird +hingegen auf 4\Unit{mm} gesetzt.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{foldmarkhpos} +\end{Declaration} +Diese Pseudolänge gibt den Abstand aller horizontalen Faltmarken vom linken +Papier\-rand an. Normalerweise sind das 3{,}5\Unit{mm}. Sie\textnote{Tipp!} +können den Wert aber auch in Ihrer eigenen \File{lco}-Datei ändern, falls Sie +einen Drucker verwenden, der einen breiteren unbedruckbaren linken Rand +hat. Ob die Faltmarken überhaupt gesetzt werden, hängt außerdem von der Option +\DescRef{scrlttr2.option.foldmarks}\important{\DescRef{scrlttr2.option.foldmarks}}% +\IndexOption{foldmarks~=\PName{Einstellung}} ab (siehe +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.foldmarks}).% +% +\EndIndexGroup + + +\begin{Declaration} + \PLength{lfoldmarkhpos} +\end{Declaration} +Neben\ChangedAt{v2.97e}{\Class{scrlttr2}} den horizontalen Faltmarken gibt es +auch noch eine vertikale Faltmarke. Deren Abstand von der linken Papierkante +wird über die Pseudolänge \PLength{lfoldmarkhpos} bestimmt. Diese Faltmarke +wird beispielsweise bei Briefen für einige japanische Chou- oder You-Umschläge +benötigt, wenn man diese für A4-Papier verwenden will. Auch für Umschläge im +C6-Format kann sie nützlich sein.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{lfoldmarklength} +\end{Declaration} +Die Pseudolänge \PLength{lfoldmarklength} bestimmt +die\ChangedAt{v2.97e}{\Class{scrlttr2}} Länge der vertikalen +Faltmarke. Auch\textnote{Achtung!} hier gibt es die Besonderheit, dass bei +einer angegebenen Länge von Null stattdessen 4\Unit{mm} verwendet werden.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{foldmarkvpos} +\end{Declaration} +Die\ChangedAt{v2.97e}{\Class{scrlttr2}} Pseudolänge gibt den Abstand +\iffree{aller}{der} vertikalen Faltmarke\iffree{n}{} vom oberen Papier\-rand +an. Normalerweise sind das 3{,}5\Unit{mm}. Sie\textnote{Tipp!} können den +Wert aber auch in Ihrer eigenen \File{lco}-Datei ändern, falls Sie einen +Drucker verwenden, der einen breiteren unbedruckbaren oberen Rand hat. Ob die +Faltmarke\iffree{n}{} überhaupt gesetzt \iffree{werden}{wird}, hängt außerdem +von der Option \DescRef{scrlttr2.option.foldmarks}% +\important{\DescRef{scrlttr2.option.foldmarks}}% +\IndexOption{foldmarks~=\PName{Einstellung}} ab (siehe +\autoref{sec:scrlttr2.firstpage}, +\DescPageRef{scrlttr2.option.foldmarks}).\iffree{ Derzeit gibt es nur eine + einzige vertikale Faltmarke, die als linke vertikale Faltmarke bezeichnet + wird.}{}% +\EndIndexGroup + + +\begin{Declaration} + \PLength{foldmarkthickness} +\end{Declaration} +Diese\ChangedAt{v2.97c}{\Class{scrlttr2}} Pseudolänge gibt die Dicke aller +Faltmarken an. Voreingestellt sind 0,2\Unit{pt}, also eine sehr dünne +Haarlinie. Insbesondere\textnote{Tipp!}, wenn die Farbe der Faltmarken +geändert wird, kann dies zu wenig sein!% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Briefkopf} +\seclabel{firstHead} +\BeginIndexGroup +\BeginIndex{}{Briefkopf}% + +Unter dem Briefkopf verstehen wir alle Angaben, die den Absender betreffen und +die über der Anschrift stehen. Normalerweise würde man erwarten, dass diese +über den Seitenstil gesetzt werden. Bei der alten Briefklasse \Class{scrlettr} +war dies auch so. Bei\textnote{Achtung!} \Class{scrlttr2} und +\Package{scrletter} wird der Briefkopf jedoch unabhängig vom Seitenstil von +der Anweisung \DescRef{scrlttr2.cmd.opening}\IndexCmd{opening} ausgegeben. +% Fuellmaterial +\iftrue% +Dabei wird der Briefkopf absolut positioniert, ist also vom Satzspiegel +unabhängig. Die erste Seite eines Briefes, also die Seite mit dem Briefkopf, +wird tatsächlich mit dem Seitenstil +\DescRef{scrlttr2.pagestyle.empty}\IndexPagestyle{empty} gesetzt.% +\fi +% Ende des Fuellmaterials + + +\begin{Declaration} + \PLength{firstheadvpos} +\end{Declaration} +Die Pseudolänge \PLength{firstheadvpos} gibt den Abstand des Briefkopfes von +der oberen Papierkante an. Der Wert wird in den vordefinierten +\File{lco}-Dateien\textnote{\File{lco}-Datei}\Index{lco-Datei=\File{lco}-Datei} +unterschiedlich gesetzt. Ein typischer Wert ist 8\Unit{mm}.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{firstheadhpos} +\end{Declaration} +Die Pseudolänge \PLength{firstheadhpos}\ChangedAt{v3.05}{\Class{scrlttr2}} +gibt bei einem positiven Wert den Abstand des Briefkopfes von der linken +Papierkante an. Ist\textnote{Achtung!} der Wert sogar größer oder gleich der +Breite des Papiers, +\Length{paperwidth}\important{\Length{paperwidth}}\IndexLength{paperwidth}, so +wird der Briefkopf horizontal zentriert auf dem Briefbogen platziert. Ein +negativer Wert gibt den Abstand des Briefkopfes von der rechten Papierkante +an. Ist der Wert jedoch kleiner oder gleich der negativen Breite des Papiers, +so wird der Briefkopf bündig zum linken Rand des Satzspiegels platziert. + +Voreingestellt\textnote{Achtung!} ist typischerweise ein Wert von +\Length{maxdimen}\IndexLength{maxdimen}, also der größtmögliche Wert für eine +Länge. Die Folge ist eine horizontale Zentrierung.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{firstheadwidth} +\end{Declaration} +Die Pseudolänge \PLength{firstheadwidth} gibt die Breite des Briefkopfes +an. Der Wert wird in den vordefinierten +\File{lco}-Dateien\textnote{\File{lco}-Datei}\Index{lco-Datei=\File{lco}-Datei} +unterschiedlich gesetzt. Während er normalerweise von der Papierbreite und dem +horizontalen Abstand der Empfängeradresse vom linken Papierrand abhängt, +entspricht er bei \Option{KOMAold} der Breite des Satzspiegels und ist bei +\Option{NF} fest auf 170\Unit{mm} eingestellt.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{fromrulethickness} + \PLength{fromrulewidth} +\end{Declaration} +Wie bereits bei Option +\DescRef{scrlttr2.option.fromrule}\IndexOption{fromrule} in +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.fromrule} +erwähnt wurde, kann in den vordefinierten Briefköpfen eine Linie im oder unter +dem Absender gesetzt werden. Hat\textnote{Achtung!} die Pseudolänge +\PLength{fromrulewidth} die Länge 0, so wird dabei die Länge dieser Linie +automatisch bestimmt. Dies ist die Voreinstellung bei den vordefinierten +\File{lco}-Dateien. % +\iffalse % Umbruchkorrekturtext +Der Wert kann mit \DescRef{\LabelBase.cmd.setplength} (siehe +\DescPageRef{scrlttr2-experts.cmd.setplength}) in eigenen \File{lco}-Dateien +aber auch abweichend gesetzt werden. % +\fi% +Die voreingestellte Dicke\ChangedAt{v2.97c}{\Class{scrlttr2}}, +\PLength{fromrulethickness}, der Linie beträgt 0,4\Unit{pt}.% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Anschrift} +\seclabel{addressee}% +\BeginIndexGroup +\BeginIndex{}{Anschrift}% + +% Verschiedene Umbruchvarianten +Unter der Anschrift versteht man normalerweise nur den Namen und die Adresse +des Empfängers. % +\iffalse% +Als \iffree{erste }{}Erweiterung zur Anschrift kann die +Versandart betrachtet werden, die etwa bei \iffree{Einschreiben oder +}{}Infobriefen zur Anwendung kommt. Bei Fensterbriefumschlägen wird auch die +sogenannte Rücksendeadresse \iffree{zur Anschrift}{dazu} gezählt, da sie im +Anschriftfenster zu sehen \iffree{sein wird}{ist}. Die Anschrift folgt +unmittelbar auf den Briefkopf.% +\else% +Aber auch die Versandart, beispielsweise bei Infobriefen, oder die +Rücksendeadresse werden als Teil des Anschriftfeldes gesetzt.% +\fi + + +\begin{Declaration} + \PLength{toaddrvpos} + \PLength{toaddrhpos} +\end{Declaration} +Diese Pseudolängen geben den Abstand des Anschriftfensters eines +Fensterbriefumschlags vom oberen und vom linken Rand des Papiers an. Sie +werden in den vordefinierten +\File{lco}-Dateien\textnote{\File{lco}-Datei}\Index{lco-Datei=\File{lco}-Datei} +unterschiedlich eingestellt. Für \PLength{toaddrhpos} gilt außerdem eine +Besonderheit. Ist\textnote{Achtung!} der Wert \iffree{}{wie bei \Option{SN} + oder \Option{NF} }negativ, so ist sein Betrag der Abstand des +Anschriftfeldes vom rechten Rand des Papiers. % +\iffree{% + Sie\textnote{Beispiele!} finden dies beispielsweise bei \Option{SN} oder + \Option{NF}. Am kleinsten ist der Wert \PLength{toaddrvpos} bei + \Option{DINmtext}. Hier kann es schnell passieren, dass der Briefkopf in das + Anschriftfenster ragt.% +}{% + Große Briefköpfe\textnote{Achtung!} können bei kleinem \PLength{toaddrvpos}, + beispielsweise bei \Option{DINmtext}, bis in das Anschriftfeld ragen.% +} Ob das Anschriftfenster überhaupt gesetzt wird, hängt von der Option +\Option{addrfield} ab (siehe \autoref{sec:scrlttr2.firstpage}, +\DescPageRef{scrlttr2.option.addrfield}).% +\EndIndexGroup + + +\begin{Declaration} + \PLength{toaddrheight} +\end{Declaration} +Diese Pseudolänge gibt die Höhe des Anschriftfeldes einschließlich der +Versandart an. Ob Name und Adresse des Empfängers unter Berücksichtigung der +Versandart im Anschriftfeld vertikal zentriert werden hängt von Option +\DescRef{scrlttr2.option.addrfield} ab.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{toaddrwidth} +\end{Declaration} +Diese Pseudolänge gibt die Breite des Anschriftfensters an. Diese wird in den +vordefinierten +\File{lco}-Dateien\textnote{\File{lco}-Datei}\Index{lco-Datei=\File{lco}-Datei} +entsprechend der unterschiedlichen Normen unterschiedlich +eingestellt. Typische Werte liegen zwischen 70\Unit{mm} und 100\Unit{mm}. + +\begin{Example} + Angenommen, Sie haben das Problem, dass Ihr Drucker einen \iffree{sehr + breiten }{}unbedruckbaren rechten \iffree{oder linken }{}Rand von + 15\Unit{mm} besitzt. Dadurch kann bei Option \Option{SN} der Briefkopf, die + Absenderergänzung und die Anschrift nicht komplett gedruckt werden. Sie + erstellen daher eine neue \iffree{\File{lco}-Datei mit folgendem Inhalt}{Datei + \File{SNmmarg.lco}, die Sie anstelle von \Option{SN} verwenden}: +\begin{lstcode} + \ProvidesFile{SNmmarg.lco} + [2002/06/04 v0.1 my own lco] + \LoadLetterOption{SN} + \addtoplength{toaddrwidth}{% + -\useplength{toaddrhpos}} + \setplength{toaddrhpos}{-15mm} + \addtoplength{toaddrwidth}{% + \useplength{toaddrhpos}} + \endinput +\end{lstcode}% + \iffree{ Bis Sie sich einen Drucker mit kleineren Rändern zugelegt haben, + verwenden Sie \Option{SNmmarg} anstelle von + \Option{SN}.}{}% Umbruchoptimierung +\end{Example}\vskip-\ht\strutbox% Wegen Beispiel am Ende der Erklärung +% +\EndIndexGroup + + +\begin{Declaration} + \PLength{toaddrindent} +\end{Declaration} +Manchmal will man, dass die Anschrift nicht am linken Rand des +Anschriftfensters beginnt und bis zum rechten Rand des Fensters reicht, +sondern ein wenig eingezogen wird. Der Wert dieses Einzugs kann über die +Pseudolänge \PLength{toaddrindent} festgelegt werden. Typischerweise ist +dieser Wert jedoch 0\Unit{pt}. + +Bei\textnote{Achtung!} jeder der +Einstellungen\ChangedAt{v3.03}{\Class{scrlttr2}} +\OptionValueRef{scrlttr2}{addrfield}{PP}\important{% + \OptionValueRef{scrlttr2}{addrfield}{PP}\\ + \OptionValueRef{scrlttr2}{addrfield}{image}\\ + \OptionValueRef{scrlttr2}{addrfield}{backgroundimage} +}\IndexOption{addrfield~=\textKValue{PP}}, +\OptionValueRef{scrlttr2}{addrfield}{image}% +\IndexOption{addrfield~=\textKValue{image}} und +\OptionValueRef{scrlttr2}{addrfield}{backgroundimage}% +\IndexOption{addrfield~=\textKValue{backgroundimage}} (siehe +\autoref{sec:scrlttr2.firstpage}, +\DescPageRef{scrlttr2.option.addrfield}) wird beim Wert 0\Unit{pt} +stattdessen ein Einzug von 8\Unit{mm} verwendet. Soll hier tatsächlich kein +Einzug verwendet werden, so kann mit 1\Unit{sp} ein vernachlässigbar kleiner +Einzug gesetzt werden. Des Weiteren wird \PLength{toaddrindent} bei den +genannten Einstellungen für \Option{addrfield} auch für den Abstand zum +rechten Rand des Anschriftfensters verwendet.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{backaddrheight} +\end{Declaration} +Bei Fensterbriefumschlägen wird der Absender häufig in einer kleinen Schrift +einzeilig über der Empfängeradresse ausgegeben. Diese Absenderangabe nennt man +Rücksendeadresse\textnote{Rücksendeadresse}% +\Index{Ruecksendeadresse=Rücksendeadresse}, da sie \iffree{im Anschriftfenster + sichtbar ist und }{}der Post bei unzustellbaren Briefen für die Rücksendung +an den Absender dient. In dieser Adresse muss daher auch nur die Information +enthalten sein, die zur Rücksendung notwendig ist. + +Die Höhe, die innerhalb des Anschriftfensters für die Rücksendeadresse zur +Verfügung steht, ist in der Pseudolänge \PLength{backaddrheight} abgelegt. Der +Wert wird in den vordefinierten \File{lco}-Dateien typischerweise auf +5\Unit{mm} eingestellt. Ob die Rücksendeadresse überhaupt gesetzt wird, +bestimmt der Anwender mit den Optionen \Option{addrfield} (siehe +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.addrfield}) und +\DescRef{scrlttr2.option.backaddress} (siehe \autoref{sec:scrlttr2.firstpage}, +\DescPageRef{scrlttr2.option.backaddress}).% +\EndIndexGroup + + +\begin{Declaration} + \PLength{specialmailindent} + \PLength{specialmailrightindent} +\end{Declaration} +Zwischen Rücksendeadresse und Empfängeradresse kann noch eine optionale +Versandart\Index{Versandart} gesetzt werden\iffree{. Diese wird genau dann + gesetzt}{}, wenn die Variable \DescRef{scrlttr2.variable.specialmail} einen +Inhalt hat. Die Ausrichtung wird mit Hilfe der Pseudolängen +\PLength{specialmailindent} und \PLength{specialmailrightindent} +festgelegt. Diese geben den linken und rechten Einzug der Zeile an. In den +vordefinierten \File{lco}-Dateien ist \PLength{specialmailindent} auf den +dehnbaren Wert \Macro{fill} gesetzt, während \PLength{specialmailrightindent} +auf 1\Unit{em} eingestellt ist. Damit wird die Versandart 1\Unit{em} vom +rechten Rand des Anschriftfensters gesetzt.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{PPheadheight} + \PLength{PPheadwidth} +\end{Declaration} +Die Pseudolänge \PLength{PPheadheight} gibt bei den beiden +Einstellungen\ChangedAt{v3.03}{\Class{scrlttr2}} +\OptionValueRef{scrlttr2}{addrfield}{PP}\important{% + \OptionValueRef{scrlttr2}{addrfield}{PP}\\ + \OptionValueRef{scrlttr2}{addrfield}{backgroundimage}}% +\IndexOption{addrfield~=\textKValue{PP}} und +\OptionValueRef{scrlttr2}{addrfield}{backgroundimage}% +\IndexOption{addrfield~=\textKValue{backgroundimage}} die Höhe an, die am Anfang +des Adressfeldes für den Port-Payé-Kopf reserviert wird. Die Pseudolänge +\PLength{PPheadwidth} wird nur bei \OptionValueRef{scrlttr2}{addrfield}{PP} +(siehe \autoref{sec:scrlttr2.firstpage}, +\DescPageRef{scrlttr2.option.addrfield}) verwendet und gibt die Breite des +linken Feldes des Port-Payé-Kopf mit dem P.\,P.-Logo, der Postleitzahl und dem +Ort an. Die Breite des rechten Feldes mit dem Code für den Absender und der +Priorität ist durch die Restbreite bestimmt. + +Den\textnote{Achtung!} normalerweise voreingestellten Wert von 0\Unit{mm} für +Pseudolänge \PLength{PPheadheight} ändert \KOMAScript{} selbstständig in +20,74\Unit{pt}. Den normalerweise voreingestellten Wert von 0\Unit{mm} für +\PLength{PPheadwidth} ändert \KOMAScript{} selbstständig in 42\Unit{mm}.% +% +\EndIndexGroup + + +\begin{Declaration} + \PLength{PPdatamatrixvskip} +\end{Declaration} +Durch\ChangedAt{v3.03}{\Class{scrlttr2}} diese Pseudolänge wird der vertikale +Abstand zwischen dem Port-Payé-Kopf und der Data-Matrix bei +\OptionValueRef{scrlttr2}{addrfield}{PP}% +\important{\OptionValueRef{scrlttr2}{addrfield}{PP}}% +\IndexOption{addrfield~=\textKValue{PP}} (siehe +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.addrfield}) +festgelegt. Den\textnote{Achtung!} normalerweise voreingestellten Wert von +0\Unit{mm} ändert \KOMAScript{} selbstständig in 9\Unit{mm}. Die Data-Matrix +wird rechtsbündig zum Port-Payé-Kopf gesetzt.% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Absenderergänzungen} +\seclabel{locationField} +\BeginIndexGroup +\BeginIndex{}{Absenderergaenzung=Absenderergänzung}% + +\iffalse% Umbruchvarianten +Insbesondere bei Geschäftsbriefen reicht der Platz im Briefkopf und im +Seitenfuß oftmals nicht aus, um alle Angaben des Absenders unterzubringen. Für +die zusätzlichen Informationen kann der Platz neben der Anschrift +genutzt werden. In dieser Anleitung wird dieses Feld \emph{Absenderergänzung} +genannt.% +\else% +Reicht der Raum in Briefkopf und Seitenfuß nicht aus, um alle Angaben zum +Absender unterzubringen, kann der Platz neben der Anschrift als +\emph{Absenderergänzung} genutzt werden.% +\fi + + +\begin{Declaration} + \PLength{locheight} + \PLength{lochpos} + \PLength{locvpos} + \PLength{locwidth} +\end{Declaration} +Die Pseudolängen \PLength{locwidth} und +\PLength{locheight}\ChangedAt{v2.97d}{\Class{scrlttr2}} geben die Breite und +Höhe der Absenderergänzung an. Die Pseudolängen \PLength{lochpos} und +\PLength{locvpos} geben die Abstände von der rechten, oberen +Papierkante an. Die Werte werden in den vordefinierten \File{lco}-Dateien +typischerweise auf 0\Unit{pt} gesetzt. Dieser\textnote{Achtung!} Wert nimmt +eine Sonderstellung ein. Er bedeutet, dass die Werte erst bei +\DescRef{scrlttr2.cmd.opening}\IndexCmd{opening} anhand der Breite des +Papiers, der Breite des Anschriftfensters, des Abstandes des +Anschriftfensters von der linken, oberen Papierkante und +Option \DescRef{scrlttr2.option.locfield} (siehe +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.locfield}) +gesetzt werden. Wie\textnote{Achtung!} bei \PLength{toaddrhpos} nehmen +negative Werte für \PLength{lochpos} eine Sonderstellung ein. Es wird dann +statt des Abstandes vom rechten Papierrand der Betrag von \PLength{lochpos} +als Abstand vom linken Papierrand verwendet. Die Bedeutung ist also genau +umgekehrt zu der bei \PLength{toaddrhpos} (siehe +\autoref{sec:scrlttr2-experts.addressee}, +\DescPageRef{scrlttr2-experts.plength.toaddrhpos}).% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Geschäftszeile} +\seclabel{refLine}% +\BeginIndexGroup +\BeginIndex{}{Geschaeftszeile=Geschäftszeile}% + +Die Geschäftszeile kann auch länger als eine Zeile sein. Sie wird nur gesetzt, +wenn mindestens eine der Variablen für die Geschäftszeile nicht leer ist. Es +werden nur nicht leere Felder gesetzt. Um\textnote{Tipp!} ein scheinbar leeres +Feld zu setzen, kann man einen scheinbar leeren Variableninhalt wie +\Macro{mbox}\Parameter{} verwenden. Wird auf die Geschäftszeile verzichtet, so +werden an ihrer Stelle Bezeichnung und Inhalt der Variablen +\DescRef{scrlttr2.variable.date} ausgegeben. % +\iffalse% Umbruchoptimierung +Informationen, wie Variablen zur Geschäftszeile hinzugefügt oder entfernt +werden, sind in \autoref{sec:scrlttr2-experts.variables}, +\DescPageRef{scrlttr2-experts.cmd.removereffields} zu finden.% +\fi + + +\begin{Declaration} + \PLength{refvpos} +\end{Declaration} +Diese Pseudolänge gibt den Abstand der Geschäftszeile von der Oberkante des +Papiers an. Ihr Wert wird in den vordefinierten \File{lco}-Dateien\textnote{\File{lco}-Datei}\Index{lco-Datei=\File{lco}-Datei} +unterschiedlich eingestellt. % +\iffalse% +Typische Werte liegen zwischen 80{,}5\Unit{mm} und 98{,}5\Unit{mm}.% +\fi% +\EndIndexGroup + + +\begin{Declaration} + \PLength{refwidth} + \PLength{refhpos} +\end{Declaration} +Die Pseudolänge \PLength{refwidth} gibt die Breite an, die für die +Geschäftszeile zur Verfügung steht. Ihr Wert wird in den vordefinierten +\File{lco}-Dateien typischerweise auf 0\Unit{pt} +gesetzt. Dieser\textnote{Achtung!} Wert hat eine besondere Bedeutung. % +\iffalse% Umbruchoptimierung +Es wird damit keineswegs festgelegt, dass für die Geschäftszeile keine Breite +zur Verfügung steht. Vielmehr bedeutet der Wert% +\else% +Damit wird festgelegt% +\fi% +, dass die verfügbare Breite erst innerhalb von +\DescRef{scrlttr2.cmd.opening}\IndexCmd{opening} ermittelt wird. Die% +\iffalse% Umbruchoptimierung +\ dort ermittelte % +\else% +se % +\fi% +Breite richtet sich \iffree{dann }{}nach der Einstellung der Option +\DescRef{scrlttr2.option.refline}\important{\DescRef{scrlttr2.option.refline}}% +\IndexOption{refline~=\PName{Einstellung}} (siehe +\autoref{sec:scrlttr2.firstpage}, +\DescPageRef{scrlttr2.option.refline}). Gleichzeitig wird dann auch +\PLength{refhpos} entsprechend der Option gesetzt. Bei +\OptionValueRef{scrlttr2}{refline}{wide}% +\IndexOption{refline~=\textKValue{wide}} wird die Geschäftszeile zentriert, +wohingegen sie bei \OptionValueRef{scrlttr2}{refline}{narrow}% +\IndexOption{refline~=\textKValue{narrow}} am Satzspiegel links ausgerichtet +wird. + +Ist \PLength{refwidth} von Null verschieden, wird die Breite der +Geschäftszeile also nicht von der Option \DescRef{scrlttr2.option.refline} +bestimmt, so gibt \PLength{refhpos} den Abstand der Geschäftszeile von der +linken Papierkante an. Ist\textnote{Achtung!} dieser Abstand Null, so wird die +Geschäftszeile so ausgerichtet, dass das Verhältnis zwischen ihrem Abstand von +der linken Papierkante zu ihrem Abstand von der rechten Papierkante dem +Verhältnis zwischen dem Abstand des Satzspiegels von der linken Papierkante zu +seinem Abstand von der rechten Papierkante entspricht. Bei auf dem Papier +horizontal zentriertem Satzspiegel wird also auch die Geschäftszeile +zentriert. + +In der Regel werden diese Sonderfälle für die häufigsten Anwendungen von +geringem Interesse sein. Die\textnote{Tipp!} einfachste Regel lautet hier: +Entweder wird \PLength{refwidth} auf Null belassen und die Breite und +Ausrichtung der Geschäftszeile über die Option +\DescRef{scrlttr2.option.refline} bestimmt oder sowohl \PLength{refwidth} als +auch \PLength{refhpos} werden vom Anwender vorgegeben.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{refaftervskip} +\end{Declaration} +Diese Pseudolänge gibt den vertikalen Abstand an, der nach der Geschäftszeile +eingefügt werden soll. Der Wert wird in den vordefinierten +\File{lco}-Dateien\textnote{\File{lco}-Datei}\Index{lco-Datei=\File{lco}-Datei} +eingestellt. Er wirkt sich unmittelbar auf die Höhe des Textbereichs der +ersten Seite aus. Der typische Wert liegt zwischen einer und zwei Zeilen.% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Betreff} +\seclabel{subject}% +\BeginIndexGroup +\BeginIndex{}{Betreff} + +Der Betreff eine Briefes wird in unterschiedlichen Ländern unterschiedlich +gesetzt. Die einen haben ihn gerne vor der Anrede, die anderen setzen ihn +danach. Einige Berufsgruppen wollen ihn teilweise sogar vor der Geschäftszeile +haben. + +\begin{Declaration} + \PLength{subjectvpos} +\end{Declaration} +\ChangedAt{v3.01}{\Class{scrlttr2}}% +Ist\textnote{Achtung!} der Wert dieser Pseudolänge 0\Unit{pt}, so bestimmt die +Option +\DescRef{scrlttr2.option.subject}\important{\DescRef{scrlttr2.option.subject}}% +\IndexOption{subject~=\PName{Einstellung}} (siehe +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.subject}) die +Position des Betreffs. Dabei spielen dann auch die nachfolgend erklärten +Pseudolängen \PLength{subjectbeforevskip} und \PLength{subjectaftervskip} ihre +Rolle. Bei allen anderen Werten wird der Betreff mit dem entsprechenden +Abstand von der oberen Papierkante platziert. Es\textnote{Tipp!} wird +empfohlen in diesem Fall darauf zu achten, dass genügend Platz zur Verfügung +steht, damit Überschneidungen mit anderen Elementen unwahrscheinlich sind. +\begin{Example} + Einige wenige Berufsgruppen ziehen es vor, wenn der Betreff noch vor der + Geschäftszeile steht. Hierzu kann man die Position wie folgt wählen, wobei + auch die Position der Geschäftszeile angepasst wird: +\begin{lstcode} + \ProvidesFile{lawsubj.lco} + [2008/11/03 lawyers lco file] + \setplength{subjectvpos}{\useplength{refvpos}} + \addtoplength{refvpos}{3\baselineskip} + \endinput +\end{lstcode} + Will man, dass zwischen Betreff und Geschäftszeile noch mindestens eine + Zeile frei bleibt, hat man so Platz für maximal zwei Zeilen Betreff. +\end{Example} +\EndIndexGroup + + +\begin{Declaration} + \PLength{subjectbeforevskip} + \PLength{subjectaftervskip} +\end{Declaration} +\ChangedAt{v3.01}{\Class{scrlttr2}}% +Wird der Betreff nicht absolut platziert, sondern vor oder nach der Anrede, so +kann vor und nach dem Betreff ein zusätzlicher Abstand eingefügt werden. Der +Abstand vor dem Betreff trifft dabei gegebenenfalls mit anderen Abständen, +etwa dem automatischen Abstand von einer Zeile nach dem Titel, zusammen. In +der Voreinstellung wird daher in der Regel kein weiterer Abstand an dieser +Stelle eingefügt. Der Abstand nach dem Betreff beträgt in der Voreinstellung +von Klasse und Paket zwei Zeilen.% +\EndIndexGroup \EndIndexGroup + + +\subsection{Schlussgruß} +\seclabel{closing} +\BeginIndexGroup +\BeginIndex{}{Schlussgruss=Schlussgruß} + +Der Schlussgruß\Index{Gruss=Gruß} eines Briefes besteht aus mehreren Teilen. +Neben der Grußformel selbst gibt es noch die Unterschrift und die Signatur, +eine Art Erläuterung zur Unterschrift. + + +\begin{Declaration} + \PLength{sigindent} + \PLength{sigbeforevskip} +\end{Declaration} +Grußfloskel\Index{Gruss=Gruß}\Index{Signatur} und Erläuterung der +Unterschrift\Index{Unterschrift} werden innerhalb einer Box gesetzt. Die +Breite dieser Box wird durch die längste Zeile innerhalb von Grußfloskel und +Erläuterung bestimmt. + +Die Box wird mit dem durch die Pseudolänge \PLength{sigindent} bestimmten +Einzug gesetzt. In den vordefinierten \File{lco}-Dateien ist der Einzug auf +0\Unit{mm} gesetzt. + +Zwischen Grußfloskel und Erläuterung wird ein vertikaler Abstand eingefügt, +der mit der Pseudolänge \PLength{sigbeforevskip} festgelegt ist. In den +vordefinierten \File{lco}-Dateien ist der Wert auf zwei Zeilen eingestellt. In +diese Lücke setzen Sie dann Ihre Unterschrift.% +\iffalse% Umbruchkorrekturtext +\ Sollten\textnote{Tipp!} Sie sich dazu entschließen in die Variable +\DescRef{scrlttr2.variable.signature}\IndexVariable{signature}% +\important{\DescRef{scrlttr2.variable.signature}} mit Paket +\Package{graphicx}\IndexPackage{graphicx} ein Faksimile Ihrer Unterschrift +einzufügen, wäre es also sinnvoll den Wert von \PLength{sigbeforevskip} und +damit die Lücke zwischen Schlussgruß und Signatur zu verringern.% +\fi% +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Briefbogenfuß} +\seclabel{firstFoot}% +\BeginIndexGroup +\BeginIndex{}{Briefbogenfuss=Briefbogenfuß}% + +Die erste Seite eines Briefes, der Briefbogen, enthält nicht nur einen eigenen +Kopf, den Briefkopf. Diese Seite enthält auch einen eigenen +Fuß\Index{Fuss=Fuß}, den Briefbogenfuß. % +\iftrue% Umbruchvarianten +Auch dieser wird nicht über den Seitenstil% +\else% +Genau wie der Briefkopf wird der Briefbogenfuß nicht über den Seitenstil% +\fi% +, sondern unmittelbar von \DescRef{scrlttr2.cmd.opening}\IndexCmd{opening}% +\important{\DescRef{scrlttr2.cmd.opening}} ausgegeben. + + +\begin{Declaration} + \PLength{firstfootvpos} +\end{Declaration} +Diese Pseudolänge gibt den Abstand des Fußes der ersten Briefseite von der +Oberkante des Papiers an. Es wird außerdem dafür gesorgt, dass der Textbereich +nicht in den Fuß hineinragt. Hierzu wird auf der ersten Seite gegebenenfalls +die Höhe des Textbereichs mit Hilfe von +\Macro{enlargethispage}\IndexCmd{enlargethispage}% +\important{\Macro{enlargethispage}} verkleinert. Mit Hilfe der Option +\DescRef{scrlttr2.option.enlargefirstpage}% +\important{\DescRef{scrlttr2.option.enlargefirstpage}} (siehe +\autoref{sec:scrlttr2.firstpage}, +\DescPageRef{scrlttr2.option.enlargefirstpage}) kann dafür gesorgt werden, +dass die Höhe des Textbereichs umgekehrt gegebenenfalls auch vergrößert +wird. Damit kann dann der Abstand zwischen Textbereich und Fuß der ersten +Seite auf den Wert der Länge +\Length{footskip}\IndexLength{footskip}\important{\Length{footskip}} +verringert werden. + +Bei\textnote{Achtung!} +Kompatibilitätseinstellungen\ChangedAt{v2.9t}{\Class{scrlttr2}} bis +Version~2.9t (siehe \DescRef{scrlttr2.option.version} in +\autoref{sec:scrlttr2.compatibilityOptions}, +\DescPageRef{scrlttr2.option.version}) wird außer bei \Option{KOMAold} und +\Option{NF} in allen vordefinierten +\File{lco}-Dateien\textnote{\File{lco}-Datei}\Index{lco-Datei=\File{lco}-Datei} +(siehe \autoref{sec:scrlttr2.lcoFile}) der Fuß abhängig vom Satzspiegel +gesetzt. Damit hat dann auch \DescRef{scrlttr2.option.enlargefirstpage}% +\important{\DescRef{scrlttr2.option.enlargefirstpage}} keine Wirkung. Ab +Version 2.9u bekommt der Fuß eine Position am unteren Ende des Papiers. Damit +ist dann die Höhe des Satzspiegels des Briefbogens eventuell auch von der +Option \DescRef{scrlttr2.option.enlargefirstpage} abhängig. + +Sollte der Briefbogenfuß mittels Option +\OptionValueRef{scrlttr2}{firstfoot}{false}% +\important{\OptionValueRef{scrlttr2}{firstfoot}{false}}% +\IndexOption{firstfoot~=\textKValue{false}}\ChangedAt{v2.97e}{\Class{scrlttr2}} +(siehe \autoref{sec:scrlttr2.firstpage}, +\DescPageRef{scrlttr2.option.firstfoot}) abgeschaltet sein, so wird die +Einstellung von \PLength{firstfootvpos} ignoriert und stattdessen +\Length{paperheight}\IndexLength{paperheight} angenommen. Es bleibt damit dann +ein minimaler unterer Rand von \Length{footskip}\IndexLength{footskip}.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{firstfoothpos} +\end{Declaration} +Die\textnote{Achtung!} Pseudolänge +\PLength{firstfoothpos}\ChangedAt{v3.05}{\Class{scrlttr2}} gibt bei einem +positiven Wert den Abstand des Briefbogenfußes von der linken Papierkante +an. Ist der Wert sogar größer oder gleich der Breite des Papiers, +\Length{paperwidth}\IndexLength{paperwidth}, so wird der Fuß horizontal +zentriert auf dem Briefbogen platziert. Ein negativer Wert gibt den Abstand +des Fußes von der rechten Papierkante an. Ist der Wert jedoch kleiner oder +gleich der negativen Breite des Papiers, so wird der Fuß bündig zum linken +Rand des Satzspiegels platziert. + +Voreingestellt ist typischerweise ein Wert von +\Length{maxdimen}\IndexLength{maxdimen}, also der größtmögliche Wert für eine +Länge. Die Folge ist eine horizontale Zentrierung.% +\EndIndexGroup + + +\begin{Declaration} + \PLength{firstfootwidth} +\end{Declaration} +Diese Pseudolänge gibt die Breite des Fußes der ersten Briefseite, also des +Briefbogens, an. Der Wert stimmt in den vordefinierten \File{lco}-Dateien mit +\PLength{firstheadwidth}\important{\PLength{firstheadwidth}}% +\IndexPLength{firstheadwidth} überein.% +% +\EndIndexGroup +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Variablen für fortgeschrittene Anwender} +\seclabel{variables} +\BeginIndexGroup +\BeginIndex{}{Variablen} + +Neben der Möglichkeit, vordefinierte Variablen zu verwenden, bietet +\KOMAScript{} auch Anweisungen, um neue Variablen zu definieren oder deren +automatische Verwendung innerhalb der Geschäftszeile zu beeinflussen. + + +\begin{Declaration} + \Macro{newkomavar}\OParameter{Bezeichnung}\Parameter{Name} + \Macro{newkomavar*}\OParameter{Bezeichnung}\Parameter{Name} + \Macro{removereffields} + \Macro{defaultreffields} + \Macro{addtoreffields}\Parameter{Name} +\end{Declaration} +Mit \Macro{newkomavar} wird eine neue Variable definiert. Diese Variable wird +über \PName{Name} angesprochen. Optional kann eine \PName{Bezeichnung} für die +Variable \PName{Name} angegeben werden. Eine \PName{Bezeichnung} wird dabei im +Unterschied zum \PName{Name} nicht verwendet, um auf eine Variable +zuzugreifen. Vielmehr ist die \PName{Bezeichnung} eine Ergänzung zum Inhalt +einer Variable, die ähnlich ihrem Inhalt ausgegeben werden kann. + +Mit der Anweisung \Macro{addtoreffields} kann die Variable \PName{Name} der +Geschäftszeile\Index{Geschaeftszeile=Geschäftszeile}\textnote{Geschäftszeile} +(siehe \autoref{sec:scrlttr2.firstpage}, +\DescPageRef{scrlttr2.option.refline}) hinzugefügt werden. Dabei wird die +\PName{Bezeichnung} und der Inhalt der Variablen an das Ende der +Geschäftszeile angehängt, falls ihr Inhalt nicht leer ist. Die Sternvariante +\Macro{newkomavar*} entspricht der Variante ohne Stern mit anschließendem +Aufruf der Anweisung \Macro{addtoreffields}. Bei der Sternvariante wird die +Variable also automatisch zur Geschäftszeile hinzugefügt. +\begin{Example} + Angenommen, Sie benötigen in der Geschäftszeile ein zusätzliches Feld + für eine Durchwahl. Sie können das Feld dann wahlweise mit +\begin{lstcode} + \newkomavar[Durchwahl]{myphone} + \addtoreffields{myphone} +\end{lstcode} + oder kürzer mit +\begin{lstcode} + \newkomavar*[Durchwahl]{myphone} +\end{lstcode} + definieren. +\end{Example} +Im\textnote{Achtung!} Fall, dass eine Variable für die Geschäftszeile +definiert wird, sollten Sie immer eine Bezeichnung dafür angeben. + +Mit der Anweisung \Macro{removereffields} können alle Variablen aus der +Geschäftszeile entfernt werden. Dies betrifft auch die in der Klasse +vordefinierten Variablen. Die Geschäftszeile ist dann leer. Sie können dies +beispielsweise nutzen, wenn Sie die Reihenfolge der Variablen in der +Geschäftszeile ändern wollen. + +Zur Wiederherstellung der Reihenfolge der vordefinierten Variablen in der +Geschäftszeile dient \Macro{defaultreffields}. Dabei werden auch alle +selbst definierten Variablen aus der Geschäftszeile entfernt. + +Das\textnote{Achtung!} Datum sollte der Geschäftszeile nicht über die +Anweisung \Macro{addtoreffields} hinzugefügt werden. Stattdessen stellt man +mit Option \DescRef{scrlttr2.option.refline}% +\important{\OptionValueRef{scrlttr2}{refline}{dateleft}\\ + \OptionValueRef{scrlttr2}{refline}{dateright}\\ + \OptionValueRef{scrlttr2}{refline}{nodate}}% +\IndexOption{refline~=\textKValue{dateleft}}% +\IndexOption{refline~=\textKValue{dateright}}% +\IndexOption{refline~=\textKValue{nodate}} ein, ob das Datum links, rechts oder +gar nicht in der Geschäftszeile erscheinen soll. Diese Einstellungen haben +darüber hinaus auch einen Einfluss auf die Position des Datums, wenn gar keine +Geschäftszeile verwendet wird.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{usekomavar}\OParameter{Anweisung}\Parameter{Name} + \Macro{usekomavar*}\OParameter{Anweisung}\Parameter{Name} +\end{Declaration} +Die Anweisungen \DescRef{scrlttr2.cmd.usekomavar} und +\DescRef{scrlttr2.cmd.usekomavar*} sind wie alle Anweisungen, von denen es +eine Sternvariante gibt oder die ein optionales Argument besitzen, nicht voll +expandierbar. Bei Verwendung innerhalb von +\DescRef{scrlttr2.cmd.markboth}\IndexCmd{markboth}, +\DescRef{scrlttr2.cmd.markright}\IndexCmd{markright} oder ähnlichen +Anweisungen muss dennoch kein \Macro{protect}\IndexCmd{protect} vorangestellt +werden. Selbstverständlich gilt dies bei Verwendung von +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage} auch für +\DescRef{scrlayer-scrpage.cmd.markleft}\IndexCmd{markleft} (siehe +\autoref{sec:scrlayer-scrpage.pagestyle.content}, +\DescPageRef{scrlayer-scrpage.cmd.markleft}). Allerdings\textnote{Achtung!} +können die Anweisungen nicht innerhalb von +\Macro{MakeUppercase}\important{\Macro{MakeUppercase}}\IndexCmd{MakeUppercase} +und ähnlichen Anweisungen verwendet werden, die direkten Einfluss auf ihr +Argument haben. Diese Anweisungen können jedoch als optionales Argument +angegeben werden. So erhält man beispielsweise den Inhalt einer Variable in +Großbuchstaben mit: +\begin{lstcode}[escapeinside=»«] + \usekomavar[\MakeUppercase]{»\PName{Name}«} +\end{lstcode} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifkomavarempty}\Parameter{Name}\Parameter{Wahr}\Parameter{Falsch} + \Macro{ifkomavarempty*}\Parameter{Name}\Parameter{Wahr}\Parameter{Falsch} +\end{Declaration} +Für die exakte Funktion ist wichtig, dass der Inhalt der Variablen soweit +expandiert wird, wie dies mit \Macro{edef} möglich ist. Bleiben dabei +Leerzeichen oder unexpandierbare Makros wie \Macro{relax} übrig, so gilt der +Inhalt auch dann als nicht leer, wenn die Verwendung der Variablen zu keiner +Ausgabe führen würde. + +Auch\textnote{Achtung!} diese Anweisung kann nicht innerhalb von +\Macro{MakeUppercase} oder ähnlichen Anweisungen verwendet werden. Sie ist +jedoch robust genug, um beispielsweise als Argument von +\DescRef{scrlttr2.cmd.markboth} oder \DescRef{scrlttr2.cmd.footnote} zu +funktionieren. +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Ergänzende Informationen zu den Seitenstilen} +\seclabel{pagestyleatscrletter} +\BeginIndexGroup +\BeginIndex{}{Seiten>Stil} + +\LoadNonFree{scrlttr2-experts}{0}% +\EndIndexGroup + +\iffalse% Wurde bereits in Kapitel 4.21 behandelt +\section{Unterschiede in der Behandlung von \File{lco}-Dateien bei + \Package{scrletter}} +\seclabel{lcoatscrletter} +\BeginIndexGroup +\BeginIndex{File}{lco} +\BeginIndex{}{lco-Datei=\File{lco}-Datei} + +In\ChangedAt{v3.15}{\Package{scrletter}} \autoref{sec:scrlttr2.lcoFile} wurde +erklärt, dass man \File{lco}-Dateien direkt über \Macro{documentclass} laden +kann. Für \Package{scrletter}\OnlyAt{\Package{scrlttr2}} wurde auf diese +Möglichkeit verzichtet. + +\begin{Declaration} + \Macro{LoadLetterOption}\Parameter{Name} + \Macro{LoadLetterOptions}\Parameter{Liste von Namen} +\end{Declaration} +Während für \Class{scrlttr2} lediglich empfohlen wird, \File{lco}-Dateien über +\DescRef{scrlttr2.cmd.LoadLetterOption} oder +\DescRef{scrlttr2.cmd.LoadLetterOptions} zu laden, ist dies für +\Package{scrletter} zwingend. Natürlich können die \File{lco}-Dateien auch +erst nach \Package{scrletter} geladen werden. +% +\EndIndexGroup +% +\EndIndexGroup +% +\fi + + +\section{\File{lco}-Dateien für fortgeschrittene Anwender} +\seclabel{lcoFile} +\BeginIndexGroup +\BeginIndex{File}{lco} +\BeginIndex{}{lco-Datei=\File{lco}-Datei} + +\BeginIndexGroup% +\BeginIndex{}{Papier>Format}% +Obwohl jedes von \hyperref[cha:typearea]{\Package{typearea}}% +\IndexPackage{typearea} einstellbare Format verwendbar ist, kann es bei der +Ausgabe der ersten Briefseite mit manchen Formaten zu unerwünschten +Ergebnissen kommen. Leider gibt es +keine allgemein gültigen Regeln, um die Position von Anschriftfeldern und +Ähnlichem für beliebige Papierformate zu berechnen. Vielmehr werden für +unterschiedliche Papierformate unterschiedliche Parameter benötigt.% + +%\subsection{Überwachung des Papierformats} +%\seclabel{papersize} + +Derzeit existieren Parametersätze und \File{lco}-Dateien für A4-Papier und +letter-Papier. Die Klasse \Class{scrlttr2} versteht aber theoretisch sehr viel +mehr Papierformate. Daher ist es notwendig zu überwachen, ob die korrekte +Papiergröße eingestellt ist. Dies gilt umso mehr, wenn \Package{scrletter} +verwendet wird, da die Einstellung der Papiergröße dann in erster Linie von +der verwendeten Klasse abhängt. + +\begin{Declaration} + \Macro{LetterOptionNeedsPapersize}% + \Parameter{Optionsname}\Parameter{Papiergröße} +\end{Declaration} +Damit man bei Verwendung einer in der \File{lco}-Datei nicht vorgesehenen +\PName{Papiergröße} zumindest gewarnt wird, sind in den +mit \KOMAScript{} ausgelieferten \File{lco}-Dateien +\Macro{LetterOptionNeedsPapersize}-Anweisungen zu finden. Als erstes Argument +wird dabei der Name der \File{lco}-Datei ohne die Endung »\File{.lco}« +übergeben. Als zweites Argument wird die Papiergröße übergeben, für die diese +\File{lco}-Datei gedacht ist. + +Werden nacheinander mehrere \File{lco}-Dateien geladen, so kann jede dieser +\File{lco}-Dateien eine Anweisung \Macro{LetterOptionNeedsPapersize} +enthalten. Innerhalb von \DescRef{scrlttr2.cmd.opening}\IndexCmd{opening} wird +jedoch nur auf die jeweils letzte angegebene \PName{Papiergröße} geprüft. Wie +das nachfolgende Beispiel zeigt, ist es daher für den versierten Anwender +leicht möglich, \File{lco}-Dateien mit Parametersätzen für andere +Papierformate zu schreiben. % +\iffalse% Umbruchoptimierung!!! +Wer allerdings nicht vor hat, selbst solche \File{lco}-Dateien zu schreiben, +der kann die Erklärung zu dieser Anweisung gleich wieder vergessen und auch +das Beispiel überspringen.% +\fi +\begin{Example} + Nehmen wir einmal an, dass Sie A5-Papier in normaler Ausrichtung, also + hochkant oder portrait, für Ihre Briefe verwenden. Nehmen wir weiter an, + dass Sie diese in normale Fensterbriefumschläge im Format C6 stecken. Damit + wäre prinzipiell die Position des Adressfeldes die gleiche wie bei einem + normalen Brief in A4 nach DIN. Der Unterschied besteht im Wesentlichen + darin, dass das A5-Papier nur einmal gefaltet werden muss. Sie wollen + deshalb verhindern, dass die obere und die untere Faltmarke gesetzt + wird. Dies erreichen Sie beispielsweise, indem Sie die Marken außerhalb des + Papiers platzieren. +\begin{lstcode} + \ProvidesFile{a5.lco} + [2002/05/02 letter class option] + \LetterOptionNeedsPapersize{a5}{a5} + \setplength{tfoldmarkvpos}{\paperheight} + \setplength{bfoldmarkvpos}{\paperheight} + \endinput +\end{lstcode} + Eleganter wäre es natürlich, die Marken mit Hilfe der Option + \DescRef{scrlttr2.option.foldmarks} abzuschalten. Außerdem muss auch noch + die Position des Seitenfußes, also die Pseudolänge \PLength{firstfootvpos}, + angepasst werden. Ich überlasse es dem Leser, dafür einen geeigneten Wert zu + ermitteln. Mit einer solchen \File{lco}-Datei ist es lediglich wichtig, dass + andere \File{lco}-Dateioptionen wie \File{SN} vor dem Laden von + »\File{a5.lco}«, angegeben werden. +\end{Example} +% +\EndIndexGroup% +\EndIndexGroup% +\vskip-\ht\strutbox% Wegen Beispiel am Ende der Erklärung + + +%\subsection{Positionen sichtbar machen} +%\seclabel{visualize} +%\BeginIndexGroup +\begin{Declaration} + \File{visualize.lco} +\end{Declaration} +\BeginIndex{Option}{visualize}% +Wenn man selbst \File{lco}-Dateien entwickelt, beispielsweise um die +Positionen von verschiedenen Feldern des Briefbogens an eigene Wünsche oder +Notwendigkeiten anzupassen, ist es hilfreich, wenn zumindest einige Elemente +direkt sichtbar gemacht werden können. Zu diesem Zweck existiert die +\File{lco}-Datei +\File{visualize.lco}\ChangedAt{v3.04}{\Class{scrlttr2}}. Diese kann wie jede +\File{lco}-Datei geladen werden. Allerdings ist das Laden dieser \emph{Letter + Class Option} auf die Dokumentpräambel beschränkt und seine Auswirkungen +können nicht wieder rückgängig gemacht werden. Die \File{lco}-Datei bedient +sich der Pakete +\Package{eso-pic}\IndexPackage{eso-pic}% +\important[i]{\Package{eso-pic}\\\Package{graphicx}} +und \Package{graphicx}\IndexPackage{graphicx}, die nicht zu \KOMAScript{} +gehören. + +\begin{Declaration} + \Macro{showfields}\Parameter{Feldliste} +\end{Declaration} +Mit dieser Anweisung kann bei Verwendung von \File{visualize.lco} die +Visualisierung von Feldern des Briefbogens aktiviert werden. Das Argument +\PName{Feldliste} ist dabei eine durch Komma separierte Liste der Feldern, die +visualisiert werden sollen. Folgende Felder werden derzeit unterstützt: +\begin{labeling}[~--]{\PValue{location}} +\item[\PValue{test}] ist ein Testfeld der Größe 10\Unit{cm} auf 15\Unit{cm}, + das jeweils 1\Unit{cm} vom oberen und linken Papierrand entfernt ist. Dieses + Testfeld existiert zu Debuggingzwecken. Es dient als Vergleichsmaß für den + Fall, dass im Dokumenterstellungsprozess die Maße verfälscht werden. +\item[\PValue{head}] ist der Kopfbereich des Briefbogens. Es handelt sich hier + um ein nach unten offenes Feld. +\item[\PValue{foot}] ist der Fußbereich des Briefbogens. Es handelt sich hier + um ein nach unten offenes Feld. +\item[\PValue{address}] ist das Anschriftfenster. +\item[\PValue{location}] ist das Feld der Absenderergänzung. +\item[\PValue{refline}] ist die Geschäftszeile. Es handelt sich hier um ein + nach unten offenes Feld. +\end{labeling}% +\BeginIndex{FontElement}{field}\LabelFontElement{field}% +Mit den Anweisungen \DescRef{scrlttr2.cmd.setkomafont} und +\DescRef{scrlttr2.cmd.addtokomafont} (siehe \autoref{sec:scrlttr2.textmarkup}, +\DescPageRef{scrlttr2.cmd.setkomafont}) für das Element +\FontElement{field}\important{\FontElement{field}} kann die Farbe der +Visualisierung geändert werden. Voreingestellt ist \Macro{normalcolor}.% +\EndIndex{FontElement}{field}% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setshowstyle}\Parameter{Stil} + \Macro{edgesize} +\end{Declaration} +In der Voreinstellung werden von \File{visualize.lco} die einzelnen Felder +durch Rahmen\important{\PValue{frame}} markiert. Dies entspricht dem +\PName{Stil} \PValue{frame}. Nach unten offene Felder werden dabei nicht +komplett umrahmt, sondern unten offen mit kleinen Pfeilen nach unten +dargestellt. Als Alternative\important{\PValue{rule}} hierzu steht auch der +\PName{Stil} \PValue{rule} zur Verfügung. Dabei wird das Feld farbig +hinterlegt. Hierbei kann nicht zwischen geschlossenen und nach unten offenen +Feldern unterschieden werden. Stattdessen werden nach unten offene Felder mit +einer Mindesthöhe dargestellt. Der dritte\important{\PValue{edges}} verfügbare +\PName{Stil} ist \PValue{edges}. Dabei werden die Ecken der Felder +markiert. Bei nach unten offenen Feldern entfallen dabei die unteren +Eckmarkierungen. Die Größe der Eckmarkierungen ist im Makro \Macro{edgesize} +abgelegt und mit 1\Unit{ex} voreingestellt.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{showenvelope}\AParameter{Breite\textup{,}Höhe} + \AParameter{HOffset\textup{,}VOffset} + \OParameter{Zusatz} + \Macro{showISOenvelope}\Parameter{Format}\OParameter{Zusatz} + \Macro{showUScommercial}\Parameter{Format}\OParameter{Zusatz} + \Macro{showUScheck}\OParameter{Zusatz} + \Macro{unitfactor} +\end{Declaration} +Diese Anweisungen dienen bei Verwendung von \File{visualize.lco} dazu, eine +Seite mit einer Zeichnung eines Umschlags auszugeben. Der Umschlag wird dabei +immer um 90° gedreht auf einer eigenen Seite im Maßstab~1:1 ausgegeben. Das +Anschriftfenster wird automatisch aus den aktuellen Daten für die +Anschriftposition auf dem Briefbogen: \PLength{toaddrvpos}, +\PLength{toaddrheight}, \PLength{toaddrwidth} und \PLength{toaddrhpos}, +erzeugt. Hierfür ist es notwendig zu wissen, um welchen Wert der gefaltete +Briefbogen auf jeder Seite kleiner als die \PName{Breite} und \PName{Höhe} des +Briefbogens ist. Sind diese beiden Werte, \PName{HOffset} und \PName{VOffset}, +bei \Macro{showenvelope} nicht angegeben, so wird versucht, sie aus den +Faltmarken und der Papiergröße selbst zu berechnen. + +Die Anweisungen \Macro{showISOenvelope}, \Macro{showUScommercial} und +\Macro{showUScheck} basieren auf \Macro{showenvelope}. Mit +\Macro{showISOenvelope} kann ein ISO-Umschlag im \PName{Format} C4, C5, C5/6, +DL\iffree{ (auch bekannt als C5/6)}{} oder C6 erzeugt werden. Mit +\Macro{showUScommercial} wird hingegen ein US-Commercial-Umschlag im +\PName{Format} 9 oder 10 ausgegeben. \Macro{showUScheck} schließlich ist für +Umschläge im US-Check-Format zuständig. + +\BeginIndex{FontElement}{letter}\LabelFontElement{letter}% +Innerhalb des Umschlags wird die Lage des Briefbogens gestrichelt +angedeutet. Die dabei verwendete Farbe kann mit Hilfe der Anweisungen +\DescRef{scrlttr2.cmd.setkomafont} und \DescRef{scrlttr2.cmd.addtokomafont} +(siehe \autoref{sec:scrlttr2.textmarkup}, +\DescPageRef{scrlttr2.cmd.setkomafont}) für das Element +\FontElement{letter}\important{\FontElement{letter}} verändert +werden. Voreingestellt ist \Macro{normalcolor}.% +\EndIndex{FontElement}{letter} + +\BeginIndex{FontElement}{measure}\LabelFontElement{measure}% +Die Umschlagzeichnung wird automatisch bemaßt. Die Farbe der Bemaßung und die +Größe deren Beschriftung kann mit Hilfe der Anweisungen +\DescRef{scrlttr2.cmd.setkomafont} und \DescRef{scrlttr2.cmd.addtokomafont} +(siehe \autoref{sec:scrlttr2.textmarkup}, +\DescPageRef{scrlttr2.cmd.setkomafont}) für das Element +\FontElement{measure}\important{\FontElement{measure}} verändert +werden. Voreingestellt ist hier \Macro{normalcolor}. Die Bemaßung erfolgt in +Vielfachen von \Length{unitlength} mit einer maximalen Genauigkeit von +$1/\Macro{unitfactor}$, wobei die Genauigkeit der \TeX-Arithmetik die +tatsächliche Grenze darstellt. Voreingestellt ist 1. Eine Umdefinierung ist +mit \Macro{renewcommand} möglich.% +\EndIndex{FontElement}{measure} + +\begin{Example} + Es wird ein Beispielbrief im Format ISO~A4 erzeugt. Die unterstützten Felder + sollen zwecks Überprüfung ihrer Position mit gelben Rahmenlinien markiert + werden. Des Weiteren soll die Position des Fensters in einem Umschlag der + Größe~DL mit Hilfe einer Zeichnung überprüft werden. Die Maßlinien in dieser + Zeichnung sollen rot und die Maßzahlen in kleinerer Schrift ausgegeben + werden, wobei die Maßzahlen in cm mit einer Genauigkeit von 1\Unit{mm} + ausgegeben werden sollen. Der gestrichelte Briefbogen im Umschlag soll + hingegen grün eingefärbt werden. +\begin{lstcode} + \documentclass[visualize]{scrlttr2} + \usepackage{xcolor} + \setkomafont{field}{\color{yellow}} + \setkomafont{measure}{\color{red}\small} + \setkomafont{letter}{\color{green}} + \showfields{head,address,location,refline,foot} + \usepackage[ngerman]{babel} + \usepackage{lipsum} + \begin{document} + \setkomavar{fromname}{Peter Musterfrau} + \setkomavar{fromaddress}{Hinter dem Tal 2\\ + 54321 Musterheim} + \begin{letter}{% + Petra Mustermann\\ + Vor dem Berg 1\\ + 12345 Musterhausen% + } + \opening{Hallo,} + \lipsum[1] + \closing{Bis dann} + \end{letter} + \setlength{\unitlength}{1cm} + \renewcommand*{\unitfactor}{10} + \showISOenvelope{DL} + \end{document} +\end{lstcode} + Auf der ersten Seite findet sich nun der Briefbogen, auf der zweiten Seite + wird die Zeichnung des Umschlags ausgegeben. +\end{Example} + +Bezüglich der Bemaßung ist zu beachten, dass ungünstige Kombinationen von +\Length{unitlength} und \Macro{unitfactor} sehr schnell einen \TeX-Fehler der +Art \emph{arithmetic overflow} provozieren. Ebenso kann es geschehen, dass +ausgegebene Maßzahlen geringfügig vom tatsächlichen Wert abweichen. Beides +sind keine Fehler von \Option{visualize}, sondern lediglich +Implementierungsgrenzen. +% +\EndIndexGroup +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Unterstützung verschiedener Sprachen} +\seclabel{languages}% +\BeginIndexGroup% +\BeginIndex{}{Sprachen}% +Die Klasse \Class{scrlttr2} und das Paket \Package{scrletter} unterstützen +viele Sprachen. Dazu zählen Deutsch (\PValue{german} für alte deutsche +Rechtschreibung, \PValue{ngerman} für neue deutsche Rechtschreibung, +\PValue{austrian} für Österreichisch mit alter deutscher Rechtschreibung und +\PValue{naustrian}\ChangedAt{v3.09}{\Class{scrlttr2}} für Österreichisch mit +neuer deutscher Rechtschreibung), +\PValue{nswissgerman}\ChangedAt{v3.13}{\Class{scrlttr2}} für Schweizer Deutsch +mit neuer Rechtschreibung und \PValue{swissgerman} für Schweizer Deutsch mit +alter Rechtschreibung, Englisch (unter anderem \PValue{english} ohne Angabe, +ob amerikanisches oder britisches Englisch, \PValue{american} und +\PValue{USenglish} für Amerikanisch, \PValue{british} und \PValue{UKenglish} +für Britisch), Französisch, Italienisch, Spanisch, Niederländisch, Kroatisch, +Finnisch, Norwegisch\ChangedAt{v3.02}{\Class{scrlttr2}}, +Schwedisch\ChangedAt{v3.08}{\Class{scrlttr2}}, +Polnisch\ChangedAt{v3.13}{\Class{scrlttr2}}, +Tschechisch\ChangedAt{v3.13}{\Class{scrlttr2}} und Slowakisch. + +Zwischen den Sprachen wird bei Verwendung des +\Package{babel}-Pakets\IndexPackage{babel} (siehe \cite{package:babel}) mit +der Anweisung \Macro{selectlanguage}\Parameter{Sprache} gewechselt. Andere +Pakete wie \Package{german}\IndexPackage{german} (siehe \cite{package:german}) +und \Package{ngerman}\IndexPackage{ngerman} (siehe \cite{package:ngerman}) +besitzen diese Anweisung ebenfalls. In der Regel erfolgt eine +Sprachumschaltung jedoch bereits aufgrund des Ladens eines solchen Pakets. +\iffalse% Umbruchkorrekturtext!!! +Näheres entnehmen Sie bitte der jeweiligen Anleitung. +\fi + +Erlauben\textnote{Achtung!} Sie mir noch einen Hinweis zu den +Sprachumschaltpaketen. Das Paket +\Package{french}\IndexPackage{french}\important{\Package{french}} (siehe +\cite{package:french}) nimmt neben der Umdefinierung der Begriffe aus +\autoref{tab:scrlttr2-experts.languageTerms}, +\autopageref{tab:scrlttr2-experts.languageTerms} weitere Änderungen vor. So +definiert es etwa die Anweisung \DescRef{scrlttr2.cmd.opening} um. Dabei geht +es einfach davon aus, dass \DescRef{scrlttr2.cmd.opening} immer wie in der +Standardbriefklasse \Class{letter} definiert ist. Dies ist bei \KOMAScript{} +jedoch nicht der Fall. Das Paket \Package{french} zerstört deshalb die +Definition und arbeitet nicht korrekt mir \KOMAScript{} zusammen. Ich +betrachte dies als Fehler des Pakets \Package{french}, der obwohl schon vor +Jahrzehnten gemeldet, leider nie beseitigt wurde. + +Wird das Paket \Package{babel}\IndexPackage{babel} für die +Umschaltung auf die Sprache verwendet, können vereinzelt ebenfalls +Probleme auftreten. Bei \Package{babel} lassen sich problematisch Änderungen +einer Sprache jedoch meist gezielt abschalten.% +\iffalse% Das ist eigentlich überholt! +\ Ist das Paket \Package{french} nicht installiert, ergibt sich das Problem + mit \Package{babel} nicht. Ebenfalls existiert das Problem normalerweise + nicht, wenn man bei \Package{babel} anstelle der Sprache \PValue{french} + eine der Sprachen \PValue{acadian}, \PValue{canadien} oder \PValue{francais} + verwendet. +\fi + +\iffalse% Das ist ebenfalls überholt! +Mit Babel ab Version 3.7j tritt dieses Problem jedoch nur noch auf, wenn per +Option explizit angegeben wird, dass \Package{babel} das +\Package{french}-Paket verwenden soll. +% +\iftrue + % Umbruchoptimierungspassage + Kann nicht sicher gestellt werden, dass nicht eine alte Version von + \Package{babel} verwendet wird, so empfehle ich% + \iftrue + , mit +\begin{lstcode} + \usepackage[...,francais,...]{babel} +\end{lstcode} + französische Sprache auszuwählen. + \iffalse % + Gegebenenfalls ist dann aber trotzdem mit + \Macro{selectlanguage}\PParameter{french} auf Französisch umzuschalten.% + \fi% + \else % + \space bei \Package{babel} die Option \Option{frenchb}.% + \fi +\fi +\fi + +\iftrue + %\enlargethispage*{\baselineskip}% + Es ist nicht auszuschließen, dass mit anderen Sprachen und Paketen ähnliche + Probleme auf"|treten. +% \iffalse + \iftrue + Für Deutsch sind solche Probleme jedoch nicht bekannt und treten weder + mit den Paketen \Package{german}\IndexPackage{german} oder + \Package{ngerman}\IndexPackage{ngerman} noch mit \Package{babel} auf. + \else + Für Deutsch treten solche Probleme mit den Paketen + \Package{german}\IndexPackage{german}, + \Package{ngerman}\IndexPackage{ngerman} oder \Package{babel} jedoch nicht + auf. + \fi +% \fi +\fi + +% Hinweis: Der folgende Block kann je nach Umbruch vor oder nach +% \captions... und \date... (aber bitte nicht dazwischen) stehen. +\begin{Declaration} + \Macro{yourrefname} + \Macro{yourmailname} + \Macro{myrefname} + \Macro{customername} + \Macro{invoicename} + \Macro{subjectname} + \Macro{ccname} + \Macro{enclname} + \Macro{headtoname} + \Macro{headfromname} + \Macro{datename} + \Macro{pagename} + \Macro{mobilephonename} + \Macro{phonename} + \Macro{faxname} + \Macro{emailname} + \Macro{wwwname} + \Macro{bankname} +\end{Declaration} +Die aufgeführten Anweisungen enthalten die jeweiligen sprachtypischen +Begriffe. Diese\important[i]{% + \DescRef{scrbase.cmd.newcaptionname}\\ + \DescRef{scrbase.cmd.renewcaptionname}\\ + \DescRef{scrbase.cmd.providecaptionname}} können für die Realisierung einer +weiteren Sprache oder aber auch zur eigenen freien Gestaltung wie in +\autoref{sec:scrbase.languageSupport} erklärt angepasst werden. Von +\KOMAScript{} werden die Begriffe erst nach der Präambel, also bei +\Macro{begin}\PParameter{document} gesetzt. Sie sind daher vorher nicht +verfügbar und können vorher auch nicht geändert werden. In +\autoref{tab:scrlttr2-experts.languageTerms}, +\autopageref{tab:scrlttr2-experts.languageTerms} sind die Voreinstellungen +für \Option{english} und \Option{ngerman} zu finden.% +\EndIndexGroup +%\iffree{}{\clearpage}% Siehe Kommentar zur Tabelle + +\begin{Declaration} + \Macro{captionsacadian} + \Macro{captionsamerican} + \Macro{captionsaustralien} + \Macro{captionsaustrian} + \Macro{captionsbritish} + \Macro{captionscanadian} + \Macro{captionscanadien} + \Macro{captionscroatian} + \Macro{captionsczech} + \Macro{captionsdutch} + \Macro{captionsenglish} + \Macro{captionsfinnish} + \Macro{captionsfrancais} + \Macro{captionsfrench} + \Macro{captionsgerman} + \Macro{captionsitalian} + \Macro{captionsnaustrian} + \Macro{captionsnewzealand} + \Macro{captionsngerman} + \Macro{captionsnorsk} + \Macro{captionsnswissgerman} + \Macro{captionspolish} + \Macro{captionsslovak} + \Macro{captionsspanish} + \Macro{captionsswedish} + \Macro{captionsswissgerman} + \Macro{captionsUKenglish} + \Macro{captionsUSenglish} +\end{Declaration} +Wird die Sprache eines Briefes gewechselt, so werden über diese +Anweisungen die Begriffe aus \autoref{tab:scrlttr2-experts.languageTerms}, +\autopageref{tab:scrlttr2-experts.languageTerms} umdefiniert. Sollte das +verwendete Sprachumschaltpaket dies nicht unterstützen, so können obige +Anweisungen notfalls auch direkt verwendet werden.% +% +\begin{table}% + \begin{minipage}{\textwidth} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + %\caption + \begin{captionbeside}[{% + Voreinstellungen für die sprachabhängigen Begriffe% + }]{% + Voreinstellungen + für die sprachabhängigen Begriffe bei \iffalse Verwendung der \else + den \fi Sprachen + \Option{english} und \Option{ngerman} soweit nicht durch die Pakete + zur Sprachumschaltung bereits definiert% + \label{tab:scrlttr2-experts.languageTerms}% + }[l] + \begin{tabular}[t]{lll} + \toprule + Anweisung & \Option{english} & \Option{ngerman} \\ + \midrule + \Macro{bankname} & Bank account & Bankverbindung \\ + \Macro{ccname}\footnotemark[1] & cc & Kopien an \\ + \Macro{customername} & Customer no. & Kundennummer \\ + \Macro{datename} & Date & Datum \\ + \Macro{emailname} & Email & E-Mail \\ + \Macro{enclname}\footnotemark[1] & encl & Anlagen \\ + \Macro{faxname} & Fax & Fax \\ + \Macro{headfromname} & From & Von \\ + \Macro{headtoname}\footnotemark[1] & To & An \\ + \Macro{invoicename} & Invoice no. & Rechnungsnummer \\ + \Macro{myrefname} & Our ref. & Unser Zeichen \\ + \Macro{pagename}\footnotemark[1] & Page & Seite \\ + \Macro{mobilephonename} & Mobile phone & Mobiltelefon \\ + \Macro{phonename} & Phone & Telefon \\ + \Macro{subjectname} & Subject & Betrifft \\ + \Macro{wwwname} & Url & URL \\ + \Macro{yourmailname} & Your letter of & Ihr Schreiben vom\\ + \Macro{yourrefname} & Your ref. & Ihr Zeichen \\ + \bottomrule + \end{tabular} + \deffootnote{1em}{1em}{1\ }% brutal aber effektiv + \footnotetext[1000]{Diese Begriffe werden normalerweise bereits von + Sprachpaketen wie \Package{babel} definiert und dann von + \KOMAScript{} nicht überschrieben. Abweichungen im Wortlaut sind + daher möglich und der Anleitung des verwendeten Sprachpakets zu + entnehmen.} + \end{captionbeside} + \end{minipage} +\end{table} +% +\EndIndexGroup +\iffree{}{\clearpage}% Umbruchkorrektur + + +\begin{Declaration} + \Macro{dateacadian} + \Macro{dateamerican} + \Macro{dateaustralien} + \Macro{dateaustrian} + \Macro{datebritish} + \Macro{datecanadian} + \Macro{datecanadien} + \Macro{datecroatian} + \Macro{dateczech} + \Macro{datedutch} + \Macro{dateenglish} + \Macro{datefinnish} + \Macro{datefrancais} + \Macro{datefrench} + \Macro{dategerman} + \Macro{dateitalian} + \Macro{datenaustrian} + \Macro{datenewzealand} + \Macro{datengerman} + \Macro{datenorsk} + \Macro{datenswissgerman} + \Macro{datepolish} + \Macro{dateslovak} + \Macro{datespanish} + \Macro{dateswedish} + \Macro{dateswissgerman} + \Macro{dateUKenglish} + \Macro{dateUSenglish} +\end{Declaration} +Je nach verwendeter Sprache werden auch die Datumsangaben\Index{Datum} des +nummerischen Datums (siehe Option \DescRef{scrlttr2.option.numericaldate} in +\autoref{sec:scrlttr2.firstpage}, \DescPageRef{scrlttr2.option.numericaldate}) +in unterschiedlicher Form umgesetzt. Die genauen Angaben können +\autoref{tab:date}, \autopageref{tab:date} entnommen werden.% +\EndIndexGroup +% +\EndIndexGroup +\iffree{}{\clearpage}% Umbruchkorrektur zwecks Ausgabe der Tabellen + +\begin{table}[!tp]% Umbruchoptimierung +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside}{Sprachabhängige Ausgabeformate für das Datum}[l] + \begin{tabular}[t]{ll} + \toprule + Anweisung & Ausgabebeispiel \\ + \midrule + \Macro{dateacadian} & 24.\,12.\,1993\\ + \Macro{dateamerican} & 12/24/1993\\ + \Macro{dateaustralien}& 24/12/1993\\ + \Macro{dateaustrian} & 24.\,12.\,1993\\ + \Macro{datebritish} & 24/12/1993\\ + \Macro{datecanadian} & 1993/12/24\\ + \Macro{datecanadien} & 1993/12/24\\ + \Macro{datecroatian} & 24.\,12.\,1993.\\ + \Macro{dateczech} & 24.\,12.\,1993\\ + \Macro{datedutch} & 24.\,12.\,1993\\ + \Macro{dateenglish} & 24/12/1993\\ + \Macro{datefinnish } & 24.12.1993.\\ + \Macro{datefrancais} & 24.\,12.\,1993\\ + \Macro{datefrench} & 24.\,12.\,1993\\ + \Macro{dategerman} & 24.\,12.\,1993\\ + \Macro{dateitalian} & 24.\,12.\,1993\\ + \Macro{datenaustrian} & 24.\,12.\,1993\\ + \Macro{datenewzealand}& 24/12/1993\\ + \Macro{datengerman} & 24.\,12.\,1993\\ + \Macro{datenorsk} & 24.12.1993\\ + \Macro{datenswissgerman} & 24.\,12.\,1993\\ + \Macro{datepolish} & 24.\,12.\,1993\\ + \Macro{dateslovak} & 24.\,12.\,1993\\ + \Macro{datespanish} & 24.\,12.\,1993\\ + \Macro{dateswedish} & 24/12 1993\\ + \Macro{dateswissgerman} & 24.\,12.\,1993\\ + \Macro{dateUKenglish} & 24/12/1993\\ + \Macro{dateUSenglish} & 12/24/1993\\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:date} +\end{table} +% +\section{Obsolete Anweisungen von \Class{scrlttr2}} +\seclabel{obsolete} +\BeginIndexGroup + +\LoadNonFree{scrlttr2-experts}{1} +\EndIndexGroup +% +\iffalse% Es wird Zeit das komplett rauszuwerfen! +\section{Von der obsoleten \Class{scrlettr} zur +aktuellen \Class{scrlttr2}} +\seclabel{fromscrlettr} +\BeginIndexGroup +\BeginIndex{Class}{scrlettr} + +Die\textnote{Achtung!} alte Briefklasse \Class{scrlettr} wurde mit Einführung +von \Class{scrlttr2} (siehe \autoref{cha:scrlttr2}) 2002 +obsolet und ist auch nicht mehr Bestandteil von \KOMAScript{}. Wer die Klasse +oder Informationen dazu dennoch benötigt, findet sie in +\cite{package:koma-script-obsolete}. + +Um den Umstieg von der alten auf die neue Klasse zu erleichtern, existiert mit +\Option{KOMAold} eine Kompatibilitätseinstellung. Grundsätzlich ist in der +neuen Klasse die gesamte alte Funktionalität enthalten. Ohne \Option{KOMAold} +ist jedoch die Benutzerschnittstelle eine andere und auch die Voreinstellungen +stimmen nicht überein. Näheres dazu ist \autoref{sec:scrlttr2.lcoFile}, +\autoref{tab:lcoFiles} zu entnehmen. + +\LoadNonFree{scrlttr2-experts}{2} +% +\EndIndexGroup +\fi +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "guide.tex" +%%% End: + +% LocalWords: Pseudolänge Pseudolängen Rücksendeadresse Faltmarke Briefseite +% LocalWords: Sternvariante Geschäftszeile Testfeld Kopfbereich Vergleichsmaß +% LocalWords: Dokumenterstellungsprozess Fußbereich Anschriftfenster Falt +% LocalWords: Absenderergänzung Kundennummer Rechnungsnummer Falzmarken +% LocalWords: Sprachumschaltpaketen Standardbriefklasse Seitenstilen +% LocalWords: Paginierung Paginierungen Papiergröße Anschriftfeldes +% LocalWords: Versandart Anschriftfensters Anschriftfeld Briefköpfe +% LocalWords: Variableninhalt Schlussgruß Briefbogenfuß diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrlttr2.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlttr2.tex new file mode 100644 index 0000000000..aa710572be --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlttr2.tex @@ -0,0 +1,3768 @@ +% ====================================================================== +% scrlttr2.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlttr2.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrlttr2 of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel über scrlttr2 in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrlttr2.tex}% + [$Date: 2018-04-26 14:55:38 +0200 (Thu, 26 Apr 2018) $ + KOMA-Script guide (chapter: scrlttr2)] + +\chapter{Briefe mit Klasse \Class{scrlttr2} oder Paket \Package{scrletter}} +\labelbase{scrlttr2} + +\BeginIndexGroup +\BeginIndex{Class}{scrlttr2}\BeginIndex{Package}{scrletter}% +\BeginIndex{}{Briefe}% +Briefe sind in vielerlei Hinsicht etwas ganz anderes als Artikel, Berichte, +Bücher oder Ähnliches. Schon allein deshalb gibt es für Briefe ein eigenes +Kapitel. Aber auch aus weiteren Gründen ist ein eigenes Kapitel für +\Class{scrlttr2} und \Package{scrletter} gerechtfertigt. + +Die Klasse \Class{scrlttr2}\important{\Class{scrlttr2}} wurde 2002 von Grund +auf neu entwickelt. Sie hat daher auch ein komplett anderes Bedienkonzept als +alle übrigen mir bekannten Klassen. Die neue Art der Bedienung ist +möglicherweise etwas ungewohnt, bietet jedoch nicht nur dem geübten Anwender +einige Vorteile. + +Das Paket \Package{scrletter}\important{\Package{scrletter}}% +\ChangedAt{v3.15}{\Package{scrletter}} wiederum verstärkt \KOMAScript{} seit +Version 3.15. Es stellt die gesamte auf Briefe ausgelegte Funktionalität von +\Class{scrlttr2} auch für andere Klassen bereit. Empfohlen wird die Verwendung +mit einer der \KOMAScript-Klassen \Class{scrbook}, \Class{scrreprt} oder +\Class{scrartcl}, die im vorherigen Kapitel erklärt sind. Mit geringfügigen +Einschränkungen funktioniert \Package{scrletter} aber auch mit den +Standardklassen. + +Ausgangspunkt für die Entwicklung von \Package{scrletter} waren einerseits +Nachfragen von Anwendern, die Elemente wie +Gliederungsüberschriften,\textnote{Überschriften, Gleitumgebungen, + Verzeichnisse} Gleitumgebungen oder ein Literaturverzeichnis auch in Briefen +haben wollten. Umgekehrt gab es auch Wünsche nach der Verwendung der Variablen +von \Class{scrlttr2} in den übrigen \KOMAScript-Klassen. Beides ist durch eine +Kombination der gewünschten \KOMAScript-Klasse mit \Package{scrletter} +möglich. + +Gegenüber der Briefklasse hat das Briefpaket einige, kleine Änderungen, die +notwendig waren, um Konflikte mit den anderen Klassen zu vermeiden. Diese +betreffen vor allem die Seitenstile und sind explizit dokumentiert (siehe +\autoref{sec:\LabelBase.pagestyle}, ab +\autopageref{sec:\LabelBase.pagestyle}). Wo \Package{scrletter} nicht explizit +erwähnt ist, gilt dafür alles, was für \Class{scrlttr2} dokumentiert ist, ohne +Änderung. + + +\section{Variablen} +\seclabel{variables}% +\BeginIndexGroup +\BeginIndex{}{Variablen}% + +Neben Optionen, Anweisungen (oder Befehlen), Umgebungen, Zählern und Längen +wurden in \autoref{cha:maincls} für \KOMAScript{} bereits zusätzlich Elemente +eingeführt. Eine typische Eigenschaft eines Elements ist seine Schriftart und +die Möglichkeit, diese zu ändern (siehe \autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}). An dieser Stelle werden nun +zusätzlich Variablen eingeführt. Variablen haben einen +Namen\Index{Variablen>Name}\textnote{Namen}, über den sie angesprochen werden, +und einen Inhalt\Index{Variablen>Inhalt}\textnote{Inhalt}. Der Inhalt einer +Variablen kann zeitlich bzw. räumlich getrennt von ihrer Verwendung gesetzt +werden, so wie der Inhalt einer Anweisung getrennt von ihrer Ausführung +definiert werden kann. Ein Hauptunterschied einer Variablen zu einer Anweisung +besteht darin, dass eine Anweisung normalerweise eine Aktion auslöst, während +der Inhalt einer Variablen normalerweise aus einem Text besteht, der dann von +einer Anweisung ausgegeben wird. Außerdem kann eine Variable zusätzlich eine +Bezeichnung\Index{Variablen>Bezeichnung}\textnote{Bezeichnung} besitzen, die +ebenfalls gesetzt und ausgegeben werden kann. + +Dieser Abschnitt beschränkt sich bewusst auf die Einführung des Begriffs der +Variablen. Die zur Verdeutlichung verwendeten Beispiele sind ohne tiefere +Bedeutung. Konkretere Anwendungsbeispiele gibt es bei der Erläuterung der in +der Klasse und Paket bereits definierten und von ihnen verwendeten Variablen in +den nachfolgenden Abschnitten. \autoref{tab:\LabelBase.variables} gibt eine +Übersicht über alle definierten Variablen. +% +\begin{desclist} + \desccaption{Von \Class{scrlttr2} und \Package{scrletter} unterstützte + Variablen\label{tab:\LabelBase.variables}}% + {Von \Class{scrlttr2} und \Package{scrletter} unterstützte Variablen + (\emph{Fortsetzung})}% + \ventry{addresseeimage}{Anweisungen, die zum Setzen + des Port-Payé-Kopfes bei der Einstellung + \OptionValueRef{\LabelBase}{addrfield}{backgroundimage} oder der + Port-Payé-Anschrift bei der Einstellung + \OptionValueRef{\LabelBase}{addrfield}{image}, verwendet werden + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.addresseeimage})}% + \ventry{backaddress}{Rücksendeadresse für Fensterbriefumschläge + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.backaddress})}% + \ventry{backaddressseparator}{Trennzeichen innerhalb der Rücksendeadresse + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.backaddressseparator})}% + \ventry{ccseparator}{Trennzeichen zwischen Verteilertitel und Verteiler + (\autoref{sec:\LabelBase.document}, + \DescPageRef{\LabelBase.variable.ccseparator})}% + \ventry{customer}{Geschäftszeilenfeld »Kundennummer« + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.customer})}% + \ventry{date}{Datum (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.date})}% + \ventry{emailseparator}{Trennzeichen zwischen E-Mail-Bezeichnung und + E-Mail-Adresse (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.emailseparator})}% + \ventry{enclseparator}{Trennzeichen zwischen Anlagetitel und Anlagen + (\autoref{sec:\LabelBase.document}, + \DescPageRef{\LabelBase.variable.enclseparator})}% + \ventry{faxseparator}{Trennzeichen zwischen Faxbezeichner und Faxnummer + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.faxseparator})}% + \ventry{firstfoot}{% + Seitenfuß\ChangedAt{v3.08}{\Class{scrlttr2}} des Briefbogens + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.firstfoot})}% + \ventry{firsthead}{% + Kopf\ChangedAt{v3.08}{\Class{scrlttr2}} des Briefbogens + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.firsthead})}% + \ventry{fromaddress}{Absenderadresse ohne Absendername + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromaddress})}% + \ventry{frombank}{Bankverbindung des Absenders + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.frombank})}% + \ventry{fromemail}{E-Mail-Adresse des Absenders + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromemail})}% + \ventry{fromfax}{Faxnummer des Absenders + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromfax})}% + \ventry{fromlogo}{Anweisungen zum Setzen des Absenderlogos + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromlogo})}% + \ventry{frommobilephone}{% + \ChangedAt{v3.12}{\Class{scrlttr2}}% + Handynummer des Absenders (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.frommobilephone})}% + \ventry{fromname}{vollständiger Absendername + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromname})}% + \ventry{fromphone}{Telefonnummer des Absenders + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromphone})}% + \ventry{fromurl}{eine URL des Absenders (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromurl})}% + \ventry{fromzipcode}{Postleitzahl des Absenders für den Port-Payé-Kopf bei + \OptionValueRef{\LabelBase}{addrfield}{PP} + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromzipcode})}% + \ventry{invoice}{Geschäftszeilenfeld »Rechnungsnummer« + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.invoice})}% + \ventry{location}{erweiterte Absenderangabe + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.location})}% + \ventry{mobilephoneseparator}{Trennzeichen zwischen Handybezeichner und + Handynummer (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.mobilephoneseparator})}% + \ventry{myref}{Geschäftszeilenfeld »Mein Zeichen« + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.myref})}% + \ventry{nextfoot}{Seitenfuß\ChangedAt{v3.08}{\Class{scrlttr2}} im Seitenstil + \PageStyle{headings}\IndexPagestyle{headings} oder + \PageStyle{myheadings}\IndexPagestyle{myheadings} + (\autoref{sec:\LabelBase.pagestyle}, + \DescPageRef{\LabelBase.variable.nextfoot})}% + \ventry{nexthead}{Kopf\ChangedAt{v3.08}{\Class{scrlttr2}} im Seitenstil + \PageStyle{headings}\IndexPagestyle{headings} oder + \PageStyle{myheadings}\IndexPagestyle{myheadings} + (\autoref{sec:\LabelBase.pagestyle}, + \DescPageRef{\LabelBase.variable.nexthead})}% + \ventry{phoneseparator}{Trennzeichen zwischen Telefonbezeichner und + Telefonnummer (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.phoneseparator})}% + \ventry{place}{Ort (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.place})}% + \ventry{placeseparator}{Trennzeichen zwischen Ort und Datum + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.placeseparator})}% + \ventry{PPdatamatrix}{Anweisungen zum Setzen einer Data-Matrix bei der + Einstellung \OptionValueRef{\LabelBase}{addrfield}{PP} + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.PPdatamatrix})}% + \ventry{PPcode}{Code zur Identifizierung des Absenders bei Einstellung + \OptionValueRef{\LabelBase}{addrfield}{PP} + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.PPcode})}% + \ventry{signature}{Signatur unter Unterschrift und Grußformel + (\autoref{sec:\LabelBase.closing}, + \DescPageRef{\LabelBase.variable.signature})}% + \ventry{specialmail}{Versandart (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.specialmail})}% + \ventry{subject}{Betreff (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.subject})}% + \ventry{subjectseparator}{Trennzeichen zwischen Betreff"|titel und Betreff + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.subjectseparator})}% + \ventry{title}{Brief"|titel (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.title})}% + \ventry{toaddress}{Empfängeradresse ohne Empfängername + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.toaddress})}% + \ventry{toname}{vollständiger Empfängername + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.toname})}% + \ventry{yourmail}{Geschäftszeilenfeld »Ihr Schreiben« + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.yourmail})}% + \ventry{yourref}{Geschäftszeilenfeld »Ihr Zeichen« + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.yourref})}% + \ventry{zipcodeseparator}{Trennzeichen zwischen der Bezeichnung und dem + Inhalt der Variablen \DescRef{\LabelBase.variable.fromzipcode} + (\autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.zipcodeseparator})}% +\end{desclist} + + +\begin{Declaration} + \Macro{setkomavar} + \Parameter{Name}\OParameter{Bezeichnung}\Parameter{Inhalt} + \Macro{setkomavar*}\Parameter{Name}\Parameter{Bezeichnung} +\end{Declaration} +Mit der Anweisung \Macro{setkomavar} wird der \PName{Inhalt} der Variablen +\PName{Name} gesetzt. Dabei kann per optionalem Argument gleichzeitig auch die +\PName{Bezeichnung} der Variablen geändert werden. Demgegenüber kann mit der +Sternvariante \Macro{setkomavar*} auch nur die \PName{Bezeichnung} der +Variablen \PName{Name} gesetzt werden. +\begin{Example} + In Briefen ist es üblich, den Absender im Briefkopf stehen zu haben. Dazu + muss \KOMAScript{} den Absender aber erst einmal mit Namen kennen. Für + »Peter Musterfrau« ginge das einfach mit: +\begin{lstcode} + \setkomavar{fromname}{Peter Musterfrau} +\end{lstcode} + Die voreingestellte Bezeichnung für den Namen des Absenders ist + »Von«. Angenommen, Herr Musterfrau will aber an den Stellen, an denen + \KOMAScript{} diese Bezeichnung verwendet, lieber »Absender« haben, so + müsste er zusätzlich +\begin{lstcode} + \setkomavar*{fromname}{Absender} +\end{lstcode} + setzen oder aber die beiden Angaben zu einer Anweisung zusammenfassen: +\begin{lstcode} + \setkomavar{fromname}[Absender]{Peter Musterfrau} +\end{lstcode} + Damit schlägt er sozusagen zwei Fliegen mit einer Klappe. +\end{Example} +Übrigens kann mit einem leeren obligatorischen Argument \PName{Inhalt} +der Inhalt der Variable gelöscht werden. Selbstverständlich kann in +gleicher Weise mit einem leeren Argument \PName{Bezeichnung} auch die +Bezeichnung der Variablen gelöscht werden. +\begin{Example} + Angenommen, Herr Musterfrau will gar keine Bezeichnung für den Namen des + Absenders haben. Dann könnte er diese entweder für sich mit: +\begin{lstcode} + \setkomavar*{fromname}{} +\end{lstcode} + löschen. Er könnte aber auch wieder zwei Fliegen mit einer Klappe + schlagen und +\begin{lstcode} + \setkomavar{fromname}[]{Peter Musterfrau} +\end{lstcode} + verwenden. Dadurch wird gleichzeitig der Inhalt der Variablen gesetzt und + ihre Bezeichnung gelöscht. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{usekomavar}\OParameter{Anweisung}\Parameter{Name} + \Macro{usekomavar*}\OParameter{Anweisung}\Parameter{Name} +\end{Declaration} +In\ChangedAt{v2.9i}{\Class{scrlttr2}} manchen Fällen wird es notwendig sein, +selbst auf den Inhalt oder die Bezeichnung einer Variablen zuzugreifen, dies +also nicht allein der Klasse zu überlassen. Das gilt insbesondere dann, wenn +Sie eigene Variablen definiert haben, die nicht zur Geschäftszeile +hinzugefügt werden. Mit der Anweisung \Macro{usekomavar} können Sie auf den +Inhalt der Variablen \PName{Name} zugreifen, während Sie mit der Sternvariante +\Macro{usekomavar*} ihre Bezeichnung erhalten. Näheres zur Definition eigener +Variablen ist \autoref{sec:scrlttr2-experts.variables}, +\DescPageRef{scrlttr2-experts.cmd.newkomavar} zu entnehmen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifkomavar}\Parameter{Name}\Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Mit\ChangedAt{v3.03}{\Class{scrlttr2}} dieser Anweisung kann man feststellen, +ob eine Variable definiert ist. Der \PName{Dann-Teil} wird nur dann +ausgeführt, wenn die Variable existiert. Dabei wird der Inhalt der Variablen +nicht getestet, kann also auch leer sein. Der \PName{Sonst-Teil} wird hingegen +ausgeführt, wenn die Variable nicht existiert. Solche Tests können +beispielsweise dann sinnvoll sein, wenn eigene Variablen in einer +\File{lco}-Datei\Index{lco-Datei=\File{lco}-Datei} (siehe +\autoref{sec:\LabelBase.lcoFile} ab \autopageref{sec:\LabelBase.lcoFile}) +definiert werden und in einer anderen \File{lco}-Datei diese Variable nur dann +verwendet werden soll, wenn sie existiert. +\EndIndexGroup + + +\begin{Declaration} + \Macro{ifkomavarempty} + \Parameter{Name}\Parameter{Dann-Teil}\Parameter{Sonst-Teil} + \Macro{ifkomavarempty*} + \Parameter{Name}\Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Mit\ChangedAt{v2.9i}{\Class{scrlttr2}} Hilfe dieser Anweisungen kann man +feststellen, ob der Inhalt oder die Bezeichnung einer Variablen leer +ist oder nicht. Der \PName{Dann-Teil} wird nur dann ausgeführt, +wenn der expandierte Inhalt oder die expandierte Bezeichnung der +Variablen \PName{Name} leer ist. Anderenfalls wird der +\PName{Sonst-Teil} ausgeführt. Die Sternvariante der Anweisung +bezieht sich dabei auf die Bezeichnung der Variablen, während die +normale Variante den Inhalt behandelt.% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Pseudolängen} +\seclabel{pseudoLength} +\BeginIndexGroup +\BeginIndex{}{Pseudolängen} + +Längen werden bei \LaTeX{} mit den drei Anweisungen +\Macro{newlength}\IndexCmd{newlength}, \Macro{setlength}\IndexCmd{setlength} +und \Macro{addtolength}\IndexCmd{addtolength} verarbeitet. Sehr viele Pakete +nutzen aber auch Makros, also Anweisungen, um Längen zu +speichern. \KOMAScript{} erweitert dieses Verfahren um die Möglichkeit, solche +in Makros gespeicherten Längen mit ähnlichen Anweisungen zu verarbeiten wie +echte Längen. Diese eigentlich in Makros abgelegten Längen heißen bei +\KOMAScript{} daher Pseudolängen. + +Eine Liste aller in \Class{scrlttr2} definierten Pseudolängen findet sich in +\autoref{tab:scrlttr2-experts.pseudoLengths}, +\autopageref{tab:scrlttr2-experts.pseudoLengths}. Eine grafische Darstellung +der Bedeutungen der wichtigsten Pseudolängen des Briefbogens ist +\autoref{fig:scrlttr2-experts.pseudoLengths}, +\autopageref{fig:scrlttr2-experts.pseudoLengths} zu entnehmen. Die verwendeten +Maße sind dabei an die Voreinstellungen von \Class{scrlttr2} angelehnt. Nähere +Beschreibungen zu den einzelnen Pseudolängen finden sich in den einzelnen +Abschnitten dieses Kapitels. + +Da der Anwender normalerweise keine eigenen Pseudolängen definieren muss, wird +dieser Teil nicht hier, sondern im Expertenteil in +\autoref{sec:scrlttr2-experts.pseudoLengths}, +\DescPageRef{scrlttr2-experts.cmd.newplength} behandelt. Ebenso ist das +Setzen von Pseudolängen eher dem fortgeschrittenen Anwender vorbehalten. Also +wird auch dies im Abschnitt für Experten ab +\DescPageRef{scrlttr2-experts.cmd.setplength} erklärt. + +Bitte beachten\textnote{Achtung!} Sie unbedingt, dass die Pseudolängen zwar +intern als Makros implementiert sind, bei den Befehlen zur Nutzung der +Pseudolängen jedoch nur die Namen anzugeben sind. Diese werden wie die Namen +von \LaTeX-Zählern und im Gegensatz zu Makros oder echten Längen ohne +umgekehrten Schrägstrich geschrieben! + +\begin{Declaration} + \Macro{useplength}\Parameter{Name} +\end{Declaration} +Mit Hilfe dieser Anweisung wird auf den Wert der Pseudolänge mit dem +angegebenen \PName{Namen} zugegriffen. Dies ist eine der wenigen +Benutzeranweisung rund um Pseudolängen. Natürlich kann diese Anweisung dennoch +auch innerhalb einer \File{lco}-Datei\Index{lco-Datei=\File{lco}-Datei} (siehe +\autoref{sec:\LabelBase.lcoFile} ab \autopageref{sec:\LabelBase.lcoFile}) +verwendet werden.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setlengthtoplength} + \OParameter{Faktor}\Parameter{Länge}\Parameter{Pseudolänge} + \Macro{addtolengthplength} + \OParameter{Faktor}\Parameter{Länge}\Parameter{Pseudolänge} +\end{Declaration} +Mit der Anweisung +\Macro{setlengthtoplength}\important{\Macro{setlengthtoplength}} kann man +einer echten \PName{Länge} das Vielfache einer \PName{Pseudolänge} zuweisen. +Allerdings wird hier ein \PName{Faktor} nicht direkt der \PName{Pseudolänge} +vorangestellt, sondern als optionales Argument übergeben. Man sollte diese +Anweisung auch verwenden, wenn man einer \PName{Länge} den negativen Wert +einer \PName{Pseudolänge} zuweisen will. % +\iffalse % Umbruchkorrektur + Als \PName{Faktor} kann dann wahlweise ein Minuszeichen oder \PValue{-1} + verwendet werden. +% +\else % + \PName{Faktor} ist dann \PValue{-1}. +% +\fi +% +Die Anweisung\important{\Macro{addtolengthplength}} \Macro{addtolengthplength} +arbeitet ähnlich. Nur wird die mit \PName{Faktor} multiplizierte +\PName{Pseudolänge} zur \PName{Länge} addiert.% +% +\EndIndexGroup +% +\EndIndexGroup + +\LoadCommonFile{options} % \section{Frühe oder späte Optionenwahl} + +\LoadCommonFile{compatibility} % \section{Kompatibilität zu früheren Versionen von \KOMAScript} + +%\iffree{}{\vfill}% Umbruchoptimierung! + +\LoadCommonFile{draftmode} % \section{Entwurfsmodus} + +\LoadCommonFile{typearea} % \section{Seitenauf"|teilung} + +Die Unterscheidung zwischen ein- und doppelseitigem Satz ist bei Briefen +jedoch in der Regel nicht sinnvoll. Da Briefe normalerweise nicht gebunden +werden, betrachtet man bei Briefen jede Seite für sich. Das gilt auch dann, +wenn ausnahmsweise Vorder- oder Rückseite bedruckt werden. Daher spielt bei +Briefen normalerweise auch der vertikale Ausgleich keine Rolle. Sollten Sie +diesen trotzdem benötigen +\iffalse% +% Umbruchkorrekturtext +oder wissen wollen, was das ist, % +\fi% +sei auf die in \autoref{sec:maincls.typearea}, +\DescPageRef{maincls.cmd.flushbottom} erklärten Anweisungen +\DescRef{maincls.cmd.raggedbottom} und \DescRef{maincls.cmd.flushbottom} +verwiesen.% +% +\EndIndexGroup + + +\section{Genereller Aufbau eines Briefdokuments} +\seclabel{document} +\BeginIndexGroup +\BeginIndex{}{Briefe>Aufbau} + +Der generelle Aufbau eines Briefdokuments weicht etwas vom Aufbau eines +normalen Dokuments ab. Während ein Buchdokument normalerweise nur ein Buch +enthält, kann ein einzelnes Briefdokument mehrere Briefe enthalten. Wie in +\autoref{fig:\LabelBase.document} veranschaulicht wird, besteht ein +Briefdokument aus einem Vorspann, den einzelnen Briefen und dem Abschluss. + +\begin{figure} + \KOMAoptions{captions=bottombeside}% + \setcapindent{0pt}% + \begin{captionbeside}[{Genereller Aufbau eines Briefdokuments mit beliebig + vielen einzelnen Briefen}]{% + Genereller Aufbau eines Briefdokuments mit + beliebig vielen einzelnen Briefen (den Aufbau eines einzelnen + Briefs zeigt \autoref{fig:\LabelBase.letter})% + \label{fig:\LabelBase.document}}[l] + \begin{minipage}[b]{.667\linewidth} + \centering\small\setlength{\fboxsep}{1.5ex}% + \addtolength{\linewidth}{-\dimexpr2\fboxrule+2\fboxsep\relax}% + \fbox{\parbox{\linewidth}{\raggedright% + \Macro{documentclass}\OParameter{\dots}\PParameter{scrlttr2}\\ + \dots\\ + {\centering\emph{Einstellungen für alle Briefe}\\} + \dots\\ + \Macro{begin}\PParameter{document}\\ + \dots\\ + {\centering\emph{Einstellungen für alle Briefe}\\} + \dots\\ + }}\\ + \fbox{\parbox{\linewidth}{\raggedright% + \Macro{begin}\PParameter{letter}\Parameter{Empfänger}\\ + \dots\\ + {\centering\emph{Inhalt eines einzelnen Briefes}\\} + \dots\\ + \Macro{end}\PParameter{letter}\\ + }}\\[2pt] + \parbox{\linewidth}{\raggedright\vspace{-.5ex}\vdots\vspace{1ex}}\\ + \fbox{\parbox{\linewidth}{\raggedright% + \Macro{end}\PParameter{document}\\ + }}\\[\dimexpr\fboxsep+\fboxrule\relax] + \end{minipage} + \end{captionbeside} +\end{figure} + +Der Vorspann beinhaltet dabei alle Einstellungen, die generell alle Briefe +betreffen. Diese können in den Einstellungen der einzelnen Briefe jedoch +zumindest teilweise überschrieben werden. Die einzige Einstellung, die derzeit +nicht innerhalb eines einzelnen Briefes überschrieben werden kann, ist die +Version von \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}}, zu der Kompatibilität +erreicht werden soll (siehe Option \DescRef{\LabelBase.option.version} in +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}). + +Bei Verwendung von \Package{scrletter}\important{scrletter} ändert sich +lediglich, dass eine andere Klasse geladen und dafür zusätzlich +\DescRef{\LabelBase.cmd.usepackage}\PParameter{scrletter} noch vor den +Einstellungen für alle Briefe einzufügen ist. Für das Setzen von Optionen für +\Package{scrletter} sei auf \autoref{sec:\LabelBase.options}, ab +\autopageref{sec:\LabelBase.options} verwiesen. + +Ich empfehle, vor \Macro{begin}\PParameter{document} nur allgemeine +Einstellungen wie das Laden von Paketen und das Setzen von Optionen +vorzunehmen. Alle Einstellungen, die das Setzen einer Variablen oder sonstige +Textangaben beinhalten, sollten nach \Macro{begin}\PParameter{document} +vorgenommen werden. Dies empfiehlt\textnote{Tipp!} sich umso mehr, wenn das +Babel-Paket\IndexPackage{babel} (siehe \cite{package:babel}) verwendet wird +oder sprachabhängige Variablen von \Class{scrlttr2} oder \Package{scrletter} +verändert werden sollen. + +Der Abschluss besteht in der Regel nur aus +\Macro{end}\PParameter{document}. Natürlich können Sie dort aber auch +zusätzliche Kommentare einfügen. + +\begin{figure} + \KOMAoptions{captions=bottombeside}% + \setcapindent{0pt}% + \begin{captionbeside}[{Genereller Aufbau eines einzelnen Briefes innerhalb + eines Briefdokuments}]{Genereller Aufbau eines einzelnen Briefes + innerhalb eines Briefdokuments (siehe + \autoref{fig:\LabelBase.document})% + \label{fig:\LabelBase.letter}}[l] + \begin{minipage}[b]{.667\linewidth}% + \centering\small\setlength{\fboxsep}{1.5ex}% + \addtolength{\linewidth}{-\dimexpr2\fboxrule+2\fboxsep\relax}% + \fbox{\parbox{\linewidth}{\raggedright% + \Macro{begin}\PParameter{letter}% + \OParameter{Optionen}\Parameter{Empfänger}\\ + \dots\\[\dp\strutbox] + {\centering\emph{Einstellungen für diesen Brief}\\} + \dots\\ + \DescRef{\LabelBase.cmd.opening}\Parameter{Anrede}\\ + }}\\[1pt] + \fbox{\parbox{\linewidth}{\raggedright% + \dots\\[\dp\strutbox] + {\centering\emph{Brief"|text}\\} + \dots\\ + }}\\[1pt] + \fbox{\parbox{\linewidth}{\raggedright% + \DescRef{\LabelBase.cmd.closing}\Parameter{Grußformel}\\ + \DescRef{\LabelBase.cmd.ps}\\ + \dots\\[\dp\strutbox] + {\centering\emph{Postscriptum}\\} + \dots\\ + \DescRef{\LabelBase.cmd.encl}\Parameter{Anlagen}\\ + \DescRef{\LabelBase.cmd.cc}\Parameter{Verteiler}\\ + \Macro{end}\PParameter{letter}\\ + }}\\[\dimexpr\fboxsep+\fboxrule\relax] + \end{minipage} + \end{captionbeside} +\end{figure} + +Wie in \autoref{fig:\LabelBase.letter} verdeutlicht wird, bestehen die +einzelnen Briefe wiederum aus einer Einleitung, dem eigentlichen Brief"|text +und einem Schlussteil. In der Einleitung werden alle Einstellungen +vorgenommen, die nur für diesen einen Brief gelten sollen. Entscheidend ist +hierbei, dass diese Einleitung immer mit +\DescRef{\LabelBase.cmd.opening}\IndexCmd{opening} endet. Ebenso beginnt der +Schlussteil immer mit +\DescRef{\LabelBase.cmd.closing}\IndexCmd{closing}. Gegebenenfalls können die +Argumente \PName{Anrede} und \PName{Grußformel} der beiden Anweisungen leer +bleiben, die Anweisungen müssen jedoch gesetzt werden und haben immer ein +Argument. + +Es soll an dieser Stelle nicht verschwiegen werden, dass zwischen den +einzelnen Briefen weitere Einstellungen getroffen werden können. Diese +gelten dann für alle nachfolgenden Briefe. Um Briefdokumente +übersichtlich und wartbar zu halten, sollte man sich jedoch gut +überlegen, ob man zwischen die Briefe tatsächlich weitere generelle +Einstellungen mit beschränkter Gültigkeit setzen will. Ich kann dies +nicht empfehlen% +\iffalse +% Umbruchergänzungstext +, da die Suche nach Einstellungen dadurch erschwert wird% +\fi +% +. Dagegen spricht bei Verwendung von \Package{scrletter2} nichts dagegen, vor, +zwischen oder nach Briefen weitere Dokumentteile einzufügen, die nicht im +Briefkontext stehen sollen. So kann man beispielsweise Anschreiben und +Lebenslauf in einem Dokument zusammenfassen. + +\begin{Declaration} + \begin{Environment}{letter}\OParameter{Optionen}\Parameter{Empfänger} + \end{Environment} +\end{Declaration} +\BeginIndex{}{Anschrift}% +Die Briefumgebung \Environment{letter} ist einer der zentralen Dreh- und +Angelpunkte der Briefklasse und des Briefpakets. Als +Besonderheit\textnote{\KOMAScript{} vs. Standardklassen} kann man bei +\Class{scrlttr2} und \Package{scrletter} der Briefumgebung zusätzliche +\PName{Optionen} mit auf den Weg geben. Diese werden dann intern per +\DescRef{\LabelBase.cmd.KOMAoptions}-Anweisung ausgeführt. + +Der \PName{Empfänger} wird als obligatorischer Parameter an die Umgebung +übergeben. Dabei\textnote{Achtung!} dient der doppelte Backslash als +Trennzeichen zwischen einzelnen Teilen der Anschrift. Diese einzelnen Teile +werden im Anschriftfeld als einzelne Zeilen ausgegeben. Dennoch sollte der +doppelte Backslash hier nicht als fester Zeilenumbruch verstanden +werden. Absätze, vertikaler Leerraum und Ähnliches sind in der Anschrift nicht +erlaubt. Sie können zu unerwarteten Effekten und Fehlermeldungen führen. Dies +ist übrigens bei der Standardbriefklasse genauso. + +\begin{Example} + \phantomsection\label{desc:\LabelBase.env.letter.example}% + Angenommen, jemand wollte einen Brief an Petra Mustermann schreiben. + Ein minimalistisches Briefdokument dafür würde so aussehen: +\begin{lstcode} + \documentclass[version=last]{scrlttr2} + \usepackage[ngerman]{babel} + \begin{document} + \begin{letter}{Petra Mustermann\\ + Vor dem Berg 1\\ + 12345 Musterhausen} + \end{letter} + \end{document} +\end{lstcode} + Allerdings\textnote{Achtung!} würde dabei noch keinerlei Ausgabe + entstehen. Es würde noch nicht einmal die Anschrift auf dem Briefbogen + ausgegeben. Warum das so ist, erfahren Sie bei der Erklärung zur Anweisung + \DescRef{\LabelBase.cmd.opening} auf \DescPageRef{\LabelBase.cmd.opening}. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AtBeginLetter}\Parameter{Anweisungen} + \Macro{AtEndLetter}\Parameter{Anweisungen} +\end{Declaration} +\iftrue% Umbruchvarianten +Wie\textnote{Haken}\Index[indexmain]{Haken} in \cite{latex:clsguide} erwähnt, +gibt es bei \LaTeX{} die Möglichkeit, zu bestimmten Gelegenheiten während des +\LaTeX-Laufs eines Dokuments zusätzliche \PName{Anweisungen} ausführen zu +lassen. Zu diesem Zweck stellt der \LaTeX-Kern beispielsweise die Anweisungen +\Macro{AtEndOfClass}\IndexCmd{AtEndOfClass} und +\Macro{AtBeginDocument}\IndexCmd{AtBeginDocument} zur Verfügung. Man nennt +solche Eingriffspunkte auch \emph{hooks}\Index{hook=\emph{hook}}, also +Haken. Die Klasse \Class{scrlttr2} und das Paket \Package{scrletter} fügen +zwei weitere Haken hinzu, die mit \Macro{AtBeginLetter} und +\Macro{AtEndLetter}\ChangedAt{v2.95}{\Class{scrlttr2}} mit Inhalt versehen +werden können. Wie man schon daran erkennt, dass die \LaTeX-Kern-Anweisungen +für Haken nicht in \cite{latex:usrguide} sondern in \cite{latex:clsguide} +dokumentiert sind, sind diese Anweisungen eigentlich eher für Paket- und +Klassenautoren gedacht. Bei der Briefklasse und dem Briefpaket kann es jedoch +sinnvolle Anwendungen für die beiden neuen Haken auch auf Benutzerebene +geben.\Index[indexmain]{Haken} Das folgende Beispiel zeigt dies.% +% +\begin{Example} + Angenommen, Sie haben mehrere Briefe in einem Dokument. Sie verwenden + außerdem eine eigene Anweisung, um in den Briefen einen Fragebogen + zu setzen. Dabei werden die Fragen automatisch mit Hilfe eines + Zählers nummeriert. Da \KOMAScript{} dieser Zähler nicht bekannt + ist, würde er auch im Gegensatz etwa zur Seitenzahl am Anfang eines + neuen Briefes nicht zurückgesetzt. Wenn jeder Brief zehn Fragen + beinhaltet, hätte damit die erste Frage im fünften Brief die Nummer + 41 statt der Nummer 1. Sie lösen das, indem Sie \KOMAScript{} + mitteilen, dass am Anfang jedes Briefes der Zähler zurückgesetzt + werden soll: +\begin{lstcode} + \newcounter{Frage} + \newcommand{\Frage}[1]{% + \par + \refstepcounter{Frage}% + \noindent + \begin{tabularx}{\textwidth}{l@{}X} + \theFrage:~ & #1\\ + \end{tabularx}% + }% + \AtBeginLetter{\setcounter{Frage}{0}} +\end{lstcode} + Damit hat dann auch die erste Frage im 1001.~Brief wieder die Nummer + Eins. Die hier angegebene Definition benötigt übrigens das + \Package{tabularx}-Paket\IndexPackage{tabularx} (siehe + \cite{package:tabularx}). +\end{Example} +\else% + Wie\Index[indexmain]{Haken} in \cite{latex:clsguide} erwähnt, gibt es bei + \LaTeX{} die Möglichkeit, während des \LaTeX-Laufs eines Dokuments zusätzliche + \PName{Anweisungen} ausführen zu lassen. Zu diesem Zweck stellt der + \LaTeX-Kern die Anweisungen \Macro{AtEndOfClass}\IndexCmd{AtEndOfClass} und + \Macro{AtBeginDocument}\IndexCmd{AtBeginDocument} zur Verfügung. Man nennt + solche Eingriffspunkte auch \emph{hooks}\Index{hook=\emph{hook}}, also + Haken. \KOMAScript{} fügt zwei weitere Haken hinzu, die mit + \Macro{AtBeginLetter} und + \Macro{AtEndLetter}\ChangedAt{v2.95}{\Class{scrlttr2}} mit Inhalt versehen + werden können. Wie man schon daran erkennt, dass die \LaTeX-Kern-Anweisungen + für Haken nicht in \cite{latex:usrguide} sondern in \cite{latex:clsguide} + dokumentiert sind, sind diese Anweisungen eigentlich eher für Paket- und + Klassenautoren gedacht. Bei Briefen kann es jedoch sinnvolle Anwendungen für + die beiden neuen Haken auch auf Benutzerebene geben.\Index[indexmain]{Haken}% + % + \begin{Example} + Angenommen, Sie haben mehrere Briefe in einem Dokument und verwenden + eine eigene Anweisung, um in den Briefen einen Fragebogen + zu setzen. Die Fragen werden mit Hilfe eines + Zählers nummeriert. Da \KOMAScript{} diesen Zähler nicht kennt, + würde er auch im Gegensatz zur Seitenzahl am Anfang eines + neuen Briefes nicht zurückgesetzt. Bei 10 Fragen je Brief, hätte damit die + erste Frage im fünften Brief die Nummer 41 statt der Nummer 1. Sie lösen + das, indem Sie am Anfang jedes Briefes den Zähler zurücksetzen lassen: +\begin{lstcode} + \newcounter{Frage} + \newcommand{\Frage}[1]{% + \refstepcounter{Frage}\par + \noindent\begin{tabularx}{\textwidth}{l@{}X} + \theFrage:~ & #1\\ + \end{tabularx}% + }% + \AtBeginLetter{\setcounter{Frage}{0}} +\end{lstcode} + Damit hat dann auch die erste Frage im 1001.~Brief wieder die Nummer + Eins. Die hier angegebene Definition benötigt übrigens das + \Package{tabularx}-Paket\IndexPackage{tabularx} (siehe + \cite{package:tabularx}). + \end{Example}% +\fi +% +\EndIndexGroup + + +\begin{Declaration} + \Counter{letter} + \Macro{thisletter} + \Macro{letterlastpage} +\end{Declaration} +Für\ChangedAt{v3.19}{\Class{scrlttr2}\and \Package{scrletter}} den Fall, dass +sich mehrere Briefe in einem Dokument befinden, werden die Briefe intern von +\KOMAScript{} durchnummeriert. Hierfür ist seit Version~3.19 der Zähler +\Counter{letter} definiert, der mit jedem \Macro{begin}\PParameter{letter} +referenzierbar um eins erhöht wird. +\begin{Example} + Kommen wir auf das Beispiel zu \DescRef{\LabelBase.cmd.AtBeginLetter} + zurück. Statt den Zähler explizit innerhalb von + \Macro{begin}\PParameter{letter} zurückzusetzen, kann dies auch implizit + erfolgen, indem der Zähler \Counter{Frage} abhängig von \Counter{letter} + definiert wird: +\begin{lstcode} + \newcounter{Frage}[letter] + \newcommand{\Frage}[1]{% + \par + \refstepcounter{Frage}% + \noindent + \begin{tabularx}{\textwidth}{l@{}X} + \theFrage:~ & #1\\ + \end{tabularx}% + }% +\end{lstcode} + Damit wird der Zähler automatisch zu Beginn jedes Briefs wieder auf Null + zurück gesetzt, so dass die erste Frage in jedem Brief wieder mit der Nummer + Eins beginnt. +\end{Example} + +Will man sich den aktuellen Wert von \Counter{letter} ausgeben lassen, so ist +das wie gewohnt mit \Macro{theletter} möglich. Wie bereits erwähnt, ist der +Zähler aber auch referenzierbar. Das bedeutet, man könnte am Anfang eines +Briefes mit \Macro{label}\Parameter{Labelname} ein Label +setzen und mit \Macro{ref}\Parameter{Labelname} dann an beliebiger Stelle im +Dokument darauf verweisen. Innerhalb des Briefes selbst erhält man dasselbe +Ergebnis auch ganz ohne Label mit \Macro{thisletter}. + +Für Label innerhalb von Serienbriefen ist es notwendig, diesen einen über alle +Briefe hinweg eindeutigen Namen zu geben. Auch dafür kann \Macro{thisletter} +verwendet werden. Intern arbeitet \KOMAScript{} für diesen Zweck ebenfalls mit +\Macro{thisletter}, um auf der letzten Seite eines jeden Briefes ein Label zu +setzen. Dadurch ist es möglich, mit +\Macro{letterlastpage}\IndexCmd{label}\IndexCmd{pageref} jederzeit innerhalb +des Briefes die Nummer der letzten Seite des Briefes auszugeben. Da +\Macro{letterlastpage} über \Macro{label} und \Macro{pageref} arbeitet, ist +die Ausgabe allerdings erst nach mehreren \LaTeX-Läufen -- meist zwei oder +drei -- gültig. Achten Sie gegebenenfalls auf entsprechende +\emph{Rerun}-Meldungen in der Terminal-Ausgabe oder der \File{log}-Datei.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{opening}\Parameter{Anrede} +\end{Declaration} +Dies ist eine der wichtigsten Anweisungen in Briefen. Vordergründig +wird damit die \PName{Anrede}\Index{Anrede}, beispielsweise »Sehr +geehrte Frau~\dots«, gesetzt. Tatsächlich\textnote{Achtung!} setzt diese +Anweisung aber auch alle Elemente des Briefbogens wie die +Faltmarken\Index{Faltmarke}, den Briefkopf\Index{Briefkopf}, die +Anschrift\Index{Anschrift}, die Absenderergänzung, die +Geschäftszeile\Index{Geschaeftszeile=Geschäftszeile}, den Titel\Index{Titel}, +den Betreff\Index{Betreff} und den +Seitenfuß\Index{Kopf}\Index{Fuss=Fuß}. Kurz\textnote{Ohne Anrede kein Brief!} +gesagt: ohne Anrede kein Brief. Soll tatsächlich einmal ein Brief ohne Anrede +gesetzt werden, so muss eben das Argument von \Macro{opening} leer bleiben. + +\begin{Example} + Kommen wir auf das Beispiel von + \DescPageRef{\LabelBase.env.letter.example} zurück. Wird dieses + um eine Anrede ergänzt, dann ergibt sich aus + \lstinputcode[xleftmargin=1em]{letter-0.tex} + der Briefbogen von \autoref{fig:\LabelBase.letter-0}. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Beispiel: Brief mit + Anschrift und Anrede}]{Ergebnis eines minimalistischen Briefes nur mit + Anschrift und Anrede (Datum und Faltmarken entstammen den + Voreinstellungen für DIN-Briefe)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-0}} + \end{captionbeside} + \label{fig:\LabelBase.letter-0} + \end{figure} +\end{Example} +\iffalse % Umbruchkorrekturtext +\begin{Explain} + Bei\textnote{Tipp!} maschinell erstellten Briefen wurde früher meist auf + eine Anrede verzichtet, da individualisierte Serienbriefe kaum möglich + waren. Heute sind persönliche Anreden auch bei Massensendungen üblich.% +\end{Explain}% +\fi +\EndIndexGroup + + +\begin{Declaration} + \Macro{closing}\Parameter{Grußfloskel} +\end{Declaration} +Mit der Anweisung \Macro{closing} wird in erster Linie die +\PName{Grußfloskel}\Index{Gruss=Gruß}\Index{Schlussgruss=Schlussgruß} +gesetzt. Diese kann auch mehrzeilig sein. Die einzelnen Zeilen sollten dann +mit doppeltem Backslash voneinander getrennt werden. Absätze innerhalb der +\PName{Grußfloskel} sind jedoch nicht gestattet. + +Darüber hinaus setzt diese Anweisung aber auch noch gleich den Inhalt der +Variablen \DescRef{\LabelBase.variable.signature} als Signatur. Näheres zur +Signatur und deren Konfiguration ist \autoref{sec:\LabelBase.closing} ab +\DescPageRef{\LabelBase.variable.signature} zu entnehmen. + +\begin{Example} + Erweitern wir unser Beispiel um einige Zeilen Brieftext und eine Grußfloskel + zu: + \lstinputcode[xleftmargin=1em]{letter-1.tex} + Damit sieht das Ergebnis wie in \autoref{fig:\LabelBase.letter-1} aus. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Beispiel: Brief mit Anschrift, + Anrede, Text und Grußfloskel}]{Ergebnis eines kleinen + Briefes mit Anschrift, Anrede, Text und Grußfloskel (Datum und + Faltmarken entstammen den Voreinstellungen für DIN-Briefe)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-1}} + \end{captionbeside} + \label{fig:\LabelBase.letter-1} + \end{figure} +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{ps} +\end{Declaration}% +Diese Anweisung schaltet lediglich auf das +Postskriptum\Index{Postskriptum} um. Dazu wird ein neuer Absatz +begonnen und ein vertikaler Abstand -- in der Regel zur Signatur -- +eingefügt. Auf die Anweisung \Macro{ps} kann beliebiger Text folgen. +Dabei muss der Anwender auch selbst entscheiden, ob er den Nachsatz +etwa mit der Abkürzung »PS:«, die übrigens ohne Punkt gesetzt wird, +beginnen will. \KOMAScript{} setzt diese Abkürzung weder +automatisch noch optional. + +\begin{Example} + Unser Beispielbrief, um ein Postskriptum erweitert, + \lstinputcode[xleftmargin=1em]{letter-2.tex} + sieht dann wie in \autoref{fig:\LabelBase.letter-2} aus. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Beispiel: Brief mit Anschrift, + Anrede, Text, Grußfloskel und Postskriptum}]{Ergebnis eines kleinen + Briefes mit Anschrift, Anrede, Text, Grußfloskel und Postskriptum + (Datum und Faltmarken entstammen den Voreinstellungen für + DIN-Briefe)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-2}} + \end{captionbeside} + \label{fig:\LabelBase.letter-2} + \end{figure} +\end{Example} + +\begin{Explain}% + Als Briefe noch von Hand geschrieben wurden, war das Postskriptum + sehr beliebt. Es handelte sich bei diesen Nachsätzen ursprünglich um + Angaben, die im eigentlichen Brief vergessen wurden. Bei Briefen, + die mit \LaTeX{} geschrieben werden, ist es natürlich einfach, + Vergessenes nachträglich in den Brief einzuarbeiten. % +\iffalse % Umbruchkorrektur + Trotzdem ist das Postskriptum noch immer sehr beliebt, kann man damit doch + sehr schön noch einmal auf ganz andere äußerst wichtige oder eigentlich + ganz unwichtige Dinge hinweisen.% +\fi +\iftrue % Umbruchkorrektur + Heutzutage verwendet man das Postskriptum dagegen eher für + Hinweise, die mit dem eigentlichen Briefinhalt wenig zu tun haben. +\fi +\end{Explain} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{cc}\Parameter{Verteiler} + \Variable{ccseparator} +\end{Declaration} +Ein \PName{Verteiler}\Index{Verteiler} kann mit der Anweisung \Macro{cc} +gesetzt werden. Der \PName{Verteiler} wird der Anweisung dabei als Argument +übergeben. Wenn der \PName{Inhalt} der Variablen +\Variable{ccseparator}\Index{Trennzeichen} nicht leer ist, wird dem +\PName{Verteiler} die \PName{Bezeichnung} und der \PName{Inhalt} dieser +Variablen vorangestellt. Der \PName{Verteiler} selbst wird dann um die +entsprechende Breite eingerückt ausgegeben. Es empfiehlt\textnote{Tipp!} +sich, den \PName{Verteiler} \Macro{raggedright}\IndexCmd{raggedright} zu +setzen und die einzelnen Angaben durch doppelten Backslash voneinander zu +trennen. +\begin{Example} + Der Beispielbrief soll dieses Mal nicht nur an die Vorsitzende, sondern mit + Verteiler auch an alle Mitglieder des Vereins gehen: + \lstinputcode[xleftmargin=1em]{letter-3.tex}% + Das Ergebnis ist in \autoref{fig:\LabelBase.letter-3} zu sehen. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Beispiel: Brief mit Anschrift, + Anrede, Text, Grußfloskel, Postskriptum und Verteiler}]{Ergebnis eines + kleinen Briefes mit Anschrift, Anrede, Text, Grußfloskel, Postskriptum + und Verteiler (Datum und Faltmarken entstammen den Voreinstellungen + für DIN-Briefe)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-3}} + \end{captionbeside} + \label{fig:\LabelBase.letter-3} + \end{figure} +\end{Example} +Vor dem Verteiler wird automatisch ein Abstand eingefügt.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{encl}\Parameter{Anlagen} + \Variable{enclseparator} +\end{Declaration} +Die \PName{Anlagen}\Index{Anlagen} sind genauso aufgebaut wie der +Verteiler. Der einzige Unterschied besteht darin, dass die Einleitung +hier von der \PName{Bezeichnung} und dem \PName{Inhalt} der Variablen +\Variable{enclseparator}\Index{Trennzeichen} bestimmt wird. +\begin{Example} + Dem Beispielbrief wird nun als Anlage noch ein Auszug aus der Satzung + beigefügt. Da es nur eine Anlage gibt, wird auch die voreingestellte + Bezeichnung passend geändert: + \lstinputcode[xleftmargin=1em]{letter-4.tex} + Das Ergebnis ist in \autoref{fig:\LabelBase.letter-4} zu sehen. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Beispiel: Brief mit Anschrift, + Anrede, Text, Grußfloskel, Postskriptum, Anlagen und + Verteiler}]{Ergebnis eines kleinen Briefes mit Anschrift, Anrede, + Text, Grußfloskel, Postskriptum, Anlagen und Verteiler (Datum und + Faltmarken entstammen den Voreinstellungen für DIN-Briefe)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-4}} + \end{captionbeside} + \label{fig:\LabelBase.letter-4} + \end{figure} +\end{Example} +% +\EndIndexGroup +% +\EndIndexGroup + + +\LoadCommonFile{fontsize} % \section{Wahl der Schriftgröße für das Dokument} + +\LoadCommonFile{textmarkup} % \section{Textauszeichnungen} + +\section{Briefbogen} +\seclabel{firstpage} +\BeginIndexGroup +\BeginIndex{}{Briefbogen} + +Der Briefbogen ist die erste Seite und damit das Aushängeschild jedes +Briefes. Im geschäftlichen Bereich handelt es sich dabei oft um einen +Vordruck, auf dem viele Elemente, wie ein Briefkopf mit Absenderinformationen +und Logo, bereits enthalten sind. Bei \KOMAScript{} sind diese Elemente frei +positionierbar. Damit ist es nicht nur möglich, einen Briefbogen direkt +nachzubilden, sondern auch vorgesehene Felder, wie die Anschrift, unmittelbar +auszufüllen. Die freie Positionierbarkeit wird über Pseudolängen (siehe +\autoref{sec:\LabelBase.pseudoLength} ab +\autopageref{sec:\LabelBase.pseudoLength}) erreicht. Eine schematische +Darstellung des Briefbogens und der dafür verwendeten Variablen ist in +\autoref{fig:\LabelBase.variables} zu finden. Dabei sind die Namen der +Variablen zur besseren Unterscheidung von Anweisungen und deren Argumenten +fett gedruckt. + +Folgeseiten\Index{Folgeseite} sind vom Briefbogen zu +unterscheiden. Folgeseiten im Sprachgebrauch dieser Anleitung sind alle +Briefseiten abgesehen von der ersten. + + +\begin{figure} + \centering + \includegraphics[scale=0.99]{varDIN} + \caption{Schematische Darstellung des Briefbogens mit den wichtigsten + Anweisungen und Variablen für die skizzierten Elemente} + \label{fig:\LabelBase.variables} +\end{figure} + + +\begin{Declaration} + \OptionVName{foldmarks}{Einstellung} +\end{Declaration} +Falt- oder Falzmarken\Index{Faltmarken}\textnote{Faltmarken} sind kleine +horizontale Striche am linken und kleine vertikale Striche am oberen +Rand. \KOMAScript{} unterstützt für den Briefbogen derzeit drei +konfigurierbare horizontale und eine konfigurierbare vertikale Faltmarke. Dazu +wird noch eine horizontale Loch- oder Seitenmittenmarke unterstützt, die nicht +in der Vertikalen verschoben werden kann. + +Mit der Option \Option{foldmarks} können Faltmarken\Index{Faltmarke} für eine +vertikale Zwei"~, Drei- oder Vierteilung und eine horizontale Zweiteilung +aktiviert oder deaktiviert werden. Die einzelnen Teile müssen dabei nicht +äquidistant sein. Die Positionen von drei der vier horizontalen und der +vertikalen Marke sind über Pseudolängen konfigurierbar (siehe +\autoref{sec:scrlttr2-experts.foldmarks} ab +\DescPageRef{scrlttr2-experts.plength.foldmarkvpos}). + +Über die Option \Option{foldmarks} können entweder mit den Standardwerten für +einfache Schalter, die in \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} angegeben sind, alle konfigurierten +Faltmarken am linken und oberen Rand ein- und ausgeschaltet werden, +oder\ChangedAt{v2.97e}{\Class{scrlttr2}} es kann durch die Angabe eines oder +mehrerer Buchstaben aus \autoref{tab:\LabelBase.foldmark} die Verwendung der +einzelnen Faltmarken gezielt konfiguriert werden. Auch in diesem Fall werden +die Faltmarken nur dann angezeigt, wenn die Faltmarken nicht mit +\PValue{false}, \PValue{off} oder \PValue{no} generell abgeschaltet +wurden. Die genaue Position der Faltmarken ist von den Einstellungen des +Anwenders beziehungsweise der \File{lco}-Dateien (siehe +\autoref{sec:\LabelBase.lcoFile} ab \autopageref{sec:\LabelBase.lcoFile}) +abhängig. Voreingestellt sind \PValue{true} und +\PValue{TBMPL}.\textnote{Voreinstellung} +% +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside}[{% + Kombinierbare Werte für die Konfiguration der Faltmarken mit der + Option \Option{foldmarks}% + }]{% + \hspace{0pt plus 1ex}% + Kombinierbare Werte für die Konfiguration der Faltmarken mit der + Option \Option{foldmarks}\label{tab:\LabelBase.foldmark}% + }[l] + \begin{tabular}[t]{ll} + \toprule + \PValue{B} & untere, horizontale Faltmarke am linken Rand aktivieren\\% + \PValue{b} & untere, horizontale Faltmarke am linken Rand deaktivieren\\% + \PValue{H} & alle horizontalen Faltmarken am linken Rand aktivieren\\% + \PValue{h} & alle horizontalen Faltmarken am linken Rand deaktivieren\\% + \PValue{L} & linke, vertikale Faltmarke am oberen Rand aktivieren\\% + \PValue{l} & linke, vertikale Faltmarke am oberen Rand deaktivieren\\% + \PValue{M} & mittlere, horizontale Faltmarke am linken Rand aktivieren\\% + \PValue{m} & mittlere, horizontale Faltmarke am linken Rand deaktivieren\\% + \PValue{P} & Locher- bzw. Seitenmittenmarke am linken Rand aktivieren\\% + \PValue{p} & Locher- bzw. Seitenmittenmarke am linken Rand deaktivieren\\% + \PValue{T} & obere, horizontale Faltmarke am linken Rand aktivieren\\% + \PValue{t} & obere, horizontale Faltmarke am linken Rand deaktivieren\\% + \PValue{V} & alle vertikalen Faltmarken am oberen Rand aktivieren\\% + \PValue{v} & alle vertikalen Faltmarken am oberen Rand deaktivieren\\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} +\begin{Example} + Angenommen, Sie wollen alle Faltmarken außer der Lochermarke + abschalten. Wenn die Voreinstellung zuvor noch nicht geändert wurde, können + Sie das Abschalten wie folgt erreichen: +\begin{lstcode} + \KOMAoptions{foldmarks=blmt} +\end{lstcode} + Besteht die Möglichkeit, dass die Voreinstellung bereits geändert wurde, so + sollten Sie lieber auf Nummer Sicher gehen. Unser Beispiel ist dann + entsprechend abzuändern.% + \lstinputcode[xleftmargin=1em]{letter-7}% + Das Ergebnis ist in \autoref{fig:\LabelBase.letter-7} zu sehen. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Beispiel: Brief mit Anschrift, + Anrede, Text, Grußfloskel, Postskriptum, Anlagen, Verteiler und + Lochermarke}]{Ergebnis eines kleinen Briefes mit Anschrift, Anrede, + Text, Grußfloskel, Postskriptum, Anlagen, Verteiler und Lochermarke + (das Datum entstammt den Voreinstellungen für DIN-Briefe)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-7}} + \end{captionbeside} + \label{fig:\LabelBase.letter-7} + \end{figure} +\end{Example} +\BeginIndex{FontElement}{foldmark}\LabelFontElement{foldmark}% +Über\ChangedAt{v2.97c}{\Class{scrlttr2}} das Element \FontElement{foldmark} +kann die Farbe der Faltmarken geändert werden. Dazu werden die Anweisungen +\DescRef{\LabelBase.cmd.setkomafont} und \DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, +\DescPageRef{\LabelBase.cmd.setkomafont}) verwendet. Voreingestellt ist +keine Änderung.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{enlargefirstpage}{Ein-Aus-Wert} +\end{Declaration} +\begin{Explain} + Die erste Seite eines Briefes fällt % + \iftrue % Umbruchkorrektur + aufgrund der vielen Konsultationselemente, wie dem Briefkopf oder der + Anschrift, + % + \fi % + immer aus dem normalen Satzspiegel. Von \Class{scrlttr2} werden Mechanismen + bereitgestellt, um die Höhe und vertikale Ausrichtung von Kopf und Fuß der + ersten Seite unabhängig von den Folgeseiten zu bestimmen. Würde dadurch der + Fuß der ersten Seite in den Textbereich\Index{Text>Bereich} ragen, so wird + der Textbereich der ersten Seite automatisch mit Hilfe von + \Macro{enlargethispage}\IndexCmd{enlargethispage} verkleinert. +\end{Explain} +Soll der Textbereich auch automatisch mit \Macro{enlargethispage} vergrößert +werden, falls der Fuß der ersten Seite dies erlaubt, so kann das mit dieser +Option erreicht werden. Es passt dann bestenfalls etwas mehr Text auf die +erste Seite. Siehe hierzu auch die Erklärung zur Pseudolänge +\PLength{firstfootvpos} auf +\DescPageRef{scrlttr2-experts.plength.firstfootvpos}. Als +\PName{Ein-Aus-Wert} kann dabei einer der Standardwerte für einfache Schalter +aus \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} verwendet +werden. Voreingestellt ist \PValue{false}.\textnote{Voreinstellung}% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{firsthead}{Ein-Aus-Wert} +\end{Declaration} +\iffalse% Umbruchkorrekturtext +Das\ChangedAt{v2.97e}{\Class{scrlttr2}} oberste Element eines Briefbogens ist +normalerweise der Briefkopf. Bei +\else% +Bei\ChangedAt{v2.97e}{\Class{scrlttr2}} +\fi% +\KOMAScript{} kann mit der Option +\Option{firsthead} gewählt werden, ob der Briefkopf auf dem Briefbogen +überhaupt gesetzt werden soll. Als \PName{Ein-Aus-Wert} kann dabei einer der +Standardwerte für einfache Schalter aus \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} verwendet werden. In der Voreinstellung ist +der Briefkopf aktiviert.\textnote{Voreinstellung}%% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{fromalign}{Methode} +\end{Declaration} +\BeginIndex{}{Briefkopf}% +Die\important{\Option{fromalign}} Option \Option{fromalign} bestimmt, wo der +Absender\Index{Absender} auf der ersten Seite platziert werden soll. Neben +verschiedenen Platzierungen im Briefkopf gibt es +auch\ChangedAt{v2.97e}{\Class{scrlttr2}} die Möglichkeit, den Absender in der +Absenderergänzung\Index{Absenderergaenzung=Absenderergänzung} +unterzubringen. Gleichzeitig\textnote{Achtung!} dient diese Option als +zentraler Schalter, um die Erweiterungen der Briefkopfgestaltung überhaupt zu +aktivieren oder zu deaktivieren. Sind die Erweiterungen deaktiviert, so +bleiben die übrigen nachfolgend angegebenen Optionen ohne Wirkung. Mögliche +Werte für \Option{fromalign} sind \autoref{tab:\LabelBase.fromalign} zu +entnehmen. Voreingestellt ist der Wert \PValue{left}.\textnote{Voreinstellung}% +% +\EndIndexGroup + +\begin{table} + \Index{Briefkopf}% + \caption[{Mögliche Werte für Option + \Option{fromalign} zur Platzierung des Absenders auf dem Briefbogen}] + {Mögliche Werte für Option + \Option{fromalign} zur Platzierung des Absenders auf dem Briefbogen} + \label{tab:\LabelBase.fromalign} + \begin{desctabular} + \entry{\PValue{center}, \PValue{centered}, \PValue{middle}}{% + Absender wird innerhalb des Briefkopfes zentriert; ein Logo wird + gegebenenfalls am Anfang der erweiterten Absenderangabe platziert; die + Erweiterungen der Briefkopfgestaltung werden aktiviert.}% + \entry{\PValue{false}, \PValue{no}, \PValue{off}}{% + Standardgestalt für den Absender wird verwendet; die Erweiterungen der + Briefkopfgestaltung werden deaktiviert.}% + \entry{\PValue{left}}{% + Absender steht linksbündig im Briefkopf; ein Logo wird gegebenenfalls + rechtsbündig platziert; die Erweiterungen der Briefkopfgestaltung werden + aktiviert.}% + \entry{\PValue{locationleft}, \PValue{leftlocation}}{% + Absender steht linksbündig in der Absenderergänzung; ein Logo wird + gegebenenfalls darüber platziert; der Briefkopf wird automatisch + deaktiviert, kann aber über Option \DescRef{\LabelBase.option.firsthead} + wieder aktiviert werden.}% + \entry{\PValue{locationright}, \PValue{rightlocation}, + \PValue{location}}{% + Absender steht rechtsbündig in der Absenderergänzung; ein Logo wird + gegebenenfalls darüber platziert; der Briefkopf wird automatisch + deaktiviert, kann aber über Option \DescRef{\LabelBase.option.firsthead} + wieder aktiviert werden.}% + \entry{\PValue{right}}{% + Absender steht rechtsbündig im Briefkopf; ein Logo wird gegebenenfalls + linksbündig platziert; die Erweiterungen der Briefkopfgestaltung werden + aktiviert.}% + \end{desctabular} +\end{table} + + +\begin{Declaration} + \OptionVName{fromrule}{Position} + \Variable{fromname} + \Variable{fromaddress} +\end{Declaration} +Der\important{\Variable{fromname}} Name des Absenders wird über die Variable +\Variable{fromname} bestimmt. Im Briefkopf wird dabei die \PName{Bezeichnung} +(siehe auch \autoref{tab:\LabelBase.fromTerm}, +\autopageref{tab:\LabelBase.fromTerm}) nicht gesetzt. + +Optional\important{\OptionValue{fromrule}{aftername}} kann mit Einstellung +\OptionValue{fromrule}{aftername} im erweiterten Briefkopf auf den Namen eine +horizontale Linie +folgen. Alternativ\important{\OptionValue{fromrule}{afteraddress}} kann die +Linie mit \OptionValue{fromrule}{afteraddress} auch unterhalb des kompletten +Absenders gesetzt werden. Eine Übersicht über alle möglichen Einstellungen für +die Linie bietet \autoref{tab:\LabelBase.fromrule}. Die Länge der Linie wird +über die Pseudolänge \PLength{fromrulewidth}\IndexPLength{fromrulewidth} +bestimmt. + +\begin{table} + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside} + [{% + Mögliche Werte für Option \Option{fromrule} bei + \Class{scrlttr2} und \Package{scrletter}% + }]{% + \label{tab:\LabelBase.fromrule}% + Mögliche Werte für Option \Option{fromrule} zur + Platzierung einer horizontalen Linie im Absender des erweiterten + Briefkopfes von \Class{scrlttr2} und \Package{scrletter}% + }% + [l]% +% \label{tab:\LabelBase.fromrule}% + \begin{minipage}[t]{.6\linewidth}% + \begin{desctabular}[t] + \entry{% + \PValue{afteraddress}, \PValue{below}, \PValue{on}, \PValue{true}, + \PValue{yes}}{% + Linie unterhalb des kompletten Absenders}% + \entry{\PValue{aftername}}{% + Linie direkt unter dem Namen des Absenders}% + \entry{\PValue{false}, \PValue{no}, \PValue{off}}{% + keine Linie}% + \end{desctabular} + \end{minipage} + \end{captionbeside} +\end{table} + +In der Voreinstellung\textnote{Voreinstellung} ist die Linie im erweiterten +Briefkopf nicht aktiviert. Im Standardbriefkopf wird die Linie immer nach dem +Namen gesetzt. + +Unter\important{\Variable{fromaddress}} dem Namen folgt die Anschrift des +Absenders. Diese wird über die Variable \Variable{fromaddress} bestimmt. Im +Briefkopf wird dabei die \PName{Bezeichnung} (siehe auch +\autoref{tab:\LabelBase.fromTerm}, \autopageref{tab:\LabelBase.fromTerm}) nicht +gesetzt. + +\BeginIndexGroup +\BeginIndex{FontElement}{fromaddress}\LabelFontElement{fromaddress}% +\BeginIndex{FontElement}{fromname}\LabelFontElement{fromname}% +\BeginIndex{FontElement}{fromrule}\LabelFontElement{fromrule}% +Die Schrift, die für den kompletten Absender verwendet wird, kann über das +Element \FontElement{fromaddress}\IndexFontElement{fromaddress}% +\important{\FontElement{fromaddress}} eingestellt werden. Abweichungen davon +können für den Absendernamen über das Element +\FontElement{fromname}\IndexFontElement{fromname}% +\important{\FontElement{fromname}} und für die mit \Option{fromrule} gesetzte +Linie über das Element \FontElement{fromrule}\IndexFontElement{fromrule}% +\important{\FontElement{fromrule}} eingestellt werden. In der Voreinstellung +erfolgt keinerlei Schriftumschaltung. Bei der Linie ist die Möglichkeit der +Schriftumschaltung hauptsächlich dazu gedacht, die Farbe der Linie ändern zu +können, um etwa Grau anstelle von Schwarz zu verwenden. Siehe hierzu +\cite{package:xcolor}.% +% +\EndIndexGroup + +\begin{Example} + Geben wir nun dem Absender + \iftrue % Umbruchkorrektur + aus den bisherigen Beispielen + \fi % + einen Namen. + \lstinputcode[xleftmargin=1em]{letter-8.tex} + \begin{figure} + \centering + \frame{\includegraphics[width=.4\textwidth]{letter-8}}\quad + \frame{\includegraphics[width=.4\textwidth]{letter-9}} + \caption[{Beispiel: Brief mit Absender, Anschrift, Anrede, + Text, Grußfloskel, Signatur, Postskriptum, Anlagen und Verteiler}] + {Ergebnis eines kleinen Briefes mit Absender, Anschrift, Anrede, Text, + Grußfloskel, Signatur, Postskriptum, Anlagen und Verteiler (Datum und + Faltmarken entstammen den Voreinstellungen für DIN-Briefe); links der + Standardbriefkopf mit \OptionValueRef{\LabelBase}{fromalign}{false}, + rechts der + erweiterte Briefkopf mit \OptionValueRef{\LabelBase}{fromalign}{center}} + \label{fig:\LabelBase.letter-8-9} + \end{figure} + Dabei wird zunächst einmal nicht der erweiterte Briefkopf, sondern nur der + Standardbriefkopf verwendet. Das Ergebnis ist in + \autoref{fig:\LabelBase.letter-8-9} links zu sehen. Im Vergleich dazu ist + rechts daneben das gleiche Beispiel, jedoch mit Option + \OptionValueRef{\LabelBase}{fromalign}{center}, also mit den aktivierten + Erweiterungen für den Briefkopf, abgebildet. Wie zu sehen ist, hat diese + Variante zunächst einmal keine Linie. + + In \autoref{fig:\LabelBase.letter-8-9} taucht nun auch erstmals eine Signatur + unter dem Gruß auf. Diese wird automatisch aus dem Absendername + gewonnen. Wie sie konfiguriert werden kann, ist in + \autoref{sec:\LabelBase.closing} ab \autopageref{sec:\LabelBase.closing} zu + finden. + + Nun soll der Brief mit aktivierter Erweiterung für den Briefkopf mit Hilfe + der Option \Option{fromrule} auch noch eine Linie unter dem Namen erhalten:% + \lstinputcode[xleftmargin=1em]{letter-11.tex}% + Das Ergebnis ist in \autoref{fig:\LabelBase.letter-10-11} rechts zu sehen. % + \iftrue % Umbruchkorrektur + Im Vergleich dazu ist links daneben das gleiche Beispiel noch einmal mit dem + Standardbriefkopf und ohne Reaktion auf die zusätzliche Option. + % + \else % + Links steht zum Vergleich ein Beispiel mit Standardbriefkopf. + % + \fi + % + \begin{figure} + \centering + \frame{\includegraphics[width=.4\textwidth]{letter-10}}\quad + \frame{\includegraphics[width=.4\textwidth]{letter-11}} + \caption[{Beispiel: Brief mit Absender, Trennlinie, Anschrift, Anrede, Text, + Grußfloskel, Signatur, Postskriptum, Anlagen, Verteiler und + Lochermarke}]{Ergebnis eines kleinen Briefes mit Absender, Trennlinie, + Anschrift, Anrede, Text, Grußfloskel, Signatur, Postskriptum, Anlagen, + Verteiler und Lochermarke (das Datum entstammt den Voreinstellungen für + DIN-Briefe); links der Standardbriefkopf mit + \OptionValueRef{\LabelBase}{fromalign}{false}, rechts der erweiterte + Briefkopf mit \OptionValueRef{\LabelBase}{fromalign}{center}} + \label{fig:\LabelBase.letter-10-11} + \end{figure} +\end{Example} + +Ein\textnote{Achtung!} wichtiger Hinweis betrifft \iffree{noch}{\unskip} die +Absenderadresse: Innerhalb der Absenderadresse werden einzelne Teilangaben +durch doppelten Backslash voneinander getrennt. Solche Teilangaben sind +beispielsweise Straße und Hausnummer, Postleitzahl und Ort oder eine +Länderangabe. Dieser doppelte Backslash wird je nach Verwendung der +Absenderadresse unterschiedlich interpretiert und ist nicht zwangsläufig als +Zeilenumbruch zu verstehen. Absätze, vertikale Abstände und Ähnliches sind +innerhalb der Absenderangaben normalerweise nicht gestattet% +\iftrue % Umbruchkorrektur +. Man muss \KOMAScript{} schon sehr genau kennen, um solche Mittel +gegebenenfalls sinnvoll im Absender einsetzen zu können. Außerdem sollte man +in dem Fall unbedingt die Variablen für Rücksendeadresse (siehe Variable +\DescRef{\LabelBase.variable.backaddress}, +\DescPageRef{\LabelBase.variable.backaddress}) und Signatur (siehe Variable +\DescRef{\LabelBase.variable.signature}, +\DescPageRef{\LabelBase.variable.signature}) selbst setzen.% +\else % +\ und hätten außerdem gegebenenfalls Auswirkungen auf die Rücksendeadresse +(siehe Variable \DescRef{\LabelBase.variable.backaddress}, +\DescPageRef{\LabelBase.variable.backaddress}) und Signatur (siehe Variable +\DescRef{\LabelBase.variable.signature}, +\DescPageRef{\LabelBase.variable.signature}).% +\fi % +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{symbolicnames}{Ein-Aus-Wert} + \OptionVName{fromphone}{Ein-Aus-Wert} + \OptionVName{frommobilephone}{Ein-Aus-Wert} + \OptionVName{fromfax}{Ein-Aus-Wert} + \OptionVName{fromemail}{Ein-Aus-Wert} + \OptionVName{fromurl}{Ein-Aus-Wert} + \Variable{fromphone} + \Variable{frommobilephone} + \Variable{fromfax} + \Variable{fromemail} + \Variable{fromurl} + \Variable{phoneseparator} + \Variable{mobilephoneseparator} + \Variable{faxseparator} + \Variable{emailseparator} + \Variable{urlseparator} +\end{Declaration}% +Mit Hilfe der fünf Optionen \Option{fromphone}, +\Option{frommobilephone}\ChangedAt{v3.12}{\Class{scrlttr2}}, \Option{fromfax}, +\Option{fromemail} und \Option{fromurl} kann bestimmt werden, ob die +Telefonnummer\Index{Telefon}, die +Mobiltelefonnummer\Index{Mobiltelefon}\Index{Handy}, die Faxnummer\Index{Fax}, +die E-Mail-Adresse und die URL im Absender\Index{Absender} gesetzt werden +soll. Als \PName{Ein-Aus-Wert} kann dabei einer der Standardwerte für einfache +Schalter aus \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} +verwendet werden. Voreingestellt\textnote{Voreinstellung} ist jeweils +\PValue{false}. Die Inhalte selbst werden über die gleichnamigen Variablen +bestimmt. Die Voreinstellungen für die dabei verwendeten Bezeichnungen sind +\autoref{tab:\LabelBase.fromTerm} zu entnehmen, die verwendeten Trennzeichen, +die zwischen der \PName{Bezeichnung} und dem \PName{Inhalt} einer Variablen +eingefügt werden, \autoref{tab:\LabelBase.fromSeparator}. + +Mit\ChangedAt{v3.12}{\Class{scrlttr2}}\important{\Option{symbolicnames}} +Option \Option{symbolicnames} kann diese Voreinstellung auf einen Schlag +geändert werden. Die Option versteht die \PName{Ein-Aus-Werte} für einfache +Schalter, wie sie in \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} angegeben sind. Durch Aktivierung der Option +werden statt der sprachabhängigen Bezeichner +\DescRef{scrlttr2-experts.cmd.emailname}, +\DescRef{scrlttr2-experts.cmd.faxname}, +\DescRef{scrlttr2-experts.cmd.mobilephonename} und +\DescRef{scrlttr2-experts.cmd.phonename} Symbole aus dem +\Package{marvosym}\IndexPackage{marvosym}-Paket verwendet. Gleichzeitig +entfällt der Doppelpunkt bei der Definition der Trennzeichen. Für die URL +entfallen in diesem Fall sowohl der sprachabhängige Bezeichner als auch das +Trennzeichen. Es ist zu beachten\textnote{Achtung!}, dass das Paket +\Package{marvosym} gegebenenfalls selbst zu laden ist, falls die Option erst +nach \Macro{begin}\PParameter{document} aktiviert wird. + +\begin{table} + \centering + \caption[{Vordefinierte Bezeichnungen der Variablen für die\newline + Absenderangaben im Briefkopf}]{Vordefinierte Bezeichnungen der Variablen + für die Absenderangaben im Briefkopf (die Bezeichnungen und Inhalte der + verwendeten Variablen für Trennzeichen ist + \autoref{tab:\LabelBase.fromSeparator} zu entnehmen)} + \begin{desctabular}[1.8em] + \ventry{fromemail}{% + \DescRef{\LabelBase.cmd.usekomavar*}\PParameter{emailseparator}% + \DescRef{\LabelBase.cmd.usekomavar}\PParameter{emailseparator}}% + \ventry{fromfax}{% + \DescRef{\LabelBase.cmd.usekomavar*}\PParameter{faxseparator}% + \DescRef{\LabelBase.cmd.usekomavar}\PParameter{faxseparator}}% + \ventry{frommobilephone}{% + \DescRef{\LabelBase.cmd.usekomavar*}\PParameter{mobilephoneseparator}% + \DescRef{\LabelBase.cmd.usekomavar}\PParameter{mobilephoneseparator}}% + \ventry{fromname}{\DescRef{scrlttr2-experts.cmd.headfromname}}% + \ventry{fromphone}{% + \DescRef{\LabelBase.cmd.usekomavar*}\PParameter{phoneseparator}% + \DescRef{\LabelBase.cmd.usekomavar}\PParameter{phoneseparator}}% + \ventry{fromurl}{% + \DescRef{\LabelBase.cmd.usekomavar*}\PParameter{urlseparator}% + \DescRef{\LabelBase.cmd.usekomavar}\PParameter{urlseparator}}% + \end{desctabular} + \label{tab:\LabelBase.fromTerm} +\end{table} + +\begin{table}[tp] + \centering +% \KOMAoptions{captions=topbeside}% +% \setcapindent{0pt}% + \caption +% \begin{captionbeside} + {Vordefinierte Bezeichnungen und Inhalte der Trennzeichen + für die Absenderangaben im Briefkopf ohne Option + \Option{symbolicnumbers}} +% [l] + \begin{tabularx}{\textwidth}{llX} + \toprule + Name & Bezeichnung & Inhalt \\ + \midrule + \Variable{emailseparator} & \DescRef{scrlttr2-experts.cmd.emailname} & \texttt{:\~} \\ + \Variable{faxseparator} & \DescRef{scrlttr2-experts.cmd.faxname} & \texttt{:\~} \\ + \Variable{mobilephoneseparator} & \DescRef{scrlttr2-experts.cmd.mobilephonename} & + \DescRef{\LabelBase.cmd.usekomavar}\PParameter{phoneseparator} \\ + \Variable{phoneseparator} & \DescRef{scrlttr2-experts.cmd.phonename} & \texttt{:\~} \\ + \Variable{urlseparator} & \DescRef{scrlttr2-experts.cmd.wwwname} & \texttt{:\~} \\ + \bottomrule + \end{tabularx} +% \end{captionbeside} + \label{tab:\LabelBase.fromSeparator} +\end{table} + +\begin{Example} + Herr Musterfrau aus unserem Beispiel hat auch Telefon und eine + E-Mail-Adresse. Diese möchte er ebenfalls im Briefkopf haben. Gleichzeitig + soll die Trennlinie nun nach dem Briefkopf stehen. Also gibt er die + entsprechenden Optionen an und setzt auch die zugehörigen Variablen:% + \lstinputcode[xleftmargin=1em]{letter-12.tex}% + Das Ergebnis aus \autoref{fig:\LabelBase.letter-12-13} links ist jedoch + ernüchternd. Die Optionen werden ignoriert. Das liegt daran, dass diese + zusätzlichen Variablen und Optionen nur im erweiterten Briefkopf verwendet + werden. Es muss also, wie in \autoref{fig:\LabelBase.letter-12-13}, rechts die + Option \DescRef{\LabelBase.option.fromalign} verwendet werden: + \begin{figure} + \centering + \frame{\includegraphics[width=.4\textwidth]{letter-12}}\quad + \frame{\includegraphics[width=.4\textwidth]{letter-13}} + \caption[{Beispiel: Brief mit erweitertem Absender, Trennlinie, Anschrift, + Anrede, Text, Grußfloskel, Signatur, Postskriptum, Anlagen, Verteiler + und Lochermarke; Standard- vs. erweiterter Briefkopf}]{Ergebnis eines + kleinen Briefes mit erweitertem Absender, Trennlinie, Anschrift, Anrede, + Text, Grußfloskel, Signatur, Postskriptum, Anlagen, Verteiler und + Lochermarke (das Datum entstammt den Voreinstellungen für DIN-Briefe); + links der Standardbriefkopf mit + \OptionValueRef{\LabelBase}{fromalign}{false}, rechts der erweiterte + Briefkopf mit \OptionValueRef{\LabelBase}{fromalign}{center}} + \label{fig:\LabelBase.letter-12-13} + \end{figure} + \lstinputcode[xleftmargin=1em]{letter-13.tex} + + Den Vergleich zweier weiterer Alternativen mit linksbündigem Absender durch + Einstellung \OptionValueRef{\LabelBase}{fromalign}{left} und rechtsbündigem + Absender durch Einstellung \OptionValueRef{\LabelBase}{fromalign}{right} zeigt + \autoref{fig:\LabelBase.letter-14-15}. + \begin{figure} + \centering + \frame{\includegraphics[width=.4\textwidth]{letter-14}}\quad + \frame{\includegraphics[width=.4\textwidth]{letter-15}} + \caption[{Beispiel: Brief mit erweitertem Absender, Trennlinie, Anschrift, + Anrede, Text, Grußfloskel, Signatur, Postskriptum, Anlagen, Verteiler + und Lochermarke; links- vs. rechtsbündiger Briefkopf}]{Ergebnis eines + kleinen Briefes mit erweitertem Absender, Trennlinie, Anschrift, Anrede, + Text, Grußfloskel, Signatur, Postskriptum, Anlagen, Verteiler und + Lochermarke (das Datum entstammt den Voreinstellungen für DIN-Briefe); + links mit linksbündigem Kopf durch + \OptionValueRef{\LabelBase}{fromalign}{left}, rechts mit Option + \OptionValueRef{\LabelBase}{fromalign}{right} und damit rechtsbündigem + Kopf} + \label{fig:\LabelBase.letter-14-15} + \end{figure} +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{fromlogo}{Ein-Aus-Wert} + \Variable{fromlogo} +\end{Declaration} +\BeginIndex{Option}{fromlogo~=\PName{Ein-Aus-Wert}}% +\BeginIndex{Variable}{fromlogo}% +Mit der Option \Option{fromlogo} kann bestimmt werden, ob ein Logo\Index{Logo} +im Briefkopf gesetzt werden soll. Als \PName{Ein-Aus-Wert} kann dabei einer +der Standardwerte für einfache Schalter aus \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} verwendet +werden. Voreingestellt\textnote{Voreinstellung} ist \PValue{false}, also kein +Logo. Das Logo selbst wird über die Variable \Variable{fromlogo} +definiert. Die \PName{Bezeichnung} für das Logo ist in der Voreinstellung leer +und wird von \KOMAScript{} auch nicht verwendet (siehe auch +\autoref{tab:\LabelBase.fromTerm}, \autopageref{tab:\LabelBase.fromTerm}).% +\begin{Example} + Herr Musterfrau findet es besonders schick, wenn er seine Briefe mit einem + Logo versieht. Sein Logo hat er als Grafikdatei gespeichert, die er gerne + mit Hilfe der Anweisung \Macro{includegraphics} laden würde. Dazu bindet er + zusätzlich das Paket \Package{graphics}\IndexPackage{graphics} (siehe + \cite{package:graphics}) ein.% + \lstinputcode[xleftmargin=1em]{letter-16}% + Das Ergebnis ist in \autoref{fig:\LabelBase.letter-16-18}, + \autopageref{fig:\LabelBase.letter-16-18} links oben zu sehen. Die beiden + anderen Bilder in dieser Abbildung zeigen das Ergebnis bei rechtsbündigem + und bei zentriertem Absender. + \begin{figure} + \setcapindent{0pt}% + {\hfill + \frame{\includegraphics[width=.4\textwidth]{letter-16}}\quad + \frame{\includegraphics[width=.4\textwidth]{letter-17}}\par\bigskip} + \begin{captionbeside}[{Beispiel: Brief mit erweitertem Absender, Logo, + Trennlinie, Anschrift, Anrede, Text, Grußfloskel, Signatur, + Postskriptum, Anlagen, Verteiler und Lochermarke; Absender links + vs. rechts vs. zentriert}]{Ergebnis eines kleinen Briefes mit + erweitertem Absender, Logo, Trennlinie, Anschrift, Anrede, Text, + Grußfloskel, Signatur, Postskriptum, Anlagen, Verteiler und + Lochermarke (das Datum entstammt den Voreinstellungen für + DIN-Briefe); links, oben mit linksbündigem Absender, rechts daneben + mit zentriertem Absender und rechts mit rechtsbündigem Absender}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-18}}\quad + \end{captionbeside} + \label{fig:\LabelBase.letter-16-18} + \end{figure} +\end{Example}% +% +\EndIndexGroup + + +\begin{Declaration} + \Variable{firsthead} +\end{Declaration} +In vielen Fällen reichen die Möglichkeiten aus, die \Class{scrlttr2} über +Optionen und obige Variablen für die Gestaltung des Briefkopfes bietet. In +einigen Fällen will man jedoch den Briefkopf freier gestalten können. In +diesen Fällen muss man auf die Möglichkeiten der vordefinierten Briefköpfe, +die über die oben erwähnten Option ausgewählt werden können, +verzichten. Stattdessen gestaltet man sich seinen Briefkopf frei. Dazu +definiert man den gewünschten Aufbau über den \PName{Inhalt} der Variablen +\Variable{firsthead}. Dabei können beispielsweise mit Hilfe der +\Macro{parbox}-Anweisung (siehe \cite{latex:usrguide}) mehrere Boxen neben- +und untereinander gesetzt werden. Einem versierten Anwender sollte es so +möglich sein, seinen eigenen Briefkopf zu gestalten. Natürlich kann und sollte +man dabei auch Zugriffe auf andere Variablen mit Hilfe von +\DescRef{\LabelBase.cmd.usekomavar} nehmen. Die \PName{Bezeichnung} der +Variablen \Variable{firsthead} wird von \KOMAScript{} nicht verwendet. +\iffree{}{Ein ausführliches Beispiel für Definition eines Briefkopfes wird in + \autoref{cha:modernletters} behandelt.}% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{addrfield}{Modus} + \OptionVName{backaddress}{Wert} + \OptionVName{priority}{Priorität} + \Variable{toname} + \Variable{toaddress} + \Variable{backaddress} + \Variable{backaddressseparator} + \Variable{specialmail} + \Variable{fromzipcode} + \Variable{zipcodeseparator} + \Variable{place} + \Variable{PPcode} + \Variable{PPdatamatrix} + \Variable{addresseeimage} +\end{Declaration}% +\BeginIndex{}{Anschrift}% +Mit der Option \Option{addrfield} kann gewählt werden, ob ein Anschriftfeld +gesetzt werden soll oder nicht. Voreingestellt\textnote{Voreinstellung} ist +mit \PValue{true} die Verwendung eines Anschriftfeldes. Die Option versteht +die in \autoref{tab:\LabelBase.addrfield}\ChangedAt{v3.03}{\Class{scrlttr2}} +%, \autopageref{tab:\LabelBase.addrfield} +angegebenen Werte für den \PName{Modus}. Bei den Werten \PValue{true}, +\PValue{topaligned}\ChangedAt{v3.17}{\Class{scrlttr2}\and + \Package{scrletter}}, \PValue{PP} und \PValue{backgroundimage} werden Name +und Adresse des Empfängers, die im Anschriftfeld gesetzt werden, über das +Argument der Umgebung \DescRef{\LabelBase.env.letter} (siehe +\autoref{sec:\LabelBase.document}, \DescPageRef{\LabelBase.env.letter}) +bestimmt. Diese Angaben werden außerdem in die Variablen \Variable{toname} und +\Variable{toaddress} kopiert. + +\BeginIndexGroup +\BeginIndex{FontElement}{addressee}\LabelFontElement{addressee}% +\BeginIndex{FontElement}{toname}\LabelFontElement{toname}% +\BeginIndex{FontElement}{toaddress}\LabelFontElement{toaddress}% +Die voreingestellten Schriftarten können\ChangedAt{v2.97c}{\Class{scrlttr2}} +über die Anweisungen \DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, ab +\DescPageRef{\LabelBase.cmd.setkomafont}) verändert werden. Dabei existieren +drei Elemente. Zunächst gibt es das Element +\FontElement{addressee}\IndexFontElement{addressee}% +\important{\FontElement{addressee}}, das generell für die Anschrift zuständig +ist. Dazu gibt es die Elemente +\FontElement{toname}\IndexFontElement{toname}\important{\FontElement{toname}} +und \FontElement{toaddress}\IndexFontElement{toaddress}% +\important{\FontElement{toaddress}}, die sich nur auf den Namen bzw. die +Adresse des Empfängers beziehen. Für \FontElement{toname} und +\FontElement{toaddress} können also Abweichungen von der Einstellung für +\FontElement{addressee} definiert werden.% +\EndIndexGroup +% +\begin{table} + \caption[{Mögliche Werte für Option \Option{addrfield} bei + \Class{scrlttr2} und \Package{scrletter}}] + {Mögliche Werte für Option \Option{addrfield} zur + Auswahl der Art der Anschrift% + \label{tab:\LabelBase.addrfield}}% + \begin{desctabular} + \entry{\PValue{backgroundimage}, \PValue{PPbackgroundimage}, + \PValue{PPBackgroundImage}, \PValue{PPBackGroundImage}, + \PValue{ppbackgroundimage}, \PValue{ppBackgroundImage}, + \PValue{ppBackGroundImage}}{% + Es wird eine Anschrift mit einer in Variable \Variable{addresseeimage} + abgelegten Hintergrundgrafik als Port-Payé-Kopf (P.\,P.-Kopf), aber ohne + Rücksendeadresse und Versandart gesetzt.}% + \entry{\PValue{false}, \PValue{off}, \PValue{no}}{% + Es wird keine Anschrift gesetzt.}% + \entry{\PValue{image}, \PValue{Image}, \PValue{PPimage}, \PValue{PPImage}, + \PValue{ppimage}, \PValue{ppImage}}{% + Eine in Variable \Variable{addresseeimage} abgelegte Abbildung wird als + Anschrift mit Port-Payé gesetzt. Adressinformationen und Angaben für + Rücksendeadresse, Versandart oder Priorität werden ignoriert.}% + \entry{\PValue{PP}, \PValue{pp}, \PValue{PPexplicite}, + \PValue{PPExplicite}, \PValue{ppexplicite}, \PValue{ppExplicite}}{% + Es wird eine Anschrift mit explizit über die Variablen + \Variable{fromzipcode}, \Variable{place} und \Variable{PPcode} + ausgefülltem Port-Payé-Kopf (P.\,P.-Kopf), gegebenenfalls mit Priorität + und über Variable \Variable{PPdatamatrix} gesetzter Data-Matrix, aber + ohne Rücksendeadresse und Versandart gesetzt.}% + \entry{\PValue{topaligned}, \PValue{alignedtop}% + \ChangedAt{v3.17}{\Class{scrlttr2}\and \Package{scrletter}}}{% + Es wird eine Anschrift mit Rücksendeadresse und Versandart oder + Priorität gesetzt. Die Anschrift wird dabei unter der Versandart nicht + vertikal zentriert.}% + \entry{\PValue{true}, \PValue{on}, \PValue{yes}}{% + Es wird eine Anschrift mit Rücksendeadresse und Versandart oder + Priorität gesetzt.}% + \end{desctabular} +\end{table}% + +Im Anschriftfeld wird in der Voreinstellung \OptionValue{addrfield}{true} +zusätzlich noch die unterstrichene Rücksendeadresse gesetzt. Mit Option +\Option{backaddress} kann gewählt werden, ob und in welcher Form die +Rücksendeadresse\Index{Ruecksendeadresse=Rücksendeadresse} für +Fensterbriefumschläge im Anschriftfeld gesetzt werden soll. Die +Option\important{\OptionValue{backaddress}{false}} versteht dazu einerseits +die Standardwerte für einfache Schalter, die in \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} angegeben sind. Dabei bleibt der Stil der +Rücksendeadresse unverändert. Beim Einschalten der Rücksendeadresse kann +andererseits\ChangedAt{v2.96}{\Class{scrlttr2}} gleichzeitig auch der Stil der +Rücksendeadresse gewählt werden. So aktiviert der Wert +\PValue{underlined}\important{\OptionValue{backaddress}{underlined}} die +unterstrichene Rücksendeadresse, während +\PValue{plain}\important{\OptionValue{backaddress}{plain}} den Stil ohne +Unterstreichung auswählt. Voreingestellt\textnote{Voreinstellung} ist +\PValue{underlined}, also das Setzen der unterstrichenen Rücksendeadresse. + +Die Rücksendeadresse selbst wird über den \PName{Inhalt} der Variable +\Variable{backaddress} bestimmt. Voreingestellt ist hier der über +\DescRef{\LabelBase.variable.fromname} angegebene Name und die über +\DescRef{\LabelBase.variable.fromaddress} angegebene Adresse, wobei der +Doppelbackslash in diesem Fall durch den Inhalt der Variablen +\Variable{backaddressseparator} ersetzt wird. Für diese ist ein Komma, gefolgt +von einem nicht umbrechbaren Leerzeichen vordefiniert. Die \PName{Bezeichnung} +der Variablen \Variable{backaddress} wird von \KOMAScript{} nicht genutzt. +\BeginIndexGroup\BeginIndex{FontElement}{backaddress}% +\LabelFontElement{backaddress}% +Die Schriftart der Rücksendeadresse ist über das Element +\FontElement{backaddress}\important{\FontElement{backaddress}} +konfigurierbar. Voreingestellt ist hierbei \Macro{sffamily} (siehe +\autoref{tab:\LabelBase.AddresseeElements}). Vor der Anwendung der +konfigurierten Schriftumschaltung wird noch \Macro{scriptsize} ausgeführt.% +\EndIndexGroup + +Während die Adresse in der Voreinstellung +\OptionValue{addrfield}{true}\ChangedAt{v3.17}{\Class{scrlttr2}\and + \Package{scrletter}} im für die Anschrift verfügbaren Platz vertikal +zentriert wird, entfällt die Zentrierung mit +\OptionValue{addrfield}{topaligned}% +\important{\OptionValue{addrfield}{topaligned}}. Sie wird dann oben bündig im +verfügbaren Platz gesetzt. + +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside}[{% + Schriftvoreinstellungen für die Elemente des Anschriftfensters% + }]{% + \hspace{0pt plus 1ex}% + Voreinstellungen für die Schrift der Elemente des Anschriftfensters% + \label{tab:\LabelBase.AddresseeElements}% + }% + [l] + \begin{tabular}[t]{ll} + \toprule + Element & Voreinstellung \\ + \midrule + \DescRef{\LabelBase.fontelement.addressee}\IndexFontElement{addressee} & + \\ + \DescRef{\LabelBase.fontelement.backaddress}\IndexFontElement{backaddress} & + \Macro{sffamily}% + \\ + \DescRef{\LabelBase.fontelement.PPdata}\IndexFontElement{PPdata} & + \Macro{sffamily}% + \\ + \DescRef{\LabelBase.fontelement.PPlogo}\IndexFontElement{PPlogo} & + \Macro{sffamily}\Macro{bfseries}% + \\ + \DescRef{\LabelBase.fontelement.priority}\IndexFontElement{priority} & + \Macro{fontsize}\PParameter{10pt}\PParameter{10pt}% + \Macro{sffamily}\Macro{bfseries}% + \\ + \DescRef{\LabelBase.fontelement.prioritykey}\IndexFontElement{prioritykey} & + \Macro{fontsize}\PParameter{24.88pt}\PParameter{24.88pt}% + \Macro{selectfont}% + \\ + \DescRef{\LabelBase.fontelement.specialmail}\IndexFontElement{specialmail} & + \\ + \DescRef{\LabelBase.fontelement.toaddress}\IndexFontElement{toaddress} & + \\ + \DescRef{\LabelBase.fontelement.toname}\IndexFontElement{toname} & + \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} + +\BeginIndexGroup +\BeginIndex{FontElement}{specialmail}\LabelFontElement{specialmail} +Zwischen Rücksendeadresse und Empfängeradresse kann bei \iffree{der +}{}Standardeinstellung \OptionValue{addrfield}{true} noch eine optionale +Versandart\Index{Versandart} gesetzt werden. Diese wird genau dann gesetzt, +wenn die Variable \Variable{specialmail} einen \PName{Inhalt} hat und +\OptionValue{priority}{manual}\ChangedAt{v3.03}{\Class{scrlttr2}} gewählt +wird, was der Voreinstellung entspricht. Die \PName{Bezeichnung} von +\Variable{specialmail} wird durch \Class{scrlttr2} nicht genutzt. Die +Ausrichtung wird mit Hilfe der Pseudolängen \PLength{specialmailindent} und +\PLength{specialmailrightindent} (siehe +\DescPageRef{scrlttr2-experts.plength.specialmailindent}) festgelegt. Die +voreingestellte Schriftart des Elements\ChangedAt{v2.97c}{\Class{scrlttr2}} +\FontElement{specialmail}\important{\FontElement{specialmail}}, die Sie +\autoref{tab:\LabelBase.AddresseeElements} entnehmen können, kann mit Hilfe +der Anweisungen \DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, \DescPageRef{\LabelBase.cmd.setkomafont}) +verändert werden.% +\EndIndexGroup + +\BeginIndexGroup +\BeginIndex{FontElement}{priority}\LabelFontElement{priority}% +\BeginIndex{FontElement}{prioritykey}\LabelFontElement{prioritykey}% +Wird\ChangedAt{v3.03}{\Class{scrlttr2}}\important{\normalcolor + \OptionValue{priority}{A}\\ + \normalcolor\OptionValue{priority}{B}} hingegen mit +\OptionValue{priority}{A} oder \OptionValue{priority}{B} (siehe +\autoref{tab:\LabelBase.priority}) eine internationale Priorität ausgewählt, +so wird diese bei \OptionValue{addrfield}{true} als Versandart und bei +\OptionValue{addrfield}{PP}\important{\OptionValue{addrfield}{PP}} an +entsprechender Stelle im Port-Payé-Kopf gesetzt. Dabei wird die +Grundschrift\important{\FontElement{priority}\\ + \FontElement{prioritykey}} über das Element \FontElement{priority} und die +davon abweichende Schrift für den Prioritätsschlüssel, »A« oder »B«, über das +Element \FontElement{prioritykey} bestimmt. Die voreingestellten Schriftarten +der beiden Elemente, die Sie \autoref{tab:\LabelBase.AddresseeElements} +entnehmen können, kann mit Hilfe der Anweisungen +\DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, \DescPageRef{\LabelBase.cmd.setkomafont}) +verändert werden.% +\EndIndexGroup + +\begin{table} + \caption[{Mögliche Werte für Option \Option{priority} bei + \Class{scrlttr2} und \Class{scrletter}}] + {Mögliche Werte für Option \Option{priority} zur + Auswahl einer internationalen Priorität im Adressfeld} + \label{tab:\LabelBase.priority} + \begin{desctabular} + \entry{\PValue{false}, \PValue{off}, \PValue{no}, \PValue{manual}}{% + Es wird keine Priorität gesetzt.}% + \entry{\PValue{B}, \PValue{b}, \PValue{economy}, \PValue{Economy}, + \PValue{ECONOMY}, \PValue{B-ECONOMY}, \PValue{B-Economy}, + \PValue{b-economy}}{% + Es wird die internationale Priorität B-Economy gesetzt. Bei + \OptionValue{addrfield}{true} erfolgt dies anstelle der Versandart.}% + \entry{\PValue{A}, \PValue{a}, \PValue{priority}, \PValue{Priority}, + \PValue{PRIORITY}, \PValue{A-PRIORITY}, \PValue{A-Priority}, + \PValue{a-priority}}{% + Es wird die internationale Priorität A-Priority gesetzt. Bei + \OptionValue{addrfield}{true} erfolgt dies anstelle der Versandart.}% + \end{desctabular} +\end{table} + +Bei\ChangedAt{v3.03}{\Class{scrlttr2}}\important{\OptionValue{addrfield}{PP}} +\OptionValue{addrfield}{PP} wird im Port-Payé-Kopf die Postleitzahl aus der +Variablen \Variable{fromzipcode} und der Ort aus der Variablen +\Variable{place} gesetzt. Dabei wird der Postleitzahl, also dem \PName{Inhalt} +von \Variable{fromzipcode}, die \PName{Bezeichnung} der Variablen +\Variable{fromzipcode}, gefolgt vom \PName{Inhalt} von +\Variable{zipcodeseparator} vorangestellt. Für diese \PName{Bezeichnung} hängt +die Voreinstellung von der verwendeten \File{lco}-Datei (siehe +\autoref{sec:\LabelBase.lcoFile} ab \autopageref{sec:\LabelBase.lcoFile}) +ab. Für den \PName{Inhalt} von \Variable{zipcodeseparator} ist hingegen +\iffalse % Umbruchvarianten +ein kleiner Abstand, gefolgt von einem Streckenstrich, gefolgt von einem +kleinen Abstand (\Macro{,}\texttt{-{}-}\Macro{,}) % +\else% +»\Macro{,}\texttt{-{}-}\Macro{,}« % +\fi% +voreingestellt. + +Darüber\ChangedAt{v3.03}{\Class{scrlttr2}} hinaus wird bei +\OptionValue{addrfield}{PP}\important{\OptionValue{addrfield}{PP}} im +Port-Payé-Kopf auch noch ein Code gesetzt, der den Absender eindeutig +identifiziert. Dieser ist in Variable \Variable{PPcode} abgelegt. Rechts von +der Anschrift kann zusätzlich eine Data-Matrix gesetzt werden, die in Variable +\Variable{PPdatamatrix} abgelegt ist. + +\BeginIndexGroup +\BeginIndex{FontElement}{PPdata}\LabelFontElement{PPdata} +Postleitzahl\ChangedAt{v3.03}{\Class{scrlttr2}}, Ort und Code werden in der +Voreinstellung mit einer Schrift der Größe 8\,pt gesetzt. Dabei wird die +Schrift des Elements \FontElement{PPdata}% +\important{\FontElement{PPdata}} verwendet. Dessen Voreinstellung ist +\autoref{tab:\LabelBase.AddresseeElements} zu entnehmen und kann mit Hilfe der +Anweisungen \DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, \DescPageRef{\LabelBase.cmd.setkomafont}) +verändert werden.% +\EndIndexGroup + +\BeginIndexGroup +\BeginIndex{FontElement}{PPlogo}\LabelFontElement{PPlogo} +Für den Port-Payé-Schriftzug »P.P.« kommt dagegen die Schrift des Elements +\FontElement{PPlogo}\important{\FontElement{PPlogo}} zur Anwendung. Dessen +Voreinstellung ist ebenfalls Tabelle +\autoref{tab:\LabelBase.AddresseeElements} zu entnehmen.% +\EndIndexGroup + +Bei\important{\OptionValue{addrfield}{backgroundimage}\\ + \OptionValue{addrfield}{image}} den beiden Einstellungen +\OptionValue{addrfield}{backgroundimage}\ChangedAt{v3.03}{\Class{scrlttr2}} +und \OptionValue{addrfield}{image} wird eine Abbildung in das Adressfenster +gesetzt. Diese ist im \PName{Inhalt} der Variablen \Variable{addresseeimage} +abgelegt. Die \PName{Bezeichnung} dieser Variablen wird von \KOMAScript{} +nicht genutzt. Während bei Einstellung \OptionValue{addrfield}{image} außer der +Abbildung nichts gesetzt wird, wird bei +\OptionValue{addrfield}{backgroundimage} zusätzlich noch die Anschrift aus dem +obligatorischen Argument der \DescRef{\LabelBase.env.letter}-Umgebung +ausgegeben. + +Die Anordnung des Port-Payé-Kopfes wird ebenso wie die Anordnung der +Port-Payé-Anschrift über die Pseudolängen \PLength{toaddrindent} (siehe +\DescPageRef{scrlttr2-experts.plength.toaddrindent}) sowie +\PLength{PPheadwidth} und \PLength{PPheadheight} (siehe +\DescPageRef{scrlttr2-experts.plength.PPheadheight}) bestimmt. Für die +Anordnung der Data-Matrix ist die Pseudolänge \PLength{PPdatamatrixvskip} +(siehe \DescPageRef{scrlttr2-experts.plength.PPdatamatrixvskip}) +zuständig. + +Es\textnote{Achtung!} wird an dieser Stelle ausdrücklich darauf hingewiesen, +dass \KOMAScript{} selbst keine externen Abbildungen setzen kann, sollen also +über die Variablen \Variable{addresseeimage} oder \Variable{PPdatamatrix} +externe Abbildungen gesetzt werden, so ist beispielsweise das Grafikpaket +\Package{graphics}\IndexPackage{graphics} oder +\Package{graphicx}\IndexPackage{graphicx} zu laden und in den Variablen dessen +Anweisung \Macro{includegraphics} zu verwenden.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{locfield}{Einstellung} +\end{Declaration} +\BeginIndex{}{Absenderergaenzung=Absenderergänzung}% +Neben dem Anschriftfeld setzt \Class{scrlttr2} noch ein Feld mit erweiterter +Absenderangabe. Der Inhalt ist frei wählbar. Je\important{% + \OptionValueRef{\LabelBase}{fromalign}{locationleft}\\ + \OptionValueRef{\LabelBase}{fromalign}{center}\\ + \OptionValueRef{\LabelBase}{fromalign}{locationright}} nach Einstellung der +oben erklärten Option \DescRef{\LabelBase.option.fromalign} wird es außerdem +für das Logo des Absenders oder den Absender selbst mitverwendet. Die Breite +dieses Feldes kann beispielsweise in einer \File{lco}-Datei (siehe +\autoref{sec:\LabelBase.lcoFile}) gesetzt werden. Wird dort die Breite 0 +gesetzt, so kann über die Option \Option{locfield} zwischen zwei +unterschiedlichen Voreinstellungen für die Breite dieses Feldes gewählt +werden. Dies ist bei der Mehrzahl der \File{lco}-Dateien der Fall, die +\KOMAScript{} beiliegen. Siehe hierzu auch die Erklärungen zur Pseudolänge +\PLength{locwidth} in \autoref{sec:scrlttr2-experts.locationField}, +\DescPageRef{scrlttr2-experts.plength.locwidth}. Mögliche Werte für die Option +sind \autoref{tab:\LabelBase.locfield} zu +entnehmen. Voreingestellt\textnote{Voreinstellung} ist \PValue{narrow}. +% +\begin{table} +% \caption + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside} + [{Mögliche Werte für Option \Option{locfield} bei + \Class{scrlttr2}}] + {Mögliche Werte für Option \Option{locfield} zur Wahl der Breite des + Feldes für die Absenderergänzung bei \Class{scrlttr2}% + \label{tab:\LabelBase.locfield}}% + [l] + \begin{minipage}[t]{.55\linewidth} + \begin{desctabular}[t] + \pventry{narrow}{schmales Feld für Absenderergänzungen}% + \pventry{wide}{breites Feld für Absenderergänzungen}% + \end{desctabular} + \end{minipage} + \end{captionbeside} +\end{table} + +\begin{Declaration} + \Variable{location} +\end{Declaration} +Der Inhalt der Absenderergänzung, soweit er nicht durch Logo oder den Absender +selbst belegt ist, wird mit der Variablen \Variable{location} festgelegt. Für +den \PName{Inhalt} dieser Variablen dürfen auch Formatierungsanweisungen, wie +\Macro{raggedright}, verwendet werden. Die \PName{Bezeichnung} dieser Variablen +wird von \KOMAScript{} nicht genutzt. + +\begin{Example} + Herr Musterfrau möchte ein paar zusätzliche Informationen zu seiner + Mitgliedschaft angeben. Er wählt dazu die Absenderergänzung:% + \lstinputcode[xleftmargin=1em]{letter-19.tex}% + Das entsprechende Feld neben der Anschrift wird dann wie in + \autoref{fig:\LabelBase.letter-19} gesetzt. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Beispiel: Brief mit erweitertem Absender, Logo, + Anschrift, Absenderergänzung, Anrede, Text, Grußfloskel, + Signatur, Postskriptum, Anlagen, Verteiler und Lochermarke}]{Ergebnis + eines kleinen Briefes mit erweitertem Absender, Logo, + Anschrift, Absenderergänzung, Anrede, Text, Grußfloskel, Signatur, + Postskriptum, Anlagen, Verteiler und Lochermarke (das Datum entstammt + den Voreinstellungen für DIN-Briefe)}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-19}} + \end{captionbeside} + \label{fig:\LabelBase.letter-19} + \end{figure} +\end{Example} +% +\EndIndexGroup +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{numericaldate}{Ein-Aus-Wert} +\end{Declaration} +Mit dieser Option kann zwischen der sprachabhängigen Standarddarstellung des +Datums\Index{Datum}\Index{Geschaeftszeile=Geschäftszeile} und einem ebenfalls +sprachabhängigen, kurzen, rein nummerischen Datum umgeschaltet werden. Die +Standarddarstellung wird nicht von \KOMAScript{} bereitgestellt. Sie kann +wahlweise von einem Paket wie \Package{ngerman}\IndexPackage{ngerman}, +\Package{babel}\IndexPackage{babel} oder auch +\Package{isodate}\IndexPackage{isodate} +stammen. Das\important{\OptionValue{numericaldate}{true}} kurze nummerische +Datum wird hingegen von \Class{scrlttr2} selbst erzeugt. Die Option versteht +die Standardwerte für einfache Schalter, die in \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} angegeben +sind. Voreingestellt\textnote{Voreinstellung} ist mit \PValue{false} die +Verwendung der Standarddarstellung. + +\begin{Declaration} + \Variable{date} +\end{Declaration} +Das Datum in der gewählten Darstellung wird im \PName{Inhalt} der Variablen +\Variable{date} abgelegt. Die Einstellung von +\DescRef{\LabelBase.option.numericaldate}% +\important{\DescRef{\LabelBase.option.numericaldate}} hat keine Auswirkung, +wenn diese Variable überschrieben wird. Gesetzt wird das Datum normalerweise +als Teil der Geschäftszeile. Wenn die Geschäftszeile ansonsten leer bleibt +wird allerdings nur eine Datumszeile, bestehend aus dem Ort und dem Datum, +gesetzt. Trotzdem haben auch in diesem Fall die Einstellungen der nachfolgend +beschriebenen Option \DescRef{\LabelBase.option.refline} Auswirkungen auf +diese Datumszeile. Weitere Informationen zum Ort finden Sie in der +Beschreibung zur Variablen +\DescRef{\LabelBase.variable.placeseparator}\IndexVariable{placeseparator} auf +\DescPageRef{\LabelBase.variable.placeseparator}.% +% +\EndIndexGroup +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{refline}{Einstellung} +\end{Declaration} +\BeginIndex{}{Geschaeftszeile=Geschäftszeile}% +Insbesondere bei Geschäftsbriefen findet sich häufig eine Zeile mit Angaben +wie Namenskürzeln\Index{Kuerzel=Kürzel}, Durchwahl\Index{Durchwahl}, +Kunden-\Index{Kundennummer} und Rechnungsnummer\Index{Rechnungsnummer} oder +zur Bezugnahme auf ein früheres Schreiben. Diese Zeile wird in dieser +Anleitung \emph{Geschäftszeile}\textnote{Geschäftszeile} genannt. + +Bei \Class{scrlttr2} und \Package{scrletter} können Kopf, Fuß, Anschrift und +das Feld mit der Absenderergänzung links und rechts aus dem normalen +Satzspiegel herausragen. Über +\OptionValue{refline}{wide}\important{\OptionValue{refline}{wide}} kann +gewählt werden, dass dies auch für die Geschäftszeile gelten soll. Die +Geschäftszeile enthält normalerweise zumindest das Datum, kann aber auch +weitere Angaben aufnehmen. Mögliche Werte für diese Option sind +\autoref{tab:\LabelBase.refline} zu +entnehmen. Voreingestellt\textnote{Voreinstellung} sind \PValue{narrow} und +\PValue{dateright}\ChangedAt{v3.09}{\Class{scrlttr2}}.% +% +\begin{table} + \caption[{Mögliche Werte für Option \Option{refline} bei + \Class{scrlttr2} und \Package{scrletter}}] + {Mögliche Werte für Option \Option{refline} zur + Konfiguration der Geschäftszeile} + \label{tab:\LabelBase.refline} + \begin{desctabular} + \pventry{dateleft}{\ChangedAt{v3.09}{\Class{scrlttr2}}% + Das Datum steht automatisch links in der Geschäftszeile.}% + \pventry{dateright}{\ChangedAt{v3.09}{\Class{scrlttr2}}% + Das Datum steht automatisch rechts in der Geschäftszeile.}% + \pventry{narrow}{Die Breite der Geschäftszeile richtet sich nach dem + Satzspiegel.}% + \pventry{nodate}{\ChangedAt{v3.09}{\Class{scrlttr2}}% + Das Datum wird nicht automatisch in die Geschäftszeile gesetzt.}% + \pventry{wide}{Die Breite der Geschäftszeile richtet sich nach Anschrift + und Absenderergänzung.}% + \end{desctabular} +\end{table} + +\begin{Declaration} + \Variable{yourref} + \Variable{yourmail} + \Variable{myref} + \Variable{customer} + \Variable{invoice} +\end{Declaration} +Typische Felder der Geschäftszeile werden über die fünf Variablen +\Variable{yourref}, \Variable{yourmail}, \Variable{myref}, \Variable{customer} +und \Variable{invoice} verwaltet. % +\iffalse % Umbruchkorrektur +Die Bedeutung dieser Felder % +\else % +Ihre Bedeutung % +\fi % +ist \autoref{tab:\LabelBase.variables}, \autopageref{tab:\LabelBase.variables} +zu entnehmen. Jede dieser Variablen hat auch eine vordefinierte +\PName{Bezeichnung}, die in \autoref{tab:\LabelBase.reflineTerm} zu finden +ist. Wie weitere Variablen zur Geschäftszeile hinzugefügt werden können, ist +in \autoref{sec:scrlttr2-experts.variables} ab +\DescPageRef{scrlttr2-experts.cmd.newkomavar} erklärt. + +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside} + [{Vordefinierte Bezeichnungen der Variablen der + Geschäftszeile}] + {Vordefinierte Bezeichnungen der typischen Variablen der + Geschäftszeile unter Verwendung sprachabhängiger Anweisungen% + \label{tab:\LabelBase.reflineTerm}% + } + [l] + \begin{tabular}[t]{lll} + \toprule + Name & Bezeichnung & bei deutscher Sprache \\ + \midrule + \Variable{yourref} & \DescRef{scrlttr2-experts.cmd.yourrefname} & Ihr Zeichen \\ + \Variable{yourmail} & \DescRef{scrlttr2-experts.cmd.yourmailname} & Ihr Schreiben vom \\ + \Variable{myref} & \DescRef{scrlttr2-experts.cmd.myrefname} & Unser Zeichen \\ + \Variable{customer} & \DescRef{scrlttr2-experts.cmd.customername} & Kundennummer \\ + \Variable{invoice} & \DescRef{scrlttr2-experts.cmd.invoicename} & Rechnungsnummer \\ + \DescRef{\LabelBase.variable.date} & \DescRef{scrlttr2-experts.cmd.datename} & Datum \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} + +\BeginIndexGroup +\BeginIndex{FontElement}{refname}\LabelFontElement{refname}% +\BeginIndex{FontElement}{refvalue}\LabelFontElement{refvalue}% +Schriftart und Farbe\ChangedAt{v2.97c}{\Class{scrlttr2}} der Feldbezeichnung +und des Feldinhalts können über die beiden Elemente +\FontElement{refname}\important{\FontElement{refname}, \FontElement{refvalue}} +und \FontElement{refvalue} geändert werden. Dazu werden die Anweisungen +\DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, \DescPageRef{\LabelBase.cmd.setkomafont}) +verwendet. Die Voreinstellungen der \iffree{beiden }{}Elemente sind +\autoref{tab:\LabelBase.refnamerefvalue} zu entnehmen.% +\begin{table}[tp] +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside} + [{Schriftvoreinstellungen für die Elemente der Geschäftszeile}] + {Voreinstellungen für die Schrift der Elemente der Geschäftszeile% + \label{tab:\LabelBase.refnamerefvalue}} + [l] + \begin{tabular}[t]{ll} + \toprule + Element & Voreinstellung \\ + \midrule + \FontElement{refname} & \Macro{sffamily}\Macro{scriptsize} \\ + \FontElement{refvalue} & \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table}% +% +\EndIndexGroup + + +\begin{Declaration} + \Variable{placeseparator} +\end{Declaration}% +Sind bis auf \DescRef{\LabelBase.variable.date}% +\important{\DescRef{\LabelBase.variable.date}}\IndexVariable{date} alle +Variablen der Geschäftszeile leer, so wird keine eigentliche Geschäftszeile +gesetzt. Stattdessen werden dann nur Ort\Index{Ort} und Datum\Index{Datum} +ausgegeben. Dabei bestimmt der \PName{Inhalt} der Variablen +\DescRef{\LabelBase.variable.place} den Ort. Für das Trennzeichen, das in +diesem Fall nach dem Ort gesetzt wird, ist der \PName{Inhalt} der Variablen +\Variable{placeseparator} zuständig. Der +vordefinierte\textnote{Voreinstellung} \PName{Inhalt} des Trennzeichens ist +dabei ein Komma, gefolgt von einem nicht umbrechbaren Leerzeichen. Ist der Ort +leer, so wird auch das Trennzeichen nicht gesetzt. Der vordefinierte +\PName{Inhalt} der Variablen \DescRef{\LabelBase.variable.date} ist +\Macro{today}\IndexCmd{today}\important{\Macro{today}} und hängt von der +Einstellung der Option \DescRef{\LabelBase.option.numericaldate}% +\important{\DescRef{\LabelBase.option.numericaldate}}% +\IndexOption{numericaldate} ab (siehe +\DescPageRef{\LabelBase.option.numericaldate}). + +Seit Version~3.09\ChangedAt{v3.09}{\Class{scrlttr2}} werden Ort und Datum +nicht mehr zwingend rechtsbündig ausgegeben. Stattdessen findet auch im Falle +der Datumszeile die Datumseinstellung von Option +\DescRef{\LabelBase.option.refline}\IndexOption{refline}% +\important{\DescRef{\LabelBase.option.refline}}, wie sie in +\autoref{tab:\LabelBase.refline} angegeben ist, Anwendung. + +\BeginIndexGroup +\BeginIndex{FontElement}{placeanddate}\LabelFontElement{placeanddate}% +Falls\ChangedAt{v3.12}{\Class{scrlttr2}} statt der Geschäftszeile eine solche +Datumszeile mit Ort gesetzt wird, so findet nicht die Schrifteinstellung des +Elements \DescRef{\LabelBase.fontelement.refvalue} Anwendung. Stattdessen wird +in diesem Fall das Element +\FontElement{placeanddate}\important{\FontElement{placeanddate}} verwendet, +dessen leere Voreinstellung wie gewohnt mit Hilfe der Anweisungen +\DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup}, \DescPageRef{\LabelBase.cmd.setkomafont}) +geändert werden kann.% +\EndIndexGroup + +\begin{Example} + Herr Musterfrau setzt nun auch die Variable für den Ort: + \lstinputcode[xleftmargin=1em]{letter-20.tex}% + Damit erscheint vor dem Datum, wie in \autoref{fig:\LabelBase.letter-20}, + \autopageref{fig:\LabelBase.letter-20} zu sehen, der Ort, gefolgt von den + automatischen Trennzeichen vor dem Datum. Dieses Datum wurde im Beispielcode + über Variable \DescRef{\LabelBase.variable.date} ebenfalls explizit gesetzt, + damit bei einem späteren \LaTeX-Durchlauf des Briefes das ursprüngliche + Datum erhalten bleibt und nicht etwa automatisch das Datum des \LaTeX-Laufs + verwendet wird. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Beispiel: Brief mit erweitertem Absender, Logo, + Anschrift, Absenderergänzung, Ort, Datum, Anrede, Text, + Grußfloskel, Signatur, Postskriptum, Anlagen, Verteiler und + Lochermarke}]{Ergebnis eines kleinen Briefes mit erweitertem Absender, + Logo, Anschrift, Absenderergänzung, Ort, Datum, Anrede, + Text, Grußfloskel, Signatur, Postskriptum, Anlagen, Verteiler und + Lochermarke}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-20}} + \end{captionbeside} + \label{fig:\LabelBase.letter-20} + \end{figure} +\end{Example} +% +\EndIndexGroup +\EndIndexGroup +\EndIndexGroup + + +\begin{Declaration} + \Variable{title} +\end{Declaration} +Bei \KOMAScript{} kann ein Brief zusätzlich mit einem Titel\Index{Titel} +versehen werden. Der Titel wird zentriert in der Schriftgröße \Macro{LARGE} +unterhalb der Geschäftszeile ausgegeben. + +\BeginIndex{FontElement}{lettertitle}\LabelFontElement{lettertitle}% +\BeginIndex{FontElement}{title}\LabelFontElement{title}% +Die Schriftart für das Element\ChangedAt{v3.17}{\Class{scrlttr2}\and + \Package{scrletter}} \FontElement{lettertitle}% +\important{\FontElement{lettertitle}} kann mit den Anweisungen +\DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup} ab +\DescPageRef{\LabelBase.cmd.setkomafont}) geändert werden. Dabei sind auch +Größenangaben erlaubt. Die Größe \Macro{LARGE} wird der Schriftauswahl +innerhalb von \KOMAScript{} immer vorangestellt und ist daher auch nicht +Teil\textnote{Voreinstellung} der Voreinstellung +\Macro{normalcolor}\Macro{sffamily}\Macro{bfseries}. Bei +\Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} kann als Alias für +\FontElement{lettertitle} auch +\FontElement{title}\important{\FontElement{title}} verwendet werden. Bei +Verwendung von \Package{scrletter} mit einer \KOMAScript-Klasse ist das +nicht\textnote{Achtung!} möglich, da bei diesen Klassen bereits ein Element +\FontElement{title} mit abweichender Einstellung für den Dokumenttitel +existiert.% +\EndIndex{FontElement}{title}% +\EndIndex{FontElement}{lettertitle}% +\begin{Example} + Angenommen, Sie schreiben eine Mahnung. Sie setzen einen + entsprechenden Titel: +\begin{lstcode} + \setkomavar{title}{Mahnung} +\end{lstcode} + Damit sollte der Empfänger die Mahnung als solche erkennen. +\end{Example} +Während der \PName{Inhalt} der Variablen, wie im Beispiel gezeigt, den Titel +definiert, wird die \PName{Bezeichnung} der Variablen \Variable{title} von +\KOMAScript{} nicht genutzt. +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{subject}{Einstellung} + \Variable{subject} + \Variable{subjectseparator} +\end{Declaration} +\BeginIndex{}{Betreff}% +Um einen Betreff zu setzen, legt man den \PName{Inhalt} der Variablen +\Variable{subject} entsprechend fest. Mit Option +\OptionValue{subject}{titled}\important{\OptionValue{subject}{titled}} kann +dann zum einen gewählt werden, dass der Betreff mit einem Titel versehen +werden soll oder nicht. Der Titel wird über die Bezeichnung der Variablen +\Variable{subject} bestimmt (siehe \autoref{tab:\LabelBase.subjectTerm}). +Der\textnote{Voreinstellung} vordefinierte Inhalt des +Trennzeichens\Index{Trennzeichen} \Variable{subjectseparator} besteht aus +einem Doppelpunkt, gefolgt von einem Leerzeichen. + +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside} + [{Vordefinierte Bezeichnungen der Variablen für den Betreff}] + {\hspace{0pt plus 1ex}% + Vordefinierte Bezeichnungen der Variablen für den Betreff} + [l] + \begin{tabular}[t]{lll} + \toprule + Name & Bezeichnung \\ + \midrule + \Variable{subject} & \DescRef{\LabelBase.cmd.usekomavar*}\PParameter{subjectseparator}% + \texttt{\%} \\ + & \texttt{\quad}% + \DescRef{\LabelBase.cmd.usekomavar}\PParameter{subjectseparator} \\ + \Variable{subjectseparator} & \DescRef{scrlttr2-experts.cmd.subjectname} \\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:\LabelBase.subjectTerm} +\end{table} + +Zum anderen kann über \OptionValue{subject}{afteropening}% +\important{\OptionValue{subject}{afteropening}\\ + \OptionValue{subject}{beforeopening}} gewählt werden, dass der Betreff +abweichend von der Voreinstellung +\OptionValue{subject}{beforeopening} erst nach der Anrede gesetzt werden +soll. Eine andere Formatierung% +\important{\OptionValue{subject}{underlined}\\ + \OptionValue{subject}{centered}\\ + \OptionValue{subject}{right}} kann mit \OptionValue{subject}{underlined} und +\OptionValue{subject}{centered} oder +\OptionValue{subject}{right}\ChangedAt{v2.97c}{\Class{scrlttr2}} eingestellt +werden. Mögliche Werte für Option \Option{subject} sind +\autoref{tab:\LabelBase.subject} zu entnehmen. Es\textnote{Achtung!} wird +ausdrücklich darauf hingewiesen, dass bei der Einstellung +\OptionValue{subject}{underlined} der Betreff komplett in eine Zeile passen +muss! Voreingestellt\textnote{Voreinstellung} sind +\OptionValue{subject}{left}, \OptionValue{subject}{beforeopening} und +\OptionValue{subject}{untitled}.% +% +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside} + [{Mögliche Werte für Option \Option{subject} bei \Class{scrlttr2}}] + {\hspace{0pt plus 1ex}% + Mögliche Werte für Option \Option{subject} zur Platzierung und + Formatierung eines Betreffs bei \Class{scrlttr2}% + \label{tab:\LabelBase.subject}} + [l] + \begin{minipage}[t]{.667\linewidth} + \begin{desctabular}[t] + \pventry{afteropening}{Betreff nach der Anrede setzen}% + \pventry{beforeopening}{Betreff vor der Anrede setzen}% + \pventry{centered}{Betreff zentrieren}% + \pventry{left}{Betreff linksbündig setzen}% + \pventry{right}{Betreff rechtsbündig setzen}% + \pventry{titled}{Betreff mit Titel versehen}% + \pventry{underlined}{Betreff unterstreichen (Hinweis im + Text beachten!)}% + \pventry{untitled}{Betreff nicht mit Titel versehen}% + \end{desctabular} + \end{minipage} + \end{captionbeside} +\end{table} + +\BeginIndexGroup +\BeginIndex{FontElement}{lettersubject}\LabelFontElement{lettersubject}% +\BeginIndex{FontElement}{subject}\LabelFontElement{subject}% +Der Betreff wird in einer eigenen Schriftart\Index{Schrift>Art} gesetzt. Um +diese zu ändern, verwenden Sie die Anweisungen +\DescRef{\LabelBase.cmd.setkomafont} und +\DescRef{\LabelBase.cmd.addtokomafont} (siehe +\autoref{sec:\LabelBase.textmarkup} ab +\DescPageRef{\LabelBase.cmd.setkomafont}). Für das +Element\ChangedAt{v3.17}{\Class{scrlttr2}\and \Package{scrletter}} +\FontElement{lettersubject}\important{\FontElement{lettersubject}} ist als +Schrift \Macro{normalcolor}\Macro{bfseries} voreingestellt. Bei Klasse +\Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} kann als Alias für +\FontElement{lettersubject} auch +\FontElement{subject}\important{\FontElement{subject}} verwendet werden. Bei +Verwendung von Paket \Package{scrletter} mit einer \KOMAScript-Klasse ist das +nicht\textnote{Achtung!} möglich, da bei diesen Klassen bereits ein Element +\FontElement{subject} mit abweichender Einstellung für den Dokumenttitel +existiert. +\EndIndexGroup + +\begin{Example} + Herr Musterfrau setzt nun auch den Betreff. Als eher traditioneller + veranlagter Mensch möchte er außerdem, dass der Betreff mit einer + entsprechenden Spitzmarke versehen wird, und setzt deshalb auch die + zugehörige Option:% + \lstinputcode[xleftmargin=1em]{letter-21.tex}% + Das Ergebnis ist in \autoref{fig:\LabelBase.letter-21} zu sehen. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Beispiel: Brief mit erweitertem Absender, Logo, + Anschrift, Absenderergänzung, Ort, Datum, Betreff, Anrede, Text, + Grußfloskel, Signatur, Postskriptum, Anlagen, Verteiler und + Lochermarke}]{Ergebnis eines kleinen Briefes mit erweitertem Absender, + Logo, Anschrift, Absenderergänzung, Ort, Datum, Betreff, + Anrede, Text, Grußfloskel, Signatur, Postskriptum, Anlagen, Verteiler + und Lochermarke}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-21}} + \end{captionbeside} + \label{fig:\LabelBase.letter-21} + \end{figure} +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{firstfoot}{Ein-Aus-Wert} +\end{Declaration} +\BeginIndex{}{Briefbogenfuss=Briefbogenfuß}% +Diese\ChangedAt{v2.97e}{\Class{scrlttr2}} Option bestimmt, ob der +Briefbogenfuß überhaupt gesetzt wird. Das Abschalten mit +\OptionValue{firstfoot}{false}\important{\OptionValue{firstfoot}{false}} hat +Auswirkungen wenn gleichzeitig Option +\DescRef{\LabelBase.option.enlargefirstpage} (siehe +\DescPageRef{\LabelBase.option.enlargefirstpage}) verwendet wird, da sich +dadurch die Seite logisch nach unten verlängert. Zwischen dem Ende des +Satzspiegels und dem Seitenende bleibt dann nur der normale Abstand zwischen +Satzspiegel und Seitenfuß. + +Die Option versteht die Standardwerte für einfache Schalter, die in +\autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch} angegeben +sind. Voreingestellt\textnote{Voreinstellung} ist das Setzen des +Briefbogenfußes.% +% +\EndIndexGroup + + +\begin{Declaration} + \Variable{firstfoot} +\end{Declaration}% +\BeginIndex{}{Briefbogenfuss=Briefbogenfuß}% +Der Fuß der ersten Seite ist in der Voreinstellung leer. Es besteht jedoch die +Möglichkeit, über den \PName{Inhalt} der +Variablen\ChangedAt{v3.08}{\Class{scrlttr2}} \Variable{firstfoot} einen +neue Festlegung zu treffen. Die \PName{Bezeichnung} der Variablen wird von +\KOMAScript{} nicht genutzt. + +\BeginIndex{Variable}{frombank}% +\begin{Example} + Sie wollen den Inhalt der Variablen \DescRef{\LabelBase.variable.frombank}, also die + Bankverbindung im Fuß der ersten Seite ausgeben. Der doppelte + Backslash soll dabei durch ein Komma ersetzt werden: +\begin{lstcode} + \setkomavar{firstfoot}{% + \parbox[b]{\linewidth}{% + \centering\def\\{, }\usekomavar{frombank}% + }% + } +\end{lstcode} + Natürlich können Sie für das Trennzeichen auch eine eigene Variable + definieren. Ich überlasse dem Leser dies als Übung. + + Will man eine Art Brief"|fuß als Gegengewicht zum Briefkopf verwenden, so + kann dieser beispielsweise wie folgt definiert werden: +\begin{lstcode} + \setkomavar{firstfoot}{% + \parbox[t]{\textwidth}{\footnotesize + \begin{tabular}[t]{l@{}}% + \multicolumn{1}{@{}l@{}}{Gesellschafter:}\\ + Hugo Mayer\\ + Bernd Müller + \end{tabular}% + \hfill + \begin{tabular}[t]{l@{}}% + \multicolumn{1}{@{}l@{}}{Geschäftsführung:}\\ + Liselotte Mayer\\[1ex] + \multicolumn{1}{@{}l@{}}{Gerichtsstand:}\\ + Hinterdupfeldingen + \end{tabular}% + \ifkomavarempty{frombank}{}{% + \hfill + \begin{tabular}[t]{l@{}}% + \multicolumn{1}{@{}l@{}}{% + \usekomavar*{frombank}:}\\ + \usekomavar{frombank} + \end{tabular}% + }% + }% + } +\end{lstcode} + Das Beispiel stammt ursprünglich von Torsten Krüger. Es wird empfohlen, eine + solche Definition für die mehrfache Verwendung in unterschiedlichen + Dokumenten in einer eigenen + \File{lco}-Datei\Index{lco-Datei=\File{lco}-Datei} abzulegen. Mit +\begin{lstcode} + \setkomavar{frombank}{IBAN DE21~87654321~13456789\\ + bei der HansWurstBank\\ + BIC GRMLDEHD000} +\end{lstcode} + kann die Bankverbindung dann im Dokument passend dazu gesetzt werden.% +\iffalse% Umbruchkorrekturmöglichkeit + \ Abhängig\textnote{Achtung!} von den Voreinstellungen ist ein solch hoher + Fuß jedoch eventuell nicht vorgesehen und wird deshalb möglicherweise zu + tief platziert. In einem solchen Fall kann die vertikale Position über die + Pseudolänge \DescRef{scrlttr2-experts.plength.firstfootvpos}% + \important{\DescRef{scrlttr2-experts.plength.firstfootvpos}}% + \IndexPLength{firstfootvpos} angepasst werden (siehe + \DescPageRef{scrlttr2-experts.plength.firstfootvpos}).% +\fi +\end{Example} + +Im\textnote{Achtung!} Beispiel wurde ein mehrzeiliger Fuß gesetzt. Bei einer +Kompatibilitätseinstellung ab Version +2.9u\important{\OptionValueRef{\LabelBase}{version}{2.9u}} (siehe +\DescRef{\LabelBase.option.version} in +\autoref{sec:\LabelBase.compatibilityOptions}, +\DescPageRef{\LabelBase.option.version}) reicht der Platz dafür in der Regel +nicht aus. Sie sollten dann \PLength{firstfootvpos} (siehe +\DescPageRef{scrlttr2-experts.plength.firstfootvpos}) entsprechend +verringern.% +\EndIndexGroup + +\begin{Declaration} + \Variable{frombank} +\end{Declaration}% +\BeginIndex{}{Briefbogenfuss=Briefbogenfuß} Die im vorherigen Beispiel +verwendete Variable \Variable{frombank} nimmt derzeit eine Sonderstellung +ein. Sie wird intern bisher nicht verwendet. Sie kann jedoch vom Anwender +verwendet werden, um die Bankverbindung\Index{Bankverbindung} in das +Absenderergänzungsfeld (siehe Variable \DescRef{\LabelBase.variable.location}, +\DescPageRef{\LabelBase.variable.location}) oder wie im Beispiel in den Fuß zu +setzen.% +% +\EndIndexGroup +% +\EndIndexGroup + +\LoadCommonFile{parmarkup}% \section{Absatzauszeichnung} + +\LoadCommonFile{oddorevenpage}% \section{Erkennung von rechten und linken Seiten} + + +\section{Kopf und Fuß bei vordefinierten Seitenstilen} +\seclabel{pagestyle} +\BeginIndexGroup +\BeginIndex{}{Seiten>Stil} + +Eine der allgemeinen Eigenschaften eines Dokuments ist der Seitenstil. Bei +{\LaTeX} versteht man unter dem Seitenstil in erster Linie den Inhalt der +Kopf- und Fußzeilen. Wie\textnote{Achtung!} bereits in +\autoref{sec:\LabelBase.firstpage} erwähnt, werden Kopf und Fuß des Briefbogens +als Elemente des Briefbogens betrachtet und unterliegen damit nicht den +Einstellungen für den Seitenstil. Es geht also hier im Wesentlichen um den +Seitenstil der weiteren Briefseiten nach dem Briefbogen. Bei einseitigen +Briefen ist das der Seitenstil des Zweitbogens. Bei doppelseitigen Briefen ist +auch der Seitenstil aller Rückseiten betroffen. + + +\begin{Declaration} + \Macro{letterpagestyle} +\end{Declaration} +Der\ChangedAt{v3.19}{\Class{scrlttr2}\and \Package{scrletter}} für Briefe +voreingestellte Seitenstil wird durch den Inhalt dieser Anweisung bestimmt. In +der Voreinstellung\textnote{Voreinstellung} von +\Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} ist die Anweisung leer +definiert. Das bedeutet, dass der Seitenstil von Briefen dem des restlichen +Dokuments entspricht. Dies ist deshalb sinnvoll, weil \Class{scrlttr2} für +reine Briefdokumente gedacht ist und es dafür einfacher ist, den Seitenstil +wie gewohnt mit \DescRef{\LabelBase.cmd.pagestyle} global einzustellen. + +Da sowohl Seitenstil \DescRef{\LabelBase.pagestyle.plain} als auch der Stil +\DescRef{\LabelBase.pagestyle.headings} anderer Klassen vom gewünschten +Seitenstil für Briefe abweicht, ist für das Paket +\Package{scrletter}\OnlyAt{\Package{scrletter}}\textnote{Voreinstellung} der +Seitenstil +\DescRef{\LabelBase.pagestyle.plain.letter}\IndexPagestyle{plain.letter}% +\important{\DescRef{\LabelBase.pagestyle.plain.letter}} in der Anweisung +\Macro{letterpagestyle} gespeichert. Damit werden alle Briefe mit dem zum +Seitenstil \DescRef{\LabelBase.pagestyle.letter}\IndexPagestyle{letter} +gehörenden +\hyperref[desc:\LabelBase.pagestyle.plain.letter]{\PageStyle{plain}}-Seitenstil +gesetzt unabhängig davon, was für das restliche Dokument als Seitenstil +eingestellt ist. +\begin{Example} + Sie wollen auch bei Verwendung von Paket \Package{scrletter}, dass die + Briefe in dem Seitenstil gesetzt werden, der für das Dokument selbst mit + \DescRef{\LabelBase.cmd.pagestyle} eingestellt wurde. Dazu schreiben sie die + Anweisung +\begin{lstcode} + \renewcommand*{\letterpagestyle}{} +\end{lstcode} + in die Dokumentpräambel. Dabei ist übrigens der Stern bei + \Macro{renewcommand*} wichtig!% +\end{Example} +Natürlich haben die Anweisung \DescRef{\LabelBase.cmd.pagestyle} und +\DescRef{\LabelBase.cmd.thispagestyle} innerhalb eines Briefes Vorrang vor dem +innerhalb von \Macro{begin}\PParameter{letter} über \Macro{letterpagestyle} +eingestellten Seitenstil.% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{headsepline}{Ein-Aus-Wert} + \OptionVName{footsepline}{Ein-Aus-Wert} +\end{Declaration}% +Mit diesen Optionen kann bei \Class{scrlttr2}\OnlyAt{scrlttr2} eingestellt +werden, ob eine Trennlinie\Index{Trennlinie}\Index{Linie} unter dem +Kopf\Index{Seiten>Kopf} oder über dem Fuß\Index{Seiten>Fuss=Fuß} von +Folgeseiten gewünscht wird. Als \PName{Ein-Aus-Wert} kann einer der +Standardwerte für einfache Schalter aus \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} verwendet +werden. Ein\important{\OptionValue{headsepline}{true}} Aktivieren der Option +\Option{headsepline} schaltet die Linie unter dem Kopf +ein. Ein\important{\OptionValue{footsepline}{true}} Aktivieren der Option +\Option{footsepline} schaltet die Linie über dem Fuß ein. Die Deaktivierung +der Optionen schaltet die jeweilige Linie aus. + +Beim Seitenstil \DescRef{\LabelBase.pagestyle.empty}% +\important{\DescRef{\LabelBase.pagestyle.empty}} (siehe später in +diesem Abschnitt) haben die Optionen \Option{headsepline} und +\Option{footsepline} selbstverständlich keine Auswirkung. Bei diesem +Seitenstil soll ja auf Seitenkopf\Index{Seiten>Kopf} und +Seitenfuß\Index{Seiten>Fuss=Fuß} ausdrücklich verzichtet werden. + +Typografisch\important{\DescRef{\LabelBase.pagestyle.headings}\\ + \DescRef{\LabelBase.pagestyle.myheadings}\\ + \DescRef{\LabelBase.pagestyle.plain}} betrachtet hat eine solche Linie immer +die Auswirkung, dass der Kopf oder Fuß optisch näher an den Text heranrückt. +Dies bedeutet nun nicht, dass Kopf oder Fuß räumlich weiter vom +Textkörper\Index{Text>Bereich} weggerückt werden müssten. Stattdessen sollten +sie dann bei der Berechnung des Satzspiegels als zum Textkörper gehörend +betrachtet werden. Dies wird bei \Class{scrlttr2} dadurch erreicht, dass bei +Verwendung der Klassenoption \Option{headsepline} automatisch die Paketoption +\DescRef{typearea.option.headinclude}% +\important{\DescRef{typearea.option.headinclude}} mit gleichem Wert an das +\hyperref[cha:typearea]{\Package{typearea}}-Paket weitergereicht +wird. Entsprechendes gilt bei \DescRef{\LabelBase.option.footsepline} für +\DescRef{typearea.option.footinclude}% +\important{\DescRef{typearea.option.footinclude}}. + +Die Optionen führen selbst keine automatische Neuberechnung des Satzspiegels +aus. Zur Neuberechnung des Satzspiegels siehe Option +\DescRef{typearea.option.DIV} mit den Werten \PValue{last} oder +\PValue{current} (siehe \DescPageRef{typearea.option.DIV.last}) oder die +Anweisung \DescRef{typearea.cmd.recalctypearea} (siehe +\DescPageRef{typearea.cmd.recalctypearea}) in \autoref{cha:typearea}. + +Das Paket \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} (siehe +\autoref{cha:scrlayer-scrpage}) bietet weitere Einflussmöglichkeiten für +Linien im Kopf und Fuß und kann auch mit \Class{scrlttr2} kombiniert +werden. Das Paket \Package{scrletter} verwendet hingegen automatisch +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} zur +Definition der Seitenstile \DescRef{\LabelBase.pagestyle.letter} und +\DescRef{\LabelBase.pagestyle.plain.letter}. + +Die von \Package{scrletter}\OnlyAt{\Package{scrletter}} definierten Seitenstile +\DescRef{\LabelBase.pagestyle.letter} und +\DescRef{\LabelBase.pagestyle.plain.letter} unterliegen den Regeln von +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}. Dies betrifft +insbesondere das Setzen der Linien in Kopf und Fuß des +\PageStyle{plain}-Seitenstils +\DescRef{\LabelBase.pagestyle.plain.letter}. Siehe dazu in +\autoref{sec:scrlayer-scrpage.pagestyle.content}, +\DescPageRef{scrlayer-scrpage.option.headsepline} und +\DescPageRef{scrlayer-scrpage.option.plainheadsepline} die Optionen +\DescRef{scrlayer-scrpage.option.headsepline} und +\DescRef{scrlayer-scrpage.option.plainheadsepline}. Auch Einstellungen wie +\DescRef{scrlayer-scrpage.option.automark} sind für den Seitenstil +\DescRef{\LabelBase.pagestyle.letter} von einiger Bedeutung.% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{pagenumber}{Position} +\end{Declaration} +Mit Hilfe dieser Option kann bestimmt werden, ob und wo eine Seitenzahl auf +Folgeseiten gesetzt werden soll. Die Option wirkt sich bei +\Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} auf die +Seitenstile\important{\DescRef{\LabelBase.pagestyle.headings}\\ + \DescRef{\LabelBase.pagestyle.myheadings}\\ + \DescRef{\LabelBase.pagestyle.plain}} +\DescRef{\LabelBase.pagestyle.headings}, +\DescRef{\LabelBase.pagestyle.myheadings} und +\DescRef{\LabelBase.pagestyle.plain} und bei +\Package{scrletter}\OnlyAt{\Package{scrletter}} auf +\DescRef{\LabelBase.pagestyle.letter} und +\DescRef{\LabelBase.pagestyle.plain.letter} aus. Sie beeinflusst außerdem die +Voreinstellung der Seitenstile des Pakets +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}}% +\IndexPackage{scrlayer-scrpage}, soweit sie vor dem Laden des Pakets gesetzt +wird (siehe \autoref{cha:scrlayer-scrpage}). Es gibt Werte, die sich nur auf +die horizontale Position auswirken, Werte, die nur die vertikale Position +beeinflussen, und Werte, die zugleich die vertikale und die horizontale +Position festlegen. Mögliche Werte sind \autoref{tab:\LabelBase.pagenumber} zu +entnehmen. Voreingestellt\textnote{Voreinstellung} ist \PValue{botcenter}. + +\begin{table}[t!]% Umbruchkorrektur + \caption[{Mögliche Werte für Option \Option{pagenumber} bei \Class{scrlttr2} + und \Package{scrletter}}]{Mögliche Werte für Option \Option{pagenumber} + zur Positionierung der Paginierung innerhalb der Seitenstile} + \label{tab:\LabelBase.pagenumber} + \begin{desctabular} + \entry{\PValue{bot}, \PValue{foot}}{% + Seitenzahl im Fuß ohne Änderung der horizontalen Position}% + \entry{\PValue{botcenter}, \PValue{botcentered}, \PValue{botmittle}, + \PValue{footcenter}, \PValue{footcentered}, \PValue{footmiddle}}{% + Seitenzahl zentriert innerhalb des Fußes}% + \entry{\PValue{botleft}, \PValue{footleft}}{% + Seitenzahl links im Fuß}% + \entry{\PValue{botright}, \PValue{footright}}{ Seitenzahl rechts im Fuß}% + \entry{\PValue{center}, \PValue{centered}, \PValue{middle}}{% + Seitenzahl zentriert ohne Änderung der vertikalen Position}% + \entry{\PValue{false}, \PValue{no}, \PValue{off}}{% + keine Seitenzahl}% + \entry{\PValue{head}, \PValue{top}}{% + Seitenzahl im Kopf ohne Änderung der horizontalen Position}% + \entry{\PValue{headcenter}, \PValue{headcentered}, \PValue{headmiddle}, + \PValue{topcenter}, \PValue{topcentered}, \PValue{topmiddle}}{% + Seitenzahl zentriert innerhalb des Kopfes}% + \entry{\PValue{headleft}, \PValue{topleft}}{% + Seitenzahl links im Kopf}% + \entry{\PValue{headright}, \PValue{topright}}{% + Seitenzahl rechts im Kopf}% + \entry{\PValue{left}}{% + Seitenzahl links ohne Änderung der vertikalen Position}% + \entry{\PValue{right}}{% + Seitenzahl rechts ohne Änderung der vertikalen Position}% + \end{desctabular} +\end{table} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{pagestyle}\Parameter{Seitenstil} + \Macro{thispagestyle}\Parameter{lokaler Seitenstil} +\end{Declaration}% +\BeginIndex{Pagestyle}{empty}% +\BeginIndex{Pagestyle}{plain}% +\BeginIndex{Pagestyle}{headings}% +\BeginIndex{Pagestyle}{myheadings}% +Bei Briefen mit \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} wird zwischen vier +verschiedenen Seitenstilen unterschieden. Dagegen definiert +\Package{scrletter}\OnlyAt{\Package{scrletter}} nur zwei eigene Seitenstile. +\begin{description}\setkomafont{descriptionlabel}{} +\item[{\PageStyle{empty}}] + \LabelPageStyle{empty}% + ist der Seitenstil, bei dem Kopf- und Fußzeile von + Folgeseiten vollständig leer bleiben. Dieser Seitenstil wird auch + automatisch für die erste Briefseite verwendet, da auf dieser Seite Kopf und + Fuß über \DescRef{\LabelBase.cmd.opening}\IndexCmd{opening} (siehe + \autoref{sec:\LabelBase.firstpage}, \DescPageRef{\LabelBase.cmd.opening}) + mit anderen Mitteln gesetzt werden. +\item[{\PageStyle{headings}}] + \LabelPageStyle{headings}% + ist bei \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} der Seitenstil für + automatische Kolumnentitel auf Folgeseiten. Dabei werden als automatisch + gesetzte Marken der Absendername aus der Variablen + \DescRef{\LabelBase.variable.fromname}\IndexVariable{fromname} und der + Betreff aus der Variablen + \DescRef{\LabelBase.variable.subject}\IndexVariable{subject} verwendet + (siehe \autoref{sec:\LabelBase.firstpage}, + \DescPageRef{\LabelBase.variable.fromname} und + \DescPageRef{\LabelBase.variable.subject}). Wo genau diese Marken und die + Seitenangabe ausgegeben werden, hängt von der oben erklärten Option + \DescRef{\LabelBase.option.pagenumber} und dem Inhalt der Variablen + \DescRef{\LabelBase.variable.nexthead}\IndexVariable{nexthead} und + \DescRef{\LabelBase.variable.nextfoot}\IndexVariable{nextfoot} ab. Der Autor + kann die Marken aber auch noch nach \DescRef{\LabelBase.cmd.opening} manuell + beeinflussen. Hierzu stehen wie üblich die Anweisungen + \DescRef{\LabelBase.cmd.markboth} und \DescRef{\LabelBase.cmd.markright}, + bei Verwendung von + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + \IndexPackage{scrlayer-scrpage}% + \important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} + auch \DescRef{scrlayer-scrpage.cmd.markleft} (siehe + \autoref{sec:scrlayer-scrpage.pagestyle.content}, + \DescPageRef{scrlayer-scrpage.cmd.markleft}), zur Verfügung. + + Da \Package{scrletter}\OnlyAt{scrletter} intern + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} verwendet, wird + ein eventuell von der Klasse bereitgestellter Seitenstil + \DescRef{maincls.pagestyle.headings} als Alias von + \DescRef{scrlayer-scrpage.pagestyle.scrheadings} umdefiniert. Näheres zu + diesem Seitenstil ist in \autoref{cha:scrlayer-scrpage} auf + \DescPageRef{scrlayer-scrpage.pagestyle.scrheadings} zu erfahren. +\item[{\PageStyle{letter}}] + \LabelPageStyle{letter}% + Da der Seitenstil \PageStyle{headings} im allgemeinen bereits von den + Klassen belegt ist, definiert das Paket + \Package{scrletter}\OnlyAt{scrletter} stattdessen einen Seitenstil + \PageStyle{letter}. Dies geschieht mit Hilfe von + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} aus + \autoref{cha:scrlayer-scrpage}, \autopageref{cha:scrlayer-scrpage}. Bei der + Einstellung \OptionValueRef{scrlayer-scrpage}{automark}{true}% + \important{\OptionValueRef{scrlayer-scrpage}{automark}{true}}% + \IndexOption{automark} übernimmt \PageStyle{letter} dann die Rolle, die bei + \Class{scrlttr2} von \PageStyle{headings} ausgefüllt wird. Bei + \OptionValueRef{scrlayer-scrpage}{automark}{false}% + \important{\OptionValueRef{scrlayer-scrpage}{automark}{false}}% + \IndexOption{automark} übernimmt \PageStyle{letter} dagegen die Rolle von + \PageStyle{myheadings}. + + Durch\textnote{Achtung!} die Verwendung von + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} kann das + veraltete Paket \Package{scrpage2}\IndexPackage{scrpage2} + oder das mit \KOMAScript{} wenig kompatible Paket + \Package{fancyhdr}\IndexPackage{fancyhdr} nicht zusammen mit + \Package{scrletter} verwendet werden. +\item[{\PageStyle{myheadings}}] + \LabelPageStyle{myheadings}% + ist bei \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} der Seitenstil für + manuelle Kolumnentitel auf Folgeseiten. Im Unterschied zu \PValue{headings} + müssen die Marken vom Anwender gesetzt werden. Er verwendet dazu die + Anweisungen \DescRef{\LabelBase.cmd.markboth}\IndexCmd{markboth} und + \DescRef{\LabelBase.cmd.markright}\IndexCmd{markright}. Bei Verwendung von + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} steht außerdem + \DescRef{scrlayer-scrpage.cmd.markleft}\IndexCmd{markleft} zur Verfügung. + + Beim Paket \Package{scrletter}\OnlyAt{\Package{scrletter}} übernimmt der + Seitenstil \PageStyle{letter} ebenfalls die Rolle von + \PageStyle{myheadings}. +\item[{\PageStyle{plain}}] + \LabelPageStyle{plain}% + ist bei \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} + der voreingestellte Seitenstil, bei dem auf Folgeseiten keinerlei + Kolumnentitel verwendet, sondern nur eine Seitenangabe ausgegeben wird. Wo + diese gesetzt wird, hängt von der oben erklärten Option + \DescRef{\LabelBase.option.pagenumber} ab. + + Da \Package{scrletter}\OnlyAt{scrletter} intern + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} verwendet, wird + der Seitenstil \DescRef{maincls.pagestyle.plain} als Alias von + \DescRef{scrlayer-scrpage.pagestyle.plain.scrheadings} umdefiniert. Näheres + zu diesem Seitenstil ist in \autoref{cha:scrlayer-scrpage} auf + \DescPageRef{scrlayer-scrpage.pagestyle.scrheadings} zu erfahren. +\item[{\PageStyle{plain.letter}}] + \LabelPageStyle{plain.letter}% + Da der Seitenstil \PageStyle{plain} im allgemeinen bereits von den Klassen + belegt ist, definiert das Paket \Package{scrletter}\OnlyAt{scrletter} + stattdessen einen Seitenstil \PageStyle{plain.letter}. Dies geschieht mit + Hilfe von \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}. + Durch\textnote{Achtung!} diese Verwendung von + \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}} kann das + veraltete Pakete \Package{scrpage2}\IndexPackage{scrpage2} oder das mit + \KOMAScript{} wenig kompatible Paket + \Package{fancyhdr}\IndexPackage{fancyhdr} nicht zusammen mit + \Package{scrletter} verwendet werden. +\end{description} + +Die Form der Seitenstile wird außerdem durch die oben erklärten +Optionen\important{\DescRef{\LabelBase.option.headsepline}\\ + \DescRef{\LabelBase.option.footsepline}} +\DescRef{\LabelBase.option.headsepline}\IndexOption{headsepline} und +\DescRef{\LabelBase.option.footsepline}\IndexOption{footsepline} +beeinflusst. Der Seitenstil ab der aktuellen Seite wird mit \Macro{pagestyle} +umgeschaltet. Demgegenüber verändert \Macro{thispagestyle} nur den Seitenstil +der aktuellen Seite. \KOMAScript\textnote{Achtung!} verwendet +\Macro{thispagestyle}\PParameter{empty} selbst innerhalb von +\DescRef{\LabelBase.cmd.opening}\IndexCmd{opening} für die erste Briefseite. + +\BeginIndexGroup +\BeginIndex[indexother]{}{Schrift>Art}% +\BeginIndex{FontElement}{pageheadfoot}\LabelFontElement{pageheadfoot}% +\BeginIndex{FontElement}{pagefoot}\LabelFontElement{pagefoot}% +\BeginIndex{FontElement}{pagenumber}\LabelFontElement{pagenumber}% +Um die Schriftart von Kopf und Fuß der Seite oder der Seitenangabe zu ändern, +verwenden Sie die Benutzerschnittstelle, die in +\autoref{sec:\LabelBase.textmarkup} beschrieben ist. Für den Kopf und den Fuß +ist dabei das gleiche Element zuständig, das Sie wahlweise mit +\FontElement{pageheadfoot}\important{\FontElement{pagehead}} oder +\FontElement{pagehead} benennen können. Für den +Fuß\ChangedAt{v3.00}{\Class{scrlttr2}} ist zusätzlich auch noch das Element +\FontElement{pagefoot}\important{\FontElement{pagefoot}} zuständig, das nach +\FontElement{pageheadfoot} in mit Variable +\DescRef{\LabelBase.variable.nextfoot}\IndexVariable{nextfoot} oder per Paket +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} (siehe +\autoref{cha:scrlayer-scrpage}, +\DescPageRef{scrlayer-scrpage.fontelement.pagefoot}) definierten Seitenstilen +zur Anwendung kommt. Das Element für die Seitenzahl innerhalb des Kopfes oder +Fußes heißt \FontElement{pagenumber}\important{\FontElement{pagenumber}}. Die +Voreinstellungen sind in \autoref{tab:maincls.defaultFontsHeadFoot}, +\autopageref{tab:maincls.defaultFontsHeadFoot} zu finden. Beachten Sie dazu +auch das Beispiel aus \autoref{sec:maincls.pagestyle}, +\PageRefxmpl{maincls.cmd.pagestyle}.% +% +\EndIndexGroup +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{markboth}\Parameter{linke Marke}\Parameter{rechte Marke} + \Macro{markright}\Parameter{rechte Marke} +\end{Declaration} +In den meisten Fällen werden die Möglichkeiten, die \KOMAScript{} über +Optionen und Variablen für die Gestaltung des Seitenkopfes\Index{Kopf} und +-fußes\Index{Fuss=Fuß} auf Folgeseiten\Index{Folgeseite} zur Verfügung stellt, +vollkommen ausreichen. Dies gilt umso mehr, als man zusätzlich mit +\Macro{markboth} und \Macro{markright} die Möglichkeit hat, die Angaben zu +ändern, die \Class{scrlttr2} oder \Package{scrletter} in den Kopf setzt. Die +Anweisungen \Macro{markboth}\IndexCmd{markboth} und +\Macro{markright}\IndexCmd{markright} können insbesondere mit dem Seitenstil +\PageStyle{myheadings}% +\IndexPagestyle{myheadings}\important{\PageStyle{myheadings}} verwendet +werden. Bei Verwendung des Pakets +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\IndexPackage{scrlayer-scrpage}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}} gilt +dies natürlich auch für den Seitenstil \PageStyle{scrheadings}% +\IndexPagestyle{scrheadings}\important{\PageStyle{scrheadings}}. Dort steht +außerdem die Anweisung \DescRef{scrlayer-scrpage.cmd.markleft}% +\IndexCmd{markleft}\important{\DescRef{scrlayer-scrpage.cmd.markleft}} zur +Verfügung (siehe \autoref{sec:scrlayer-scrpage.pagestyle.content}, +\DescPageRef{scrlayer-scrpage.cmd.markleft}). + +\begin{Declaration} + \Variable{nexthead} + \Variable{nextfoot} +\end{Declaration} +In einigen wenigen Fällen will man jedoch den Kopf oder Fuß der Folgeseiten +ähnlich dem Briefbogen freier gestalten. In\textnote{Achtung!} diesen Fällen +muss auf die vordefinierten Möglichkeiten, die per oben erklärter Option +\DescRef{\LabelBase.option.pagenumber}\IndexOption{pagenumber} auswählbar +sind, verzichtet werden. Stattdessen gestaltet man sich den Kopf und Fuß der +Folgeseiten bei \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} im Seitenstil +\DescRef{\LabelBase.pagestyle.headings}\IndexPagestyle{headings}% +\important{\DescRef{\LabelBase.pagestyle.headings}, + \DescRef{\LabelBase.pagestyle.myheadings}} oder +\DescRef{\LabelBase.pagestyle.myheadings}\IndexPagestyle{myheadings} und bei +\Package{scrletter}\OnlyAt{\Package{scrletter}} im Seitenstil +\DescRef{\LabelBase.pagestyle.letter}% +\IndexPagestyle{letter}\important{\DescRef{\LabelBase.pagestyle.letter}} +frei. Dazu setzt man den gewünschten Aufbau als \PName{Inhalt} der +Variablen\ChangedAt{v3.08}{\Class{scrlttr2}} \Variable{nexthead} +beziehungsweise \Variable{nextfoot}. Innerhalb des Inhalts von +\Variable{nexthead} und \Variable{nextfoot} können beispielsweise mit Hilfe +der \Macro{parbox}-Anweisung (siehe \cite{latex:usrguide}) mehrere Boxen +neben- und untereinander gesetzt werden. Einem versierten Anwender sollte es +so möglich sein, eigene Seitenköpfe und "~füße zu gestalten. Natürlich kann +und sollte im Wert mit Hilfe von \DescRef{\LabelBase.cmd.usekomavar} auch auf +weitere Variablen zugegriffen werden. Die \PName{Bezeichnung} wird von +\KOMAScript{} bei beiden Variablen nicht genutzt.% +\EndIndexGroup +\EndIndexGroup +% +\EndIndexGroup + + +\LoadCommonFile{interleafpage}% \section{Vakatseiten} + +\LoadCommonFile{footnotes}% \section{Fußnoten} + +\LoadCommonFile{lists}% \section{Listen} + + +\section{Mathematik} +\seclabel{math}% +\BeginIndexGroup +\BeginIndex{}{Mathematik}% +\BeginIndex{}{Formeln}% +\BeginIndex{}{Gleichungen}% + +Die \KOMAScript-Klassen stellen keine eigenen Umgebungen für mathematische +Formeln, Gleichungssysteme oder ähnliche Elemente der Mathematik +bereit. Stattdessen stützt sich \KOMAScript{} im Bereich der Mathematik voll +und ganz auf den \LaTeX-Kern. Da\textnote{Achtung!} jedoch Mathematik in Form +von nummerierten Gleichungen und Formeln in Briefen eher ungewöhnlich ist, +unterstützt \KOMAScript{} dies nicht aktiv. Daher gibt es auch nicht die +Optionen \DescRef{maincls.option.leqno} und \DescRef{maincls.option.fleqn}, +die in \autoref{sec:maincls.math}, \autopageref{sec:maincls.math} für +\Class{scrbook}, \Class{scrreprt} und \Class{scrartcl} dokumentiert sind.% +\iffalse% Umbruchkorrekturtext + \par + Auf eine Beschreibung der Mathematikumgebungen des \LaTeX-Kerns, also + \Environment{displaymath}\IndexEnv{displaymath}, + \Environment{equation}\IndexEnv{equation} und + \Environment{eqnarray}\IndexEnv{eqnarray}, wird an dieser Stelle + verzichtet. Wer diese verwenden möchte, sei auf \cite{l2kurz} verwiesen. Für + mehr als nur einfachste mathematische Formeln und Gleichungen sei jedoch die + Verwendung von \Package{amsmath}\IndexPackage{amsmath} empfohlen (siehe + \cite{package:amsmath}).% +\fi +% +\EndIndexGroup + + +\section{Gleitumgebungen für Tabellen und Abbildungen} +\seclabel{floats} + +Gleitumgebungen für Tabellen und Abbildungen sind in Briefen normalerweise +fehl am Platz. Daher\textnote{Achtung!} werden sie von \Class{scrlttr2} auch +nicht unterstützt. Wenn solche dennoch benötigt werden, deutet dies häufig auf +einen Missbrauch der Briefklasse hin. In solchen Fällen ist stattdessen zu +raten, eine der \KOMAScript-Klassen aus \autoref{cha:maincls} mit dem Paket +\Package{scrletter}\important{\Package{scrletter}} zu kombinieren. In diesem +Fall können Gleitumgebungen, wie für die Klasse dokumentiert, auch in Briefen +verwendet werden. Die Möglichkeiten zur Definition eigener Gleitumgebungen mit +Hilfe von \hyperref[cha:tocbasic]{\Package{tocbasic}}\IndexPackage{tocbasic}% +\important{\hyperref[cha:tocbasic]{\Package{tocbasic}}}, wie sie in +\autoref{cha:tocbasic} dokumentiert sind, können ebenfalls genutzt werden. + +\LoadCommonFile{marginpar}% \section{Randnotizen} + + +\section{Schlussgruß} +\seclabel{closing} +\BeginIndexGroup +\BeginIndex{}{Schlussgruss=Schlussgruß} + +Dass der Schlussgruß mit \DescRef{\LabelBase.cmd.closing}\IndexCmd{closing} +gesetzt wird, wurde bereits in \autoref{sec:\LabelBase.document}, +\DescPageRef{\LabelBase.cmd.closing} erklärt. Unter dem Schlussgruß wird häufig +noch eine Signatur, eine Art Erläuterung zur Unterschrift, gesetzt. Die +Unterschrift wiederum findet Platz zwischen dem Schlussgruß und der Signatur. + +\begin{Declaration} + \Variable{signature} +\end{Declaration} +Die Variable \Variable{signature}\Index{Signatur} nimmt eine Art Erläuterung +zur Unterschrift\Index{Unterschrift} auf. Ihr \PName{Inhalt} ist mit +\DescRef{\LabelBase.cmd.usekomavar}\PParameter{fromname} vordefiniert. Eine +solche Erläuterung kann auch mehrzeilig sein. Die einzelnen Zeilen sollten +dann mit doppeltem Backslash voneinander getrennt +werden. Absätze\textnote{Achtung!} innerhalb der Erläuterung sind jedoch nicht +gestattet.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{raggedsignature} +\end{Declaration} +Grußfloskel\Index{Gruss=Gruß}\Index{Signatur} und Erläuterung der +Unterschrift\Index{Unterschrift} werden innerhalb einer Box gesetzt. Die +Breite dieser Box wird durch die längste Zeile innerhalb von Grußfloskel und +Erläuterung bestimmt. + +Wo genau diese Box platziert wird, ist durch die Pseudolängen +\PLength{sigindent}\IndexPLength{sigindent} und +\PLength{sigbeforevskip}\IndexPLength{sigbeforevskip} (siehe +\autoref{sec:scrlttr2-experts.closing}, +\DescPageRef{scrlttr2-experts.plength.sigindent}) bestimmt. Durch den Befehl +\Macro{raggedsignature} wird die Ausrichtung innerhalb der Box bestimmt. In +den vordefinierten \File{lco}-Dateien ist die Anweisung entweder auf +\Macro{centering} (alle außer \Option{KOMAold}) oder auf \Macro{raggedright} +(\Option{KOMAold}) gesetzt. Um innerhalb der Box beispielsweise eine +linksbündige oder rechtsbündige Ausrichtung zu erhalten, kann der Befehl in +gleicher Weise umdefiniert werden wie \DescRef{maincls.cmd.raggedsection} +(siehe das entsprechende Beispiel in \autoref{sec:maincls.structure}, +\DescPageRef{maincls.cmd.raggedsection}). + +\begin{Example} + Herr Musterfrau will sich nun wirklich wichtig machen und deshalb in der + Signatur nochmals darauf hinweisen, dass er selbst auch mal + Vereinsvorsitzender war. Deshalb ändert er die Variable + \DescRef{\LabelBase.variable.signature}. Außerdem will er, dass die Signatur + linksbündig unter dem Schlussgruß steht, und definiert daher auch noch + \Macro{raggedsignature} um:% + \lstinputcode[xleftmargin=1em]{letter-22}% + Das Ergebnis ist in \autoref{fig:\LabelBase.letter-22} zu sehen. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Beispiel: Brief mit erweitertem Absender, Logo, + Anschrift, Absenderergänzung, Ort, Datum, Betreff, Anrede, Text, + Grußfloskel, geänderter Signatur, Postskriptum, Anlagen, Verteiler und + Lochermarke}]{Ergebnis eines kleinen Briefes mit erweitertem Absender, + Logo, Anschrift, Absenderergänzung, Ort, Datum, Betreff, + Anrede, Text, Grußfloskel, geänderter Signatur, Postskriptum, Anlagen, + Verteiler und Lochermarke}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-22}} + \end{captionbeside} + \label{fig:\LabelBase.letter-22} + \end{figure} +\end{Example} + +\iftrue% Umbruchkorrekturtext + Das vorausgehende Beispiel zeigt die wichtigsten, aber nicht alle möglichen + Elemente eines Briefes. Es kann jedoch sehr gut als allgemeines Muster + dienen.% +\fi +% +\EndIndexGroup +% +\EndIndexGroup + +\section{\emph{Letter-Class-Option}-Dateien} +\seclabel{lcoFile}% +\BeginIndexGroup +\BeginIndex{}{lco-Datei=\File{lco}-Datei}% +\BeginIndex{}{Letter-Class-Option}% + +Normalerweise wird man Einstellungen wie den Absender nicht in jedem Brief neu +wählen, sondern diverse Parameter für bestimmte Gelegenheiten immer wieder +verwenden. Ganz Ähnliches gilt für die verwendeten Briefköpfe und den +Fußbereich der ersten Seite. Es ist deshalb sinnvoll, diese Einstellungen in +einer eigenen Datei zu speichern. \KOMAScript{} bietet +hierfür die \File{lco}-Dateien an. Die Endung \File{lco} steht +für \emph{\emph{l}etter \emph{c}lass \emph{o}ption}, also +Briefklassenoption. Dennoch finden diese Dateien für \Package{scrletter} +ebenso Anwendung. + +In \File{lco}-Dateien können alle Anweisungen verwendet werden, die auch an +der Stelle im Dokument verwendet werden könnten, an der %die \File{lco}-Datei +sie mit \DescRef{\LabelBase.cmd.LoadLetterOption} +geladen werden. Außerdem können interne Anweisungen verwendet werden, die für +Paketautoren freigegeben sind. Bei \Class{scrlttr2} und \Package{scrletter} +sind dies insbesondere die Anweisungen +\DescRef{scrlttr2-experts.cmd.newplength}\IndexCmd{newplength}, +\DescRef{scrlttr2-experts.cmd.setplength}\IndexCmd{setplength} und +\DescRef{scrlttr2-experts.cmd.addtoplength}\IndexCmd{addtoplength} (siehe +\autoref{sec:scrlttr2-experts.pseudoLengths}). + +\KOMAScript{} liegen bereits einige \File{lco}-Dateien bei. Die Dateien +\File{DIN.lco}, \File{DINmtext.lco}, \File{SNleft.lco}, \File{SN.lco}, +\File{UScommercial9}, \File{UScommercial9DW} und +\File{NF.lco}\ChangedAt{v3.04}{\Class{scrlttr2}} dienen dazu, \Class{scrlttr2} +und \Package{scrletter} an verschiedene Normen\Index{Norm} anzupassen. Sie +können von angehenden Experten sehr gut als Vorlage für eigene Parametersätze +verwendet werden. Die Datei \File{KOMAold.lco} dient hingegen dazu, die +Kompatibilität zu \Class{scrlettr}\IndexClass{scrlettr} zu verbessern. Diese +Klasse wurde schon vor über 15~Jahren aus \KOMAScript{} entfernt. Es wird +daher nicht mehr näher darauf eingegangen. Da hierbei auch auf Anweisungen +zurückgegriffen wird, die nicht für Paketautoren freigegeben sind, sollte man +sie nicht als Vorlage für eigene \File{lco}-Dateien verwenden. Eine Liste +aller vordefinierten \File{lco}-Dateien ist in \autoref{tab:lcoFiles}, +\autopageref{tab:lcoFiles} zu finden. + +Wenn Sie einen Parametersatz für eine Briefnorm, die bisher nicht von +\KOMAScript{} unterstützt wird, erstellt haben, so sind Sie ausdrücklich +gebeten, diesen Parametersatz an die Supportadresse von \KOMAScript{} zu +schicken. Bitte geben Sie dabei auch die Erlaubnis zur Weiterverbreitung unter +den Lizenzbedingungen von \KOMAScript{} (siehe dazu die Datei +\href{http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/lppl-de.txt}% +{\File{lppl-de.txt}} im \KOMAScript-Paket). Wenn Sie zwar über die notwendigen +Maße aus einer bisher nicht unterstützen Briefnorm verfügen, sich jedoch nicht +in der Lage sehen, selbst eine passende \File{lco}-Datei zu erstellen, so +können Sie sich ebenfalls mit dem \KOMAScript-Autor in Verbindung +setzen. Beispiele für teilweise sehr komplexe \File{lco}-Dateien finden sich +unter anderem unter \cite{homepage} und in \cite{DANTE:TK0203:MJK}. + + +\begin{Declaration} + \Macro{LoadLetterOption}\Parameter{Name} + \Macro{LoadLetterOptions}\Parameter{Liste von Namen} +\end{Declaration} +Bei \Class{scrlttr2}\OnlyAt{\Class{scrlttr2}} können \File{lco}-Dateien direkt +über \DescRef{\LabelBase.cmd.documentclass} geladen werden. Dazu gibt man den +Namen der \File{lco}-Datei ohne die Endung als Option\Index{Optionen} an. Das +Laden der \File{lco}-Datei erfolgt dann direkt nach der Klasse. Das Paket +\Package{scrletter}\textnote{Achtung!} bietet diese Möglichkeit nicht! Hier +bleibt nur \File{lco}-Dateien über \Macro{LoadLetterOption} +oder \Macro{LoadLetterOptions}\ChangedAt{v3.14}{\Class{scrlttr2}} zu +laden. Für\textnote{Empfehlung!} \Class{scrlttr2} wird dies ebenfalls +ausdrücklich empfohlen! + +\Macro{LoadLetterOption} und \Macro{LoadLetterOptions} können auch zu einem +späteren Zeitpunkt, selbst nach \Macro{begin}\PParameter{document} und sogar +innerhalb einer anderen \File{lco}-Datei verwendet werden. Der \PName{Name} +der \File{lco}-Datei wird in diesen Fällen ebenfalls ohne Endung +übergeben. Während als Argument von \Macro{LoadLetterOption} der \PName{Name} +von genau einer \File{lco}-Datei erwartet wird, versteht +\Macro{LoadLetterOptions} eine durch Komma separierte \PName{Liste von + Namen}. Die zu den Namen gehörenden \File{lco}-Dateien werden dann in der +Reihenfolge der Angabe in der Liste geladen. +\begin{Example} + Peter Musterfrau erstellt auch ein Dokument, in dem mehrere Briefe enthalten + sind. Die Mehrzahl der Briefe soll nach DIN erstellt werden. Also + beginnt er (siehe auch den Tipp auf \autopageref{tipp:\LabelBase.DIN}): +\begin{lstcode} + \documentclass{scrlttr2} +\end{lstcode} + Allerdings soll bei einem Brief stattdessen die Variante + \File{DINmtext} verwendet werden. Bei dieser steht das Adressfeld + weiter oben, damit mehr Text auf die erste Seite passt. Dafür ist + die Faltung so angepasst, dass das Adressfeld bei + DIN~C6/5-Umschlägen trotzdem in das Adressfenster passt. Sie + erreichen das so: +\begin{lstcode} + \begin{letter}{% + Petra Mustermann\\ + Vor dem Berg 1\\ + 12345 Musterhausen} + \LoadLetterOption{DINmtext} + \opening{Hallo,} +\end{lstcode} + Da der Aufbau der ersten Seite erst mit + \DescRef{\LabelBase.cmd.opening}\IndexCmd{opening} wirklich beginnt, genügt + es, wenn die \File{lco}-Datei vor \DescRef{\LabelBase.cmd.opening} geladen + wird. Dies muss also nicht vor \Macro{begin}\PParameter{letter} + erfolgen. Die Änderungen durch das Laden der \File{lco}-Datei sind dann auch + lokal zu dem entsprechenden Brief. +\end{Example} + +Wird\ChangedAt{v2.97}{\Class{scrlttr2}} eine \File{lco}-Datei über +\Macro{documentclass} geladen, so darf sie nicht den Namen einer Option +haben. + +\begin{Example} + Da Herr Musterfrau regelmäßig Briefe mit immer gleichen Einstellungen + schreibt, findet er es ziemlich lästig, diese Angaben immer wieder in jeden + neuen Brief kopieren zu müssen. Zu seiner Erleichterung schreibt er deshalb + eine \File{lco}-Datei, die ihm die Arbeit erleichtert:% + \lstinputcode[xleftmargin=1em]{ich.lco}% + Damit schrumpft sein Brief aus dem letzten Beispiel erheblich zusammen: + \lstinputcode[xleftmargin=1em]{letter-23.tex}% + Das Ergebnis ändert sich jedoch nicht, wie \autoref{fig:\LabelBase.letter-23} + zeigt. + \begin{figure} + \setcapindent{0pt}% + \begin{captionbeside}[{Beispiel: Brief mit erweitertem Absender, Logo, + Anschrift, Absenderergänzung, Ort, Datum, Betreff, Anrede, + Text, Grußfloskel, geänderter Signatur, Postskriptum, Anlagen, + Verteiler und Lochermarke mit \File{lco}-Datei}]{Ergebnis eines + kleinen Briefes mit erweitertem Absender, Logo, Anschrift, + Absenderergänzung, Ort, Datum, Betreff, Anrede, Text, Grußfloskel, + geänderter Signatur, Postskriptum, Anlagen, Verteiler und Lochermarke + bei Verwendung einer \File{lco}-Datei}[l] + \frame{\includegraphics[width=.4\textwidth]{letter-23}} + \end{captionbeside} + \label{fig:\LabelBase.letter-23} + \end{figure} +\end{Example} + +Bitte\textnote{Achtung!} beachten Sie, dass im Beispiel in der Bankverbindung +der Datei \File{ich.lco} für »ß« die \TeX-Schreibweise »\Macro{ss}« verwendet +wurde. Dies hat seinen Grund darin, dass während des Ladens der Klasse +weder ein Paket für die Eingabecodierung, beispielsweise mit +\Macro{usepackage}\POParameter{utf8}\PParameter{inputenc} für moderne +Editoren, noch ein Paket zur Sprachumschaltung, beispielsweise für die neue, +deutsche Rechtschreibung mit +\Macro{usepackage}\POParameter{ngerman}\PParameter{babel}, geladen ist. + +In \autoref{tab:lcoFiles} finden Sie eine Liste aller vordefinierten +\File{lco}-Dateien. Falls\textnote{Achtung!} Sie einen Drucker verwenden, der +einen sehr großen unbedruckbaren Rand links oder rechts besitzt, werden Sie +mit der Option \Option{SN}\IndexOption{SN} möglicherweise Probleme +bekommen. Da die Schweizer Norm SN~101\,130 vorsieht, dass das Adressfeld +8\Unit{mm} vom rechten Papierrand gesetzt wird, werden bei Schweizer Briefen +auch die Kopfzeile und die Absenderergänzung mit einem entsprechend geringen +Abstand zum Papierrand gesetzt. Dies betrifft ebenfalls die Geschäftszeile bei +der Einstellung +\OptionValueRef{\LabelBase}{refline}{wide}% +\IndexOption{refline~=\textKValue{wide}} +(siehe \autoref{sec:\LabelBase.firstpage}, +\DescPageRef{\LabelBase.option.refline}). Sollten\textnote{Tipp!} Sie damit +ein Problem haben, erstellen Sie sich eine eigene \File{lco}-Datei, die +zunächst \Option{SN} lädt und in der +\DescRef{scrlttr2-experts.plength.toaddrhpos}\IndexPLength{toaddrhpos} (siehe +\autoref{sec:scrlttr2-experts.addressee}, +\DescPageRef{scrlttr2-experts.plength.toaddrvpos}) dann auf einen kleineren +Wert gesetzt wird. Verringern Sie dann außerdem +\DescRef{scrlttr2-experts.plength.toaddrwidth}\IndexPLength{toaddrwidth} +entsprechend.% + +Die\textnote{Tipp!}\phantomsection\label{tipp:\LabelBase.DIN} \File{lco}-Datei +\File{DIN}\important{\Option{DIN}} wird übrigens immer als erste +\File{lco}-Datei automatisch geladen, damit alle Pseudolängen mehr oder +weniger sinnvoll vordefiniert sind. Es ist daher nicht notwendig diese +voreingestellte Datei selbst zu laden. + +\begin{desclist} + \renewcommand*{\abovecaptionskipcorrection}{-\normalbaselineskip}% + \desccaption{% + Vordefinierte \File{lco}-Dateien\label{tab:lcoFiles}% + }{% + Vordefinierte \File{lco}-Dateien (\emph{Fortsetzung})% + }% + \oentry{DIN}{% + \leavevmode% + \IndexOption[indexmain]{DIN}\IndexFile[indexmain]{DIN.lco}% + Parametersatz für Briefe im Format A4 nach DIN~676; geeignet für + Fensterbriefumschläge in den Formaten C4, C5, C6 und C6/5 (C6 lang)}% + \oentry{DINmtext}{% + \leavevmode% + \IndexOption[indexmain]{DINmtext}\IndexFile[indexmain]{DINmtext.lco}% + Parametersatz für Briefe im Format A4 nach DIN~676, wobei die Alternative + für mehr Text auf der ersten Briefseite verwendet wird; nur geeignet für + Fensterbriefumschläge in den Formaten C6 und C6/5 (C6 lang)}% + \oentry{KakuLL}{% + \leavevmode% + \IndexOption[indexmain]{KakuLL}\IndexFile[indexmain]{KakuLL.lco}% + Parametersatz für japanische Briefe im Format A4; geeignet für japanische + Fensterbriefumschläge des Typs Kaku A4, bei denen das Fenster in etwa + 90\Unit{mm} breit, 45\Unit{mm} hoch, 25\Unit{mm} vom linken und + 24\Unit{mm} vom oberen Rand entfernt ist (siehe dazu auch \iffree{den + Anhang der englischen \KOMAScript-Anleitung}{\autoref{cha:japanlco}})}% + \oentry{KOMAold}{% + \leavevmode% + \IndexOption[indexmain]{KOMAold}\IndexFile[indexmain]{KOMAold.lco}% + \iffalse + existiert nur noch aus Kompatibilitätsgründen; die Verwendung wird nicht + mehr empfohlen% + \else + Parametersatz für Briefe im Format A4 mit Annäherung an das Aussehen von + Briefen der obsoleten Briefklasse \Class{scrlettr}; geeignet für + Fensterbriefumschläge in den Formaten C4, C5, C6 und C6/5 (C6 lang); es + werden einige zusätzliche Anweisungen zur Verbesserung der Kompatibilität + mit der obsoleten Briefklasse \Class{scrlettr}\IndexClass{scrlettr} + definiert; \Class{scrlttr2} verhält sich mit dieser \File{lco}-Datei + möglicherweise nicht genau wie bei Verwendung der übrigen + \File{lco}-Dateien% + \fi + }% + \oentry{NF}{% + \leavevmode% + \IndexOption[indexmain]{NF}\IndexFile[indexmain]{NF.lco}% + Parametersatz für französische Briefe nach NF~Z~11-001; geeignet für + Fensterbriefumschläge im Format DL (110\Unit{mm} auf 220\Unit{mm}) mit + einem Fenster von 45\Unit{mm} Breite und 100\Unit{mm} Höhe ca. jeweils + 20\Unit{mm} entfernt vom rechten unteren Rand; diese Datei wurde + ursprünglich von Jean-Marie Pacquet entwickelt, der auf \cite{www:NF.lco} + neben einer Erweiterung auch eine LyX-Einbindung bereitstellt.}% + \oentry{NipponEH}{% + \leavevmode% + \IndexOption[indexmain]{NipponEH}\IndexFile[indexmain]{NipponEH.lco}% + Parametersatz für japanische Briefe im Format A4; geeignet für japanische + Fensterbriefumschläge der Typen Chou oder You 3 oder 4, bei denen das + Fenster in etwa 90\Unit{mm} breit, 55\Unit{mm} hoch, 22\Unit{mm} vom + linken und 12\Unit{mm} vom oberen Rand entfernt ist (siehe dazu auch + \iffree{den Anhang der englischen + \KOMAScript-Anleitung}{\autoref{cha:japanlco}})}% + \oentry{NipponEL}{% + \leavevmode% + \IndexOption[indexmain]{NipponEL}\IndexFile[indexmain]{NipponEL.lco}% + Parametersatz für japanische Briefe im Format A4; geeignet für japanische + Fensterbriefumschläge der Typen Chou oder You 3 oder 4, bei denen das + Fenster in etwa 90\Unit{mm} breit, 45\Unit{mm} hoch, 22\Unit{mm} vom + linken und 12\Unit{mm} vom oberen Rand entfernt ist (siehe dazu auch + \iffree{den Anhang der englischen + \KOMAScript-Anleitung}{\autoref{cha:japanlco}})}% + \oentry{NipponLH}{% + \leavevmode% + \IndexOption[indexmain]{NipponLH}\IndexFile[indexmain]{NipponLH.lco}% + Parametersatz für japanische Briefe im Format A4; geeignet für japanische + Fensterbriefumschläge der Typen Chou oder You 3 oder 4, bei denen das + Fenster in etwa 90\Unit{mm} breit, 55\Unit{mm} hoch, 25\Unit{mm} vom + linken und 12\Unit{mm} vom oberen Rand entfernt ist (siehe dazu auch + \iffree{den Anhang der englischen + \KOMAScript-Anleitung}{\autoref{cha:japanlco}})}% + \oentry{NipponLL}{% + \leavevmode% + \IndexOption[indexmain]{NipponLL}\IndexFile[indexmain]{NipponLL.lco}% + Parametersatz für japanische Briefe im Format A4; geeignet für japanische + Fensterbriefumschläge der Typen Chou oder You 3 oder 4, bei denen das + Fenster in etwa 90\Unit{mm} breit, 45\Unit{mm} hoch, 25\Unit{mm} vom + linken und 12\Unit{mm} vom oberen Rand entfernt ist (siehe dazu auch + \iffree{den Anhang der englischen + \KOMAScript-Anleitung}{\autoref{cha:japanlco}})}% + \oentry{NipponRL}{% + \leavevmode% + \IndexOption[indexmain]{NipponRL}\IndexFile[indexmain]{NipponRL.lco}% + Parametersatz für japanische Briefe im Format A4; geeignet für japanische + Fensterbriefumschläge der Typen Chou oder You 3 oder 4, bei denen das + Fenster in etwa 90\Unit{mm} breit, 45\Unit{mm} hoch, 22\Unit{mm} vom + rechten und 28\Unit{mm} vom oberen Rand entfernt ist (siehe dazu auch + \iffree{den Anhang der englischen + \KOMAScript-Anleitung}{\autoref{cha:japanlco}})}% + \oentry{SN}{% + \leavevmode% + \IndexOption[indexmain]{SN}\IndexFile[indexmain]{SN.lco}% + Parametersatz für Schweizer Briefe nach SN~010\,130 mit Anschrift rechts; + geeignet für Schweizer Fensterbriefumschläge in den Formaten C4, C5, C6 + und C6/5 (C6 lang)}% + \oentry{SNleft}{% + \leavevmode% + \IndexOption[indexmain]{SNleft}\IndexFile[indexmain]{SNleft.lco}% + Parametersatz für Schweizer Briefe mit Anschrift links; geeignet für + Schweizer Fensterbriefumschläge mit dem Fenster links in den Formaten C4, + C5, C6 und C6/5 (C6 lang)}% + \oentry{UScommercial9}{% + \leavevmode% + \IndexOption[indexmain]{UScommercial9}% + \IndexFile[indexmain]{UScommercial9.lco}% + Parametersatz für US-amerikanische Briefe im Format letter; + geeignet für US-amerikanische Fensterbriefumschläge der Größe + \emph{commercial~No.\,9} mit einem + Anschriftfenster der Breite 4\,1/2\Unit{in} und Höhe 1\,1/8\Unit{in} an + einer Position 7/8\Unit{in} von links und 1/2\Unit{in} von unten ohne + Rücksendeadresse im Fenster; bei Faltung zunächst an der Mittelmarke und + dann an der oberen Faltmarke kann auch Papier im Format legal verwendet + werden, führt dann jedoch zu einer Papiergrößen-Warnung}% + \oentry{UScommercial9DW}{% + \leavevmode% + \IndexOption[indexmain]{UScommercial9DW}% + \IndexFile[indexmain]{UScommercial9DW.lco}% + Parametersatz für US-amerikanische Briefe im Format letter; + geeignet für US-amerikanische Fensterbriefumschläge der Größe + \emph{commercial~No.\,9} mit einem + Anschriftfenster der Breite 3\,5/8\Unit{in} und Höhe 1\,1/8\Unit{in} an + einer Position 3/4\Unit{in} von links und 1/2\Unit{in} von unten mit + einem Absenderfenster der Breite 3\,1/2\Unit{in} und Höhe 7/8\Unit{in} an + einer Position 5/16\Unit{in} von links und 2\,1/2\Unit{in} von unten, + jedoch ohne Rücksendeadresse im Fenster; bei Faltung zunächst an der + Mittelmarke und dann an der oberen Faltmarke kann auch Papier im Format + legal verwendet werden, führt dann jedoch zu einer Papiergrößen-Warnung}% +\end{desclist} + +Beachten\textnote{Achtung!} Sie bitte noch, dass es nicht möglich ist, +innerhalb einer \File{lco}-Datei mittels \Macro{PassOptionsToPackage} Optionen +an Pakete zu übergeben, die von der Klasse bereits geladen sind. Normalerweise +betrifft dies nur die Pakete +\hyperref[cha:typearea]{\Package{typearea}}\IndexPackage{typearea}, +\hyperref[cha:scrlfile]{\Package{scrlfile}}\IndexPackage{scrlfile}, +\hyperref[cha:scrbase]{\Package{scrbase}}\IndexPackage{scrbase} und +\Package{keyval}\IndexPackage{keyval}.% +% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Adressdateien und Serienbriefe} +\seclabel{addressFile}% +\BeginIndexGroup +\BeginIndex{}{Adressdatei}\BeginIndex{}{Serienbriefe}% + +Als besonders lästig wird bei Briefen immer das Eintippen der Adressen und das +Erstellen von Serienbriefen betrachtet. \KOMAScript{} bietet +hierfür% +\iffalse% Umbruchkorrekturtext + , wie schon die obsolete Klasse \Class{scrlettr},% +\fi% +\ eine minimalistische Unterstützung.% +\iffalse% Umbruchkorrekturtext + \ Eine stark verbesserte Serienbrief"|funktion ist bereits seit längerem in + Planung.% +\fi + +\begin{Declaration} + \Macro{adrentry}\Parameter{Name}\Parameter{Vorname}\Parameter{Adresse} + \Parameter{Tel.}\Parameter{F1}\Parameter{F2}\Parameter{Kommentar} + \Parameter{Kürzel} +\end{Declaration} +Mit \Class{scrlttr2} und \Package{scrletter} können +Adressdateien\Index[indexmain]{Adressdatei} ausgewertet werden. Dies ist +beispielsweise für Serienbriefe sehr nützlich. Eine Adressdatei muss +die Endung \File{.adr} haben und besteht aus einer Reihe von +\Macro{adrentry}-Einträgen. Ein solcher Eintrag besteht aus acht +Elementen und kann beispielsweise wie folgt aussehen: +\begin{lstcode} + \adrentry{Maier} + {Herbert} + {Wiesenweg 37\\ 09091 Blumental} + {0\,23\,34 / 91\,12\,74} + {Bauunternehmer} + {} + {kauft alles} + {MAIER} +\end{lstcode} +Die Elemente fünf und sechs, \PName{F1} und \PName{F2}, können frei +bestimmt werden. Denkbar wären neben Hinweisen auf das Geschlecht oder +akademische Grade auch der Geburtstag oder das Eintrittsdatum in einen +Verein. Um das Überschreiben von \TeX- oder \LaTeX-Anweisungen zu +vermeiden, ist es empfehlenswert, für \PName{Kürzel} ausschließlich +Großbuchstaben zu verwenden. + +\begin{Example} + Herr Maier gehört zu Ihren engeren Geschäftspartnern. Da Sie eine + rege Korrespondenz mit ihm pflegen, ist es Ihnen auf Dauer zu + mühsam, jedesmal alle Empfängerdaten aufs Neue einzugeben. + \KOMAScript{} nimmt Ihnen diese Arbeit ab. Angenommen, Sie haben + Ihre Kundenkontakte in der Datei \File{partner.adr} gespeichert und + Sie möchten Herrn Maier einen Brief schreiben, dann sparen Sie sich + viel Tipparbeit, wenn Sie Folgendes eingeben: +\begin{lstcode} + \input{partner.adr} + \begin{letter}{\MAIER} + Der Brief ... + \end{letter} +\end{lstcode} + Achten Sie bitte darauf, dass Ihr \TeX-System auch auf die + \File{.adr}-Dateien zugreifen kann, da sonst eine Fehlermeldung + von \Macro{input} verursacht wird. Entweder Sie legen die Brief- + und Adressdateien im selben Verzeichnis an, oder Sie binden ein + Adressverzeichnis fest in Ihr \TeX-System ein. +\end{Example} +% +\EndIndexGroup +\vskip-\ht\strutbox% Wegen Beispiel am Ende der Erklärung + + +\begin{Declaration} + \Macro{addrentry}\Parameter{Name}\Parameter{Vorname}\Parameter{Adresse} + \Parameter{Telefon}\Parameter{F1}\Parameter{F2}\Parameter{F3} + \Parameter{F4}\Parameter{Kürzel} +\end{Declaration} +Bevor Klagen aufkommen, dass insgesamt nur zwei freie Felder zu wenig seien: +\KOMAScript{} verfügt alternativ über die Anweisung \Macro{addrentry}. Mit dem +zusätzlichen »\texttt{d}« im Namen sind hier auch zwei weitere freie Felder +hinzugekommen, dafür ist jedoch der Kommentar entfallen. Ansonsten kann die +Anweisung genau wie \DescRef{\LabelBase.cmd.adrentry} verwendet werden. + +In einer \File{adr}-Datei können die beiden Anweisungen +\DescRef{\LabelBase.cmd.adrentry} und \Macro{addrentry} nebeneinander +verwendet werden. Ich\textnote{Achtung!} weise jedoch darauf hin, dass +Zusatzpakete wie das \Package{adrconv}-Paket\IndexPackage{adrconv} von Axel +Kielhorn eventuell nicht auf die Verwendung von \Macro{addrentry} ausgelegt +sind. Hier muss der Anwender gegebenenfalls selbst entsprechende +Erweiterungen vornehmen.% +% +\EndIndexGroup + + +Neben dem vereinfachten Zugriff auf Kundendaten können die +\File{.adr}-Dateien auch für Serienbriefe\Index[indexmain]{Serienbriefe} +genutzt werden. So ist es ohne die komplizierte Anbindung an +Datenbanksysteme möglich, solche Massenpostsendungen zu erstellen. +% +\begin{Example} + Sie wollen einen Serienbrief an alle Mitglieder Ihres + Anglervereins schicken, um zur nächsten Mitgliederversammlung + einzuladen. +\begin{lstcode} + \documentclass{scrlttr2} + \usepackage[ngerman]{babel} + \usepackage[utf8]{inputenc} + + \begin{document} + \renewcommand*{\adrentry}[8]{% + \begin{letter}{#2 #1\\#3} + \opening{Liebe Vereinsmitglieder,} + unsere nächste Mitgliederversammlung findet am + Montag, dem 12.~August 2002, statt. + + Folgende Punkte müssen besprochen werden... + \closing{Petri Heil,} + \end{letter} + } + + \input{mitglieder.adr} + \end{document} +\end{lstcode} + Sind in Ihrer \File{adr}-Datei auch + \DescRef{\LabelBase.cmd.addrentry}-Anweisungen + enthalten, müssen Sie dafür eine entsprechende Definition vor dem + Einladen der Adressdatei ergänzen: +\begin{lstcode} + \renewcommand*{\addrentry}[9]{% + \adrentry{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#9}% + } +\end{lstcode} + Bei diesem Beispiel wird kein Gebrauch von dem zusätzlichen freien + Feld gemacht und deshalb \DescRef{\LabelBase.cmd.addrentry} mit Hilfe von + \DescRef{\LabelBase.cmd.adrentry} definiert. +\end{Example} + +Natürlich kann der Brief"|inhalt auch von den Adressatenmerkmalen +abhängig gemacht werden. Als Bedingungsfelder können die frei +bestimmbaren Elemente fünf oder sechs eines +\DescRef{\LabelBase.cmd.adrentry}-Eintrages oder die frei bestimmbaren +Elemente fünf bis acht eines \DescRef{\LabelBase.cmd.addrentry}-Eintrags +genutzt werden. +\begin{Example} + Angenommen, Sie verwenden das Element fünf, um das Geschlecht eines + Vereinsmitgliedes zu hinterlegen (\PValue{m/w}) und das sechste + Element weist auf einen Rückstand der Mitgliedsbeiträge hin. Wollen + Sie nun alle säumigen Mitglieder anschreiben und persönlich anreden, + so hilft Ihnen folgendes Beispiel weiter: +\begin{lstcode} + \renewcommand*{\adrentry}[8]{ + \ifdim #6pt>0pt\relax + % #6 ist ein Betrag (Gleitkommazahl) größer 0. + % Es werden also die Säumigen erfasst. + \begin{letter}{#2 #1\\#3} + \if #5m \opening{Lieber #2,} \fi + \if #5w \opening{Liebe #2,} \fi + + Leider mussten wir feststellen, dass du mit + der Zahlung deiner Mitgliedsbeiträge im + Rückstand bist. + + Wir möchten Dich bitten, den offenen Betrag + von #6~EUR auf das Vereinskonto einzuzahlen. + \closing{Petri Heil,} + \end{letter} + \fi + } +\end{lstcode} +\end{Example} +Es ist also möglich, den Brieftext auf bestimmte Empfängermerkmale +gezielt abzustimmen und so den Eindruck eines persönlichen +Schreibens zu erwecken. Die Anwendungsbreite ist lediglich durch +die maximale Anzahl von zwei freien \DescRef{\LabelBase.cmd.adrentry}-Elementen +beziehungsweise vier freien \DescRef{\LabelBase.cmd.addrentry}-Elementen +begrenzt. + + +\begin{Declaration} + \Macro{adrchar}\Parameter{Anfangsbuchstaben} + \Macro{addrchar}\Parameter{Anfangsbuchstaben} +\end{Declaration} +\Index[indexmain]{Adressverzeichnis}\Index[indexmain]{Telefonliste}% +Es ist auch möglich, die Informationen einer \File{.adr}-Datei in +Adressverzeichnisse oder Telefonlisten umzuwandeln. Sie benötigen dazu +zusätzlich das \Package{adrconv}\IndexPackage{adrconv}-Paket von Axel Kielhorn +(siehe \cite{package:adrconv}). In diesem Paket sind interaktive +\LaTeX-Dokumente enthalten, mit deren Hilfe sehr einfach entsprechende Listen +erstellt werden können. + +Damit die Listen alphabetisch sortiert ausgegeben werden, muss bereits die +Adressdatei sortiert gewesen sein. Es empfiehlt sich dabei, vor jedem neuen +Anfangsbuchstaben eine Anweisung \Macro{adrchar} mit diesem Buchstaben als +Argument einzufügen. \Class{scrlttr2} und \Package{scrletter} selbst +ignorieren diese Anweisung ebenso wie \Macro{addrchar}. +% +\begin{Example} + Angenommen Sie haben folgende, eher winzige Adressdatei für die ein + Adressbuch erstellt werden soll: +% In der folgenden lstcode-Umgebung je nach Umbruchbedarf einzelne +% Elemente löschen oder hinzufügen. MICHAEL und GABRIEL sollten jedoch +% erhalten bleiben. +% Umbruchkorrektur: Dies kann noch dazu: + % \adrentry{Engel}{Raphael} + % {Wolke 3b\\12345 Himmelreich} + % {000\,01\,02\,05}{}{}{Erzengel} + % {RAPHAEL} + % \adrchar{T} + % \adrentry{Teufel}{Luzifer} + % {Hinter der Flamme 1\\ + % 66666 H\"ollenschlund} + % {}{}{}{Gefallener Engel ohne Telefon} + % {LUZIFER} +\begin{lstcode} + \adrchar{E} + \adrentry{Engel}{Gabriel} + {Wolke 3\\12345 Himmelreich} + {000\,01\,02\,03}{}{}{Erzengel} + {GABRIEL} + \adrentry{Engel}{Michael} + {Wolke 3a\\12345 Himmelreich} + {000\,01\,02\,04}{}{}{Erzengel} + {MICHAEL} + \adrchar{K} + \adrentry{Kohm}{Markus} + {Freiherr-von-Drais-Stra\ss e 66\\ + 68535 Edingen-Neckarhausen} + {+49~62\,03~1\,??\,??}{}{} + {\"Uberhaupt kein Engel} + {KOMA} +\end{lstcode} + Diese verarbeiten Sie nun unter Verwendung des Dokuments \File{adrdir.tex} + aus \cite{package:adrconv}. Ein Problem dabei ist, dass \File{adrdir.tex} + bis einschließlich Version~1.3 sowohl das veraltete Paket \Package{scrpage} + als auch veraltete Schriftbefehle verwendet, die von \KOMAScript{} schon + seit einiger Zeit nicht mehr unterstützt werden. Sollten Sie entsprechende + Fehlermeldungen erhalten und keine neuere Version installieren können, + finden Sie unter \cite{https://komascript.de/node/2154} eine Lösung für + dieses Problem. + + Eine Seite des Ergebnisses sieht dann etwa so aus: + \begin{center} + \setlength{\unitlength}{1mm} + \begin{picture}(80,58) + \put(0,58){\line(1,0){80}} + \put(0,3){\line(0,1){55}} + \put(80,3){\line(0,1){55}} + \thicklines + \put(10,43){\line(1,0){60}} + \put(70,46){\makebox(0,0)[r]{\textsf{\textbf{E}}}} + \put(10,23){\makebox(0,20)[l]{\parbox{5cm}{\raggedright + \textsc{Engel}, Gabriel\\\quad\small Wolke 3\\ + \quad 12345 Himmelreich\\ + \quad (Erzengel)}}} + \put(70,23){\makebox(0,20)[r]{\parbox{2cm}{\raggedright~\\ + \small~\\{\footnotesize GABRIEL}\\000\,01\,02\,03}}} + \put(10,4){\makebox(0,20)[l]{\parbox{5cm}{\raggedright + \textsc{Engel}, Michael\\\quad\small Wolke 3a\\ + \quad 12345 Himmelreich\\ + \quad (Erzengel)}}} + \put(70,4){\makebox(0,20)[r]{\parbox{2cm}{\raggedright~\\ + \small~\\{\footnotesize MICHAEL}\\000\,01\,02\,04}}} + \qbezier(0,3)(10,6)(40,3)\qbezier(40,3)(60,0)(80,3) + \end{picture} + \end{center} + Dabei wird der Buchstabe in der Kopfzeile von \Macro{adrchar} + erzeugt, wenn man die Frage »Namen in der Kopfzeile?« verneint. Siehe dazu + die Definition in \File{adrdir.tex}.% +\end{Example}% +\iffalse% Umbruchkorrektur +Näheres zum \Package{adrconv}\IndexPackage{adrconv}-Paket ist der zugehörigen +Anleitung zu entnehmen. Dort finden Sie auch Angaben darüber, ob die aktuelle +Version von \Package{adrconv} bereits mit \DescRef{\LabelBase.cmd.addrentry} +und \Macro{addrchar} umgehen kann. Frühere Versionen kannten nur +\DescRef{\LabelBase.cmd.adrentry} und \Macro{adrchar}.% +\fi +% +\EndIndexGroup +% +\EndIndexGroup +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "../guide.tex" +%%% End: + +% LocalWords: Paketoption Satzspiegels Briefklasse Seitenkopf Seitenfuß + +% LocalWords: Versandart Zentrierung Dokumenttitel Serienbriefen Seitenstil +% LocalWords: Dokumentpräambel Grafikpaket Briefbogenfuß Briefbogenfußes + +% LocalWords: Standardklassen Briefpaket Dokumentteile Briefkontext Torsten +% LocalWords: Briefumgebung neckische Briefinhalt Absenderinformationen +% LocalWords: Falzmarken Faltmarken Adressfeld Geschäftszeile Feldinhalts +% LocalWords: Feldbezeichnung Seitenstilen Paginierung Briefklassenoption +% LocalWords: Bedingungsfelder Schriftauswahl Spitzmarke diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrlttr2examples.dtx b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlttr2examples.dtx new file mode 100644 index 0000000000..18286886b3 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlttr2examples.dtx @@ -0,0 +1,347 @@ +% \CheckSum{0} +% \iffalse +% ====================================================================== +% scrlttr2examples.dtx +% Copyright (c) Markus Kohm, 2008-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlttr2examples.dtx +% Copyright (c) Markus Kohm, 2008-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Generation of letter example files for scrlttr2 chapter. +% +% --------------------------------------------------------------------------- +% +% Erzeugung der Brief-Beispiele für das scrlttr2-Kapitel. +% +% ============================================================================ +%<*ins> +\def\batchfile{scrlttr2examples.dtx} +\input docstrip.tex + +\keepsilent +\askforoverwritefalse + +\generate{% + \nopreamble\nopostamble + \file{musterlogo.eps}{\from{scrlttr2examples.dtx}{logo}}% +} + +\generate{% + \nopreamble\nopostamble + \file{ich.lco}{\from{scrlttr2examples.dtx}{lco,23,\languagename}}% +} + +\generate{% + \nopreamble\nopostamble + \file{letter-0.tex}{\from{scrlttr2examples.dtx}{example,0,\languagename}}% + \file{letter-1.tex}{\from{scrlttr2examples.dtx}{example,1,\languagename}}% + \file{letter-2.tex}{\from{scrlttr2examples.dtx}{example,2,\languagename}}% + \file{letter-3.tex}{\from{scrlttr2examples.dtx}{example,3,\languagename}}% + \file{letter-4.tex}{\from{scrlttr2examples.dtx}{example,4,\languagename}}% + \file{letter-5.tex}{\from{scrlttr2examples.dtx}{example,5,\languagename}}% + \file{letter-6.tex}{\from{scrlttr2examples.dtx}{example,6,\languagename}}% + \file{letter-7.tex}{\from{scrlttr2examples.dtx}{example,7,\languagename}}% + \file{letter-8.tex}{\from{scrlttr2examples.dtx}{example,8,\languagename}}% + \file{letter-9.tex}{\from{scrlttr2examples.dtx}{example,9,\languagename}}% + \file{letter-10.tex}{\from{scrlttr2examples.dtx}{example,10,\languagename}}% + \file{letter-11.tex}{\from{scrlttr2examples.dtx}{example,11,\languagename}}% + \file{letter-12.tex}{\from{scrlttr2examples.dtx}{example,12,\languagename}}% + \file{letter-13.tex}{\from{scrlttr2examples.dtx}{example,13,\languagename}}% + \file{letter-14.tex}{\from{scrlttr2examples.dtx}{example,14,\languagename}}% + \file{letter-15.tex}{\from{scrlttr2examples.dtx}{example,15,\languagename}}% + \file{letter-16.tex}{\from{scrlttr2examples.dtx}{example,16,\languagename}}% + \file{letter-17.tex}{\from{scrlttr2examples.dtx}{example,17,\languagename}}% + \file{letter-18.tex}{\from{scrlttr2examples.dtx}{example,18,\languagename}}% + \file{letter-19.tex}{\from{scrlttr2examples.dtx}{example,19,\languagename}}% + \file{letter-20.tex}{\from{scrlttr2examples.dtx}{example,20,\languagename}}% + \file{letter-21.tex}{\from{scrlttr2examples.dtx}{example,21,\languagename}}% + \file{letter-22.tex}{\from{scrlttr2examples.dtx}{example,22,\languagename}}% + \file{letter-23.tex}{\from{scrlttr2examples.dtx}{example,23,\languagename}}% + \file{letter-label.tex}{\from{scrlttr2examples.dtx}{% + example,label,\languagename}}% + \file{letter-nipponA.tex}{\from{scrlttr2examples.dtx}{% + example,22,nipponA,\languagename}}% + \file{letter-nipponB.tex}{\from{scrlttr2examples.dtx}{% + example,22,nipponB,\languagename}}% +} + +\csname endinput\endcsname +%</ins> +% +% \begin{macrocode} +%<*lco&23> +\ProvidesFile{ich.lco}[2008/06/11 lco +%<english> (Joe Public)] +%<ngerman> (Peter Musterfrau)] +\KOMAoptions{foldmarks=true,foldmarks=blmtP, + fromphone,fromemail,fromlogo,subject=titled} +%<*english> +\setkomavar{fromname}{Joe Public} +\setkomavar{signature}{Joe Public\\ + (former chairman)} +%</english> +%<*ngerman> +\setkomavar{fromname}{Peter Musterfrau} +\setkomavar{signature}{Peter Musterfrau\\ + (ehemaliger Vorsitzender)} +%</ngerman> +\renewcommand*{\raggedsignature}{\raggedright} +%<*english> +\setkomavar{fromaddress}{2 Valley\\ + SAMPLEBY\\ + ZY32 1XW} +%</english> +%<*ngerman> +\setkomavar{fromaddress}{Hinter dem Tal 2\\ + 54321 Musterheim} +%</ngerman> +\setkomavar{fromphone}{0\,12\,34~56\,78} +%<english>\setkomavar{fromemail}{joe@public.invalid} +%<ngerman>\setkomavar{fromemail}{Peter@Musterfrau.invalid} +\setkomavar{fromlogo}{% + \includegraphics{musterlogo}} +\setkomavar{location}{\raggedright +%<*english> + Club member no.~4711\\ + since 11.09.2001\\ + chairman 2003--2005} +\setkomavar{place}{Sampleby} +\setkomavar{frombank}{Bank of Friendly Greetings} +%</english> +%<*ngerman> + Mitglied Nr.~4711\\ + seit dem 11.09.2001\\ + Vorsitzender in den Jahren 2003--2005} +\setkomavar{place}{Musterheim} +\setkomavar{frombank}{Bank freundlichen Gru\ss es} +%</ngerman> +%</lco&23> +%<*example> +%<*label> +\AtBeginDocument{% + \usepackage{xcolor,eso-pic}% + \BeforeClosingMainAux{% + \AddToShipoutPicture*{% + \thinlines\color{gray!50}% + \AtPageLowerLeft{% + \put(0,\LenToUnit{8mm}){% + \line(0,1){\LenToUnit{180mm}}% + }% + \multiput(\LenToUnit{70mm},\LenToUnit{8mm})(\LenToUnit{70mm},0){3}{% + \line(0,1){\LenToUnit{216mm}}% + }% + \multiput(0,\LenToUnit{8mm})(0,\LenToUnit{36mm}){6}{% + \line(1,0){\LenToUnit{210mm}}% + }% + \put(\LenToUnit{70mm},\LenToUnit{224mm}){% + \line(1,0){\LenToUnit{140mm}}% + }% + }\color{black}% + }% + }% +} +%</label> +%<0|1|2|3|4|5>\documentclass[version=last]{scrlttr2} +%<6>\documentclass[version=last,fontsize=14pt]{scrlttr2} +%<!0&!1&!2&!3&!4&!5&!6&!23&!label&!nipponA&!nipponB>\documentclass[foldmarks=true,foldmarks=blmtP, +%<nipponA|nipponB>\documentclass[foldmarks=true,locfield=wide, +%<8> fromalign=false, +%<9> fromalign=center, +%<10> fromalign=false,fromrule=aftername, +%<11> fromalign=center,fromrule=aftername, +%<12> fromalign=false,fromrule=afteraddress, +%<13|17> fromalign=center,fromrule=afteraddress, +%<14|16> fromrule=afteraddress, +%<15|18> fromalign=right,fromrule=afteraddress, +%<12|13|14|15> fromphone,fromemail, +%<16|17|18|19|20|21|22> fromphone,fromemail,fromlogo, +%<nipponA|nipponB> fromphone=false,fromemail=false, +%<21|22> subject=titled, +%<!0&!1&!2&!3&!4&!5&!6&!23&!label> version=last]{scrlttr2} +%<23>\documentclass[version=last,ich]{scrlttr2} +%<nipponA>\LoadLetterOption{NipponLL} +%<nipponB>\LoadLetterOption{NipponEL} +%<label>\documentclass[version=last,ich,settleford600label]{scrlttr2} +%<ngerman>\usepackage[ngerman]{babel} +%<english>\usepackage[british]{babel} +%<16|17|18|19|20|21|22|23|label>\usepackage{graphics} +\begin{document} +%<*!0&!1&!2&!3&!4&!5&!6&!7&!23&!label> +%<english>\setkomavar{fromname}{Joe Public} +%<ngerman>\setkomavar{fromname}{Peter Musterfrau} +%<*22> +%<*english> +\setkomavar{signature}{Joe Public\\ + (former chairman)} +%</english> +%<*ngerman> +\setkomavar{signature}{Peter Musterfrau\\ + (ehemaliger Vorsitzender)} +%</ngerman> +\renewcommand*{\raggedsignature}{\raggedright} +%</22> +%<*english> +\setkomavar{fromaddress}{2 Valley\\ + SAMPLEBY\\ + ZY32 1XW} +%</english> +%<*ngerman> +\setkomavar{fromaddress}{Hinter dem Tal 2\\ + 54321 Musterheim} +%</ngerman> +%<*!9&!10&!11> +\setkomavar{fromphone}{0\,12\,34~56\,78} +%<english>\setkomavar{fromemail}{joe@public.invalid} +%<ngerman>\setkomavar{fromemail}{Peter@Musterfrau.invalid} +%<*!12&!13&!14&!15> +\setkomavar{fromlogo}{\includegraphics{musterlogo}} +%</!12&!13&!14&!15> +%</!9&!10&!11> +%</!0&!1&!2&!3&!4&!5&!6&!7&!23&!label> +%<*19|20|21|22|23|label> +%<*!23&!label&!nipponA&!nipponB> +\setkomavar{location}{\raggedright +%<*english> + Club member no.~4711\\ + since 11.09.2001\\ + chairman 2003--2005} +%</english> +%<*ngerman> + Mitglied Nr.~4711\\ + seit dem 11.09.2001\\ + Vorsitzender in den Jahren 2003--2005} +%</ngerman> +%</!23&!label&!nipponA&!nipponB> +%<*20|21|22|23|label> +%<english>\setkomavar{date}{29th February 2011} +%<ngerman>\setkomavar{date}{29. Februar 2011} +%<*!23&!label> +%<english>\setkomavar{place}{Sampleby} +%<ngerman>\setkomavar{place}{Musterheim} +%</!23&!label> +%<*21|22|23|label> +%<english>\setkomavar{subject}{Missing general meeting} +%<ngerman>\setkomavar{subject}{Mitgliederversammlung vermisst} +%</21|22|23|label> +%</20|21|22|23|label> +%</19|20|21|22|23|label> +%<!5>\begin{letter}{% +%<5>\begin{letter}[fontsize=14pt]{% +%<*english> + Joanna Public\\ + 1 Hillside\\ + SAMPLESTEAD\\ + WX12 3YZ% +%</english> +%<*ngerman> + Petra Mustermann\\ + Vor dem Berg 1\\ + 12345 Musterhausen% +%</ngerman> + } +%<label>\savelabel{3}{2} +%<english>\opening{Dear Madam Chair,} +%<ngerman>\opening{Liebe Vereinsvorsitzende,} +%<*!0> +%<*english> +The last general meeting was more than a year ago. +I would like to remind you that the articles of our +club stipulate that one should be held every +six months. For this reason, I call on the executive +board to arrange such a meeting immediately. +\closing{Anticipating an invitation} +%</english> +%<*ngerman> +seit einem Jahr gab es keine Mitgliederversammlung +mehr. Ich erinnere daran, dass unsere Satzung eine +solche jedes halbe Jahr vorsieht. Ich fordere den +Vorstand daher auf, umgehend eine solche in +Angriff zu nehmen. +\closing{In Erwartung einer Einladung} +%</ngerman> +%<*!1> +%<*english> +\ps PS: I hope you do not take this request amiss. +%</english> +%<*ngerman> +\ps PS: Ich hoffe, Du nimmst mir das nicht krumm. +%</ngerman> +%<*!2> +%<*!3> +%<*english> +\setkomavar*{enclseparator}{Enclosure} +\encl{Excerpt from the articles governing general + meetings} +%</english> +%<*ngerman> +\setkomavar*{enclseparator}{Anlage} +\encl{Auszug aus der Satzung, in dem die + Mitgliederversammlungen geregelt sind} +%</ngerman> +%</!3> +%<*english> +\cc{executive board\\all members} +%</english> +%<*ngerman> +\cc{Die Vereinsvorsitzende\\Alle Mitglieder} +%</ngerman> +%</!2> +%</!1> +%</!0> +\end{letter} +\end{document} +%</example> +%<*logo> +%%! +%%BoundingBox: 0 0 72 72 +0 0 moveto +72 72 rlineto +72 neg 0 rlineto +72 72 neg rlineto +stroke +0 0 moveto +/Bitstream-Charter findfont +72 scalefont +setfont +(M) show +showpage +%</logo> +% \end{macrocode} +% +% \iffalse +\endinput +%%% Local Variables: +%%% mode: doctex +%%% TeX-master: t +%%% End: +% \fi diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrwfile.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrwfile.tex new file mode 100644 index 0000000000..4e27aa22eb --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrwfile.tex @@ -0,0 +1,307 @@ +% ====================================================================== +% scrwfile.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrwfile.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrwfile of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------------- +% +% Kapitel über scrwfile in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrwfile.tex} + [$Date: 2018-02-16 04:42:17 +0100 (Fri, 16 Feb 2018) $ + KOMA-Script guide (chapter: scrwfile)] + +\chapter{Dateien mit \Package{scrwfile} sparen und ersetzen} +\labelbase{scrwfile} + +\BeginIndexGroup +\BeginIndex{Package}{scrwfile} +Eines der Probleme, die auch durch die Einführung von \eTeX{} nicht gelöst +wurden, ist die Tatsache, dass \TeX{} nur 18 Dateien gleichzeitig zum Schreiben +geöffnet haben kann. Diese Zahl erscheint zunächst recht groß. Allerdings ist +zu berücksichtigen, dass bereits \LaTeX{} selbst einige dieser Dateien +belegt. Inhaltsverzeichnis, Tabellenverzeichnis, Abbildungsverzeichnis, Index, +Glossar und jedes weitere Verzeichnis, das von \LaTeX{} aus erzeugt wird, +belegt in der Regel eine weitere Datei. Dazu kommen Hilfsdateien von Paketen +wie \Package{hyperref} oder \Package{minitoc}. + +Im Endeffekt kann es daher geschehen, dass irgendwann die Meldung +\begin{lstcode} + ! No room for a new \write . + \ch@ck ...\else \errmessage {No room for a new #3} + \fi +\end{lstcode} +erscheint. Seit einiger Zeit ist die einfachste Lösung dieses Problems die +Verwendung von Lua\LaTeX{} anstelle von PDF\LaTeX{} oder \XeLaTeX. Damit +entfällt die Beschränkung und die maximale Anzahl der gleichzeitig zum +Schreiben geöffneten Dateien wird nur noch durch das Betriebssystem +bestimmt. In der Realität braucht man sich darüber dann normalerweise keine +Gedanken mehr zu machen. + +Dass \LaTeX{} bei Verzeichnissen wie dem Inhaltsverzeichnis, dem +Tabellenverzeichnis und dem Abbildungsverzeichnis immer sofort eine neue Datei +zum Schreiben öffnet, hat aber auch noch einen weiteren Nachteil. Solche +Verzeichnisse werden durch deren Befehle nicht nur direkt gesetzt, sie können +auch kein weiteres Mal gesetzt werden, da die zugehörige Hilfsdatei nach dem +jeweiligen Befehl bis zum Ende des Dokuments leer ist. + +Das Paket \Package{scrwfile} bietet hier eine grundsätzliche Änderung im +\LaTeX-Kern, durch die beide Probleme nicht nur für Lua\LaTeX{} sondern auch bei +Verwendung von PDF\LaTeX{} oder \XeLaTeX{} gelöst werden können. + + +\section{Grundsätzliche Änderungen am \LaTeX-Kern} +\seclabel{kernelpatches} + +\LaTeX-Klassen verwenden zum Öffnen eines Verzeichnisses beispielsweise mit +\Macro{tableofcontents} oder \Macro{listoffigure} die \LaTeX-Kern-Anweisung +\Macro{@starttoc}\IndexCmd{@starttoc}. \LaTeX{} selbst lädt bei dieser +Anweisung nicht nur die zugehörige Hilfsdatei, sondern öffnet diese Hilfsdatei +auch neu zum Schreiben. Werden anschließend mit \Macro{addtocontents} oder +\Macro{addcontentsline} Einträge in dieses Verzeichnis vorgenommen, so wird +jedoch nicht direkt in die geöffnete Hilfsdatei geschrieben. Stattdessen +schreibt \LaTeX{} \Macro{@writefile}-Anweisungen\IndexCmd{@writefile} in die +\File{aux}-Datei. Erst beim Einlesen der \File{aux}-Dateien am Ende des +Dokuments wird dann über diese \Macro{@writefile}-Anweisungen in die +tatsächlichen Hilfsdateien geschrieben. Die Hilfsdateien werden von \LaTeX{} +auch nicht explizit geschlossen. Stattdessen verlässt sich \LaTeX{} hier +darauf, dass \TeX{} die Dateien am Ende ohnehin schließt. + +Dieses Vorgehen sorgt dafür, dass die Hilfsdateien zwar erst innerhalb von +\Macro{end}\PParameter{document} tatsächlich beschrieben werden, aber trotzdem +während des gesamten \LaTeX-Laufs gleichzeitig offen sind. \Package{scrwfile} +hat nun genau hier einen Ansatzpunkt: die Umdefinierung von \Macro{@starttoc} +und \Macro{@writefile}. + +Natürlich\textnote{Achtung!} besitzen Änderungen am \LaTeX-Kern immer das +Potential, dass es zu Unverträglichkeiten mit anderen Paketen kommen +kann. Betroffen können in erster Linie Pakete sein, die ebenfalls +\Macro{@starttoc} oder \Macro{@writefile} umdefinieren. In einigen Fällen kann +es helfen, die Reihenfolge der Pakete zu ändern. Wenn Sie auf +ein solches Problem stoßen, sollten Sie sich an den \KOMAScript-Autor wenden. + + +\section{Das Eindateiensystem} +\seclabel{singlefilefeature} + +Bereits beim Laden des Pakets mit +% Umbruchoptimierung: listings +\begin{lstcode} + \usepackage{scrwfile} +\end{lstcode} +wird \Macro{@starttoc}\IndexCmd{@starttoc} von \Package{scrwfile} so +umdefiniert, dass davon selbst keine Datei mehr zum Schreiben angefordert und +geöffnet wird. Unmittelbar vor dem Schließen der \File{aux}-Datei in +\Macro{end}\PParameter{document} wird dann \Macro{@writefile} so umdefiniert, +dass diese Anweisung statt in die eigentlichen Hilfsdateien in eine neue +Hilfsdatei mit der Endung \File{wrt} schreibt. Nach dem Einlesen der +\File{aux}-Dateien wird schließlich die \File{wrt}-Datei abgearbeitet und zwar +ein Mal für jede der Hilfsdateien, in die mit \Macro{@writefile} geschrieben +wird. Dabei muss aber nicht jede dieser Hilfsdateien gleichzeitig +geöffnet sein. Stattdessen ist immer nur eine zum Schreiben geöffnet und wird +auch wieder explizit geschlossen. Da dabei eine interne Schreibdatei von +\LaTeX{} wiederverwendet wird, benötigt \Package{scrwfile} keine einzige +eigene Schreibdatei für diese Art von Verzeichnissen. + +Selbst wenn bisher nur mit einem Inhaltsverzeichnis gearbeitet wird, steht +nach dem Laden des Pakets bereits eine Schreibdatei mehr für +Literaturverzeichnisse, Stichwortverzeichnisse, Glossare und ähnliche +Verzeichnisse, die nicht mit \Macro{@starttoc} arbeiten, zur +Verfügung. Darüber hinaus können beliebig viele Verzeichnisse, die mit +\Macro{@starttoc}\IndexCmd{@starttoc} arbeiten, angelegt werden.% +% + +\section{Das Klonen von Dateieinträgen} +\seclabel{clonefilefeature} + +Nachdem \Macro{@writefile}\IndexCmd{@writefile} für das Eindateiensystem aus +dem vorherigen Abschnitt bereits so geändert wurde, dass es nicht direkt in +die entsprechende Hilfsdatei schreibt, lag eine weitere Idee nahe. Beim +Kopieren der \Macro{@writefile}-Anweisungen in die \File{wrt}-Datei können +diese auch für andere Zielendungen übernommen werden. + +\begin{Declaration} + \Macro{TOCclone}\OParameter{Verzeichnisüberschrift} + \Parameter{Quellendung}\Parameter{Zielendung} + \Macro{listof\PName{Zielendung}} +\end{Declaration}% +Durch dieses Klonen von Dateieinträgen werden so ganze Verzeichnisse +geklont. Dazu muss man nur die Endung der Hilfsdatei des Verzeichnisses +kennen, dessen Einträge kopiert werden sollen. Zusätzlich muss man die Endung +einer Zieldatei angeben. In diese werden die Einträge dann kopiert. Natürlich +kann man in dieses geklonte Verzeichnis auch zusätzliche Einträge +schreiben. + +Die \PName{Zielendung} der Zieldatei wird mit Hilfe von +\hyperref[cha:tocbasic]{\Package{tocbasic}}% +\important{\hyperref[cha:tocbasic]{\Package{tocbasic}}} (siehe +\autoref{cha:tocbasic}) verwaltet. Steht eine solche Datei bereits unter +Kontrolle von \hyperref[cha:tocbasic]{\Package{tocbasic}} wird eine Warnung +ausgegeben. Anderenfalls wird mit Hilfe von +\hyperref[cha:tocbasic]{\Package{tocbasic}} ein neues Verzeichnis für diese +Endung angelegt. Die Überschrift dieses Verzeichnisses kann man über das +optionale Argument \PName{Verzeichnisüberschrift} bestimmen. + +Ausgeben kann man dieses neue Verzeichnis dann beispielsweise über die +Anweisung \Macro{listof\PName{Zielendung}}. Die +Verzeichniseigenschaften\important{\hyperref[cha:tocbasic]{\Package{tocbasic}}} +\PValue{leveldown}, \PValue{numbered}, \PValue{onecolumn} und \PValue{totoc} +(siehe Anweisung \DescRef{tocbasic.cmd.setuptoc} in +\autoref{sec:tocbasic.toc}, \DescPageRef{tocbasic.cmd.setuptoc}) werden +automatisch in das Zielverzeichnis übernommen, falls sie für das +Quellverzeichnis bereits gesetzt waren. Die Eigenschaft \PValue{nobabel} wird +für geklonte Verzeichnisse immer gesetzt, da die entsprechenden +\Package{babel}-Einträge in das Quellverzeichnis ohnehin bereits kopiert +werden. + +\begin{Example} + Angenommen, Sie wollen zusätzlich zum normalen Inhaltsverzeichnis eine + Gliederungsübersicht, in der nur die Kapitel angezeigt werden. +\begin{lstcode} + \usepackage{scrwfile} + \TOCclone[Gliederungsübersicht]{toc}{stoc} +\end{lstcode} + Hierdurch wird zunächst ein neues Verzeichnis mit der Überschrift + »Gliederungsübersicht« angelegt. Das neue Verzeichnis verwendet die + Dateiendung \File{stoc}. Alle Einträge in die Datei mit der Endung + \File{toc} werden auch in dieses Verzeichnis kopiert. + + Damit dieses neue Verzeichnis nun nur die Kapitelebene ausgibt, verwenden + wir: +\begin{lstcode} + \addtocontents{stoc}{\protect\value{tocdepth}=0} +\end{lstcode} + Während\textnote{Achtung!} normalerweise erst ab + \Macro{begin}\PParameter{document} Einträge in ein Verzeichnis vorgenommen + werden können, funktioniert dies nach Laden von \Package{scrwfile} bereits + in der Dokumentpräambel. Durch die hier gezeigte unkonventionelle Art, den + Zähler \DescRef{maincls.counter.tocdepth} innerhalb der Verzeichnisdatei zu + ändern, bleibt diese Änderung nur für dieses Verzeichnis wirksam. + + Später im Dokument wird das Verzeichnis mit der Endung \File{stoc} dann + durch +\begin{lstcode}[moretexcs={listofstoc}] + \listofstoc +\end{lstcode} + ausgegeben und zeigt nur die Teile und Kapitel des Dokuments. + + Etwas schwieriger wird es, wenn das Inhaltsverzeichnis in der + Gliederungsübersicht angezeigt werden soll. Dies wäre zwar mit +\begin{lstcode} + \addtocontents{toc}{% + \protect\addxcontentsline + {stoc}{chapter}{\protect\contentsname}% + } +\end{lstcode} + möglich. Da jedoch alle Einträge in \File{toc} auch nach \File{stoc} kopiert + werden, würde so von der Gliederungsübersicht dieser Eintrag ebenfalls + übernommen. Also darf der Eintrag nicht aus der Verzeichnisdatei heraus + erzeugt werden. Da das Paket \hyperref[cha:tocbasic]{\Package{tocbasic}}% + \important{\hyperref[cha:tocbasic]{\Package{tocbasic}}} zum Einsatz kommt, + kann aber% + \phantomsection\xmpllabel{cmd.BeforeStartingTOC}% +\begin{lstcode} + \BeforeStartingTOC[toc]{% + \addxcontentsline{stoc}{chapter} + {\protect\contentsname}} +\end{lstcode} + verwendet werden. Natürlich\textnote{Achtung!} setzt dies voraus, dass die + Datei mit Endung \File{toc} auch unter der Kontrolle von + \hyperref[cha:tocbasic]{\Package{tocbasic}} steht. Dies ist bei allen + \KOMAScript-Klassen der Fall. Näheres zur Anweisung + \DescRef{tocbasic.cmd.BeforeStartingTOC} ist in \autoref{sec:tocbasic.toc} + auf \DescPageRef{tocbasic.cmd.BeforeStartingTOC} zu finden.% +\end{Example}% +% +Die in den Beispielen verwendete Anweisung +\DescRef{tocbasic.cmd.addxcontentsline} ist übrigens ebenfalls in +\autoref{cha:tocbasic}, \DescPageRef{tocbasic.cmd.addxcontentsline} +dokumentiert.% +\EndIndexGroup + + +\section{Hinweis zum Entwicklungsstand} +\seclabel{draft} + +Obwohl das Paket bereits von mehreren Anwendern getestet wurde und vielfach im +Einsatz ist, ist seine Entwicklung noch nicht abgeschlossen. Deshalb ist es +theoretisch möglich, dass insbesondere an der internen Funktionsweise des +Pakets noch Änderungen vorgenommen werden. Sehr wahrscheinlich sind auch +künftige Erweiterungen. Teilweise befindet sich bereits Code für solche +Erweiterungen im Paket. Da jedoch noch keine Benutzeranweisungen existieren, +mit denen diese Möglichkeiten genutzt werden könnten, wurde hier auf eine +Dokumentation derselben verzichtet. + + +\section{Bekannte Paketunverträglichkeiten} +\seclabel{incompatible} + +Wie in \autoref{sec:scrwfile.kernelpatches} bereits erwähnt, muss +\Package{scrwfile} einige wenige Anweisungen des \LaTeX-Kerns +umdefinieren. Dies geschieht nicht allein während des Ladens des Pakets, +sondern vielmehr zu verschiedenen Zeitpunkten während der Abarbeitung eines +Dokuments, beispielsweise vor dem Einlesen der +\File{aux}-Datei. Dies\textnote{Achtung!} führt dazu, dass \Package{scrwfile} +sich nicht mit anderen Paketen verträgt, die diese Anweisungen ebenfalls zur +Laufzeit umdefinieren. + +Ein Beispiel für eine solche Unverträglichkeit ist +\Package{titletoc}\important{\Package{titletoc}}\IndexPackage{titletoc}. Das +Paket definiert unter gewissen Umständen \Macro{@writefile} zur Laufzeit +um. Werden \Package{scrwfile} und \Package{titletoc} zusammen verwendet, ist +die Funktion beider Paket nicht mehr gewährleistet. Dies ist weder ein Fehler +in \Package{titletoc} noch in \Package{scrwfile}.% +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "../guide" +%%% End: + +% LocalWords: Eindateiensystem Schreibdatei Zieldatei Zielendung Quellendung +% LocalWords: Verzeichnisüberschrift Dateiendung Zielendungen Verzeichnisdatei +% LocalWords: Benutzeranweisungen Dokumentpräambel Kapitelebene +% LocalWords: Paketunverträglichkeiten Verzeichniseigenschaften + diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/tocbasic.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/tocbasic.tex new file mode 100644 index 0000000000..ebc8861e1f --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/tocbasic.tex @@ -0,0 +1,2663 @@ +% ====================================================================== +% tocbasic.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% tocbasic.tex +% Copyright (c) Markus Kohm, 2002-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Package tocbasic for Package and Class Authors +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Paket tocbasic für Paket- und Klassenautoren +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{tocbasic.tex} + [$Date: 2018-08-31 09:11:20 +0200 (Fri, 31 Aug 2018) $ + KOMA-Script guide (package tocbasic)] + +\chapter{Verzeichnisse verwalten mit Hilfe von \Package{tocbasic}} +\labelbase{tocbasic} + +\BeginIndexGroup +\BeginIndex{Package}{tocbasic}% +\BeginIndex{}{Verzeichnis}% +\BeginIndex{}{Dateierweiterung}% +\index{Dateiendung|see{Dateierweiterung}}%| +Der Hauptzweck des Pakets \Package{tocbasic} besteht darin, Paket- und +Klassenautoren die Möglichkeit zu geben, eigene Verzeichnisse vergleichbar mit +dem Abbildungs- und Tabellenverzeichnis zu erstellen und dabei Klassen und +anderen Paketen einen Teil der Kontrolle über diese Verzeichnisse zu +erlauben. Dabei sorgt das Paket \Package{tocbasic} auch dafür, dass diese +Verzeichnisse von \Package{babel}\IndexPackage{babel} (siehe +\cite{package:babel}) bei der Sprachumschaltung mit berücksichtigt +werden. Durch Verwendung von \Package{tocbasic} soll dem Paketautor die Mühe +genommen werden, selbst solche Anpassungen an andere Pakete oder an Klassen +vornehmen zu müssen. + +Als kleiner Nebeneffekt kann das Paket auch verwendet werden, um neue +Gleitumgebungen oder den Gleitumgebungen ähnliche nicht gleitende Umgebungen +für Konsultationsobjekte zu definieren. Näheres dazu wird nach der Erklärung +der grundlegenden Anweisungen in den folgenden vier Abschnitten durch ein +Beispiel in \autoref{sec:tocbasic.example} verdeutlicht, das in kompakter Form +noch einmal in \autoref{sec:tocbasic.declarenewtoc} aufgegriffen wird. + +\KOMAScript{} verwendet \Package{tocbasic} sowohl für das Inhaltsverzeichnis +als auch für die bereits erwähnten Verzeichnisse für Abbildungen und Tabellen. + + +\section{Grundlegende Anweisungen} +\seclabel{basics} + +Die grundlegenden Anweisungen dienen in erster Linie dazu, eine Liste aller +bekannten Dateierweiterungen\textnote{Dateierweiterung, Verzeichnis}, die für +Verzeichnisse stehen, zu verwalten. Einträge in Dateien mit solchen +Dateierweiterungen werden typischerweise mit +\Macro{addtocontents}\important{\Macro{addtocontents}, + \DescRef{\LabelBase.cmd.addxcontentsline}} oder +\DescRef{\LabelBase.cmd.addxcontentsline} vorgenommen. Darüber hinaus gibt es +Anweisungen, mit denen Aktionen für all diese Dateierweiterungen durchgeführt +werden können. Außerdem gibt es Anweisungen, um Einstellungen für die Datei +vorzunehmen, die zu einer gegebenen Dateierweiterung gehört. Typischerweise +hat so eine Dateierweiterung auch einen +Besitzer\textnote{Dateibesitzer}. Dieser Besitzer kann eine Klasse oder ein +Paket oder ein Bezeichner sein, den der Autor der Klasse oder des Pakets, das +\Package{tocbasic} verwendet, frei gewählt hat. \KOMAScript{} selbst verwendet +beispielsweise den Besitzer \PValue{float} für die Dateierweiterungen +\File{lof} und \File{lot}, die für das Abbildungs- und das Tabellenverzeichnis +stehen. Für das Inhaltsverzeichnis verwendet \KOMAScript{} als Besitzer den +Dateinamen der Klasse. + +\begin{Declaration} + \Macro{ifattoclist}\Parameter{Dateierweiterung} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Mit dieser Anweisung wird überprüft, ob die \PName{Dateierweiterung} bereits +in der Liste der bekannten Dateierweiterungen vorhanden ist oder nicht. Ist +die \PName{Dateierweiterung} bereits über diese Liste bekannt, so wird der +\PName{Dann-Teil} ausgeführt. Anderenfalls wird der \PName{Sonst-Teil} +ausgeführt. +\begin{Example} + Angenommen, Sie wollen wissen, ob die Dateierweiterung »\File{foo}« bereits + verwendet wird, um in diesem Fall eine Fehlermeldung auszugeben, weil diese + damit nicht mehr verwendet werden kann: +\begin{lstcode} + \ifattoclist{foo}{% + \PackageError{bar}{% + extension `foo' already in use% + }{% + Each extension may be used only + once.\MessageBreak + The class or another package already + uses extension `foo'.\MessageBreak + This error is fatal!\MessageBreak + You should not continue!}% + }{% + \PackageInfo{bar}{using extension `foo'}% + } +\end{lstcode} +\end{Example} +\EndIndexGroup + + +\begin{Declaration} + \Macro{addtotoclist}\OParameter{Besitzer}\Parameter{Dateierweiterung} +\end{Declaration} +Diese Anweisung fügt die \PName{Dateierweiterung} der Liste der bekannten +Dateierweiterungen hinzu. Ist die \PName{Dateierweiterung} bereits bekannt, so +wird hingegen ein Fehler gemeldet, um die doppelte Verwendung derselben +\PName{Dateierweiterung} zu verhindern. + +Wenn das optionale Argument \OParameter{Besitzer} angegeben wurde, wird der +angegebene \PName{Besitzer} für diese Dateierweiterung mit gespeichert. Wurde +das optionale Argument weggelassen, dann versucht \Package{tocbasic} den +Dateinamen der aktuell abgearbeiteten Klasse oder des Pakets herauszufinden +und als \PName{Besitzer} zu speichern. Dies\textnote{Achtung!} funktioniert +nur, wenn \Macro{addtotoclist} während des Ladens der Klasse oder des Pakets +aufgerufen wird. Es funktioniert nicht, wenn \Macro{addtotoclist} erst später +aufgrund der Verwendung einer Anweisung durch den Benutzer aufgerufen wird. In +diesem Fall wird als \PName{Besitzer} »\PValue{.}« eingetragen. + +Beachten\textnote{Achtung!} Sie, dass ein leeres Argument \PName{Besitzer} +nicht das Gleiche ist wie das Weglassen des kompletten optionalen Arguments +einschließlich der eckigen Klammern. Ein leeres Argument würde auch einen +leeren \PName{Besitzer} ergeben. +\begin{Example} + Angenommen, Sie wollen die Dateierweiterung »\File{foo}« der Liste der + bekannten Dateierweiterungen hinzufügen, während Ihr Paket mit dem + Dateinamen »\File{bar.sty}« geladen wird: +\begin{lstcode} + \addtotoclist{foo} +\end{lstcode} + Dies fügt die Dateierweiterung »\PValue{foo}« mit dem Besitzer + »\PValue{bar.sty}« der Liste der bekannten Dateierweiterung hinzu, wenn diese + Erweiterung nicht bereits in der Liste ist. Wenn die verwendete + Klasse oder ein anderes Paket diese Dateierweiterung schon angemeldet hat, + erhalten Sie den Fehler: +\begin{lstoutput} + Package tocbasic Error: file extension `foo' cannot be used twice + + See the tocbasic package documentation for explanation. + Type H <return> for immediate help. +\end{lstoutput} + Wenn Sie dann tatsächlich die Taste »\texttt{H}«, gefolgt von der + Return-Taste drücken, erhalten Sie als Hilfe: +\begin{lstoutput} + File extension `foo' is already used by a toc-file, while bar.sty + tried to use it again for a toc-file. + This may be either an incompatibility of packages, an error at a package, + or a mistake by the user. +\end{lstoutput} + + Vielleicht stellt Ihr Paket auch eine Anweisung bereit, die ein + Verzeichnis dynamisch erzeugt. In diesem Fall sollten Sie das + optionale Argument von \Macro{addtotoclist} verwenden, um den + \PName{Besitzer} anzugeben: +\begin{lstcode} + \newcommand*{\createnewlistofsomething}[1]{% + \addtotoclist[bar.sty]{#1}% + % Weitere Aktionen, um dieses Verzeichnis + % verfügbar zu machen + } +\end{lstcode} + Wenn jetzt der Anwender diese Anweisung aufruft, beispielsweise mit +\begin{lstcode} + \createnewlistofsomething{foo} +\end{lstcode} + dann wird die Dateierweiterung »\PValue{foo}« ebenfalls mit dem Besitzer + »\PValue{bar.sty}« zur Liste der bekannten Dateierweiterungen hinzugefügt + oder aber ein Fehler gemeldet, wenn diese Dateierweiterung bereits verwendet + wird. +\end{Example} + +Sie können als \PName{Besitzer} angeben, was immer Sie wollen, aber es sollte +eindeutig sein! Wenn Sie beispielsweise der Autor des Pakets \Package{float} +wären, könnten Sie als \PName{Besitzer} auch »\PValue{float}« anstelle von +»\PValue{float.sty}« angeben. In diesem Fall würden die +\KOMAScript-Optionen\important{\DescRef{maincls.option.listof}}% +\IndexOption{listof~=\PName{Einstellung}} für das Verzeichnis der Abbildungen +und das Verzeichnis der Tabellen auch Ihre Verzeichnisse betreffen, die zum +Zeitpunkt der Verwendung der jeweiligen Option bereits zur Liste der bekannten +Dateierweiterungen hinzugefügt sind. Das liegt daran, dass \KOMAScript{} die +Dateierweiterungen »\PValue{lof}« für das Abbildungsverzeichnis und +»\PValue{lot}« für das Tabellenverzeichnis mit dem Besitzer »\PValue{float}« +anmeldet und die Optionen für diese Besitzer setzt. + +Das Paket \hyperref[cha:scrhack]{\Package{scrhack}}\IndexPackage{scrhack}% +\important{ \hyperref[cha:scrhack]{\Package{scrhack}}} enthält übrigens +Patches für mehrere Pakete wie \Package{float} oder \Package{listings}, die +eigene Verzeichnisse bereitstellen. Bei Verwendung von +\hyperref[cha:scrhack]{\Package{scrhack}} wird dann unter anderem die +jeweilige Dateierweiterung der Liste der bekannten Dateierweiterungen +hinzugefügt. Dabei wird als \PName{Besitzer} ebenfalls »\PValue{float}« +verwendet. Dies ist sozusagen der grundlegende Baustein, um die Möglichkeiten +von \Package{tocbasic} und der \KOMAScript-Klassen auch für diese +Verzeichnisse nutzen zu können.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AtAddToTocList}\OParameter{Besitzer}\Parameter{Anweisungen} +\end{Declaration} +Auf diese Weise können die \PName{Anweisungen} zu einer internen Liste von +Anweisungen hinzugefügt werden, die immer dann auszuführen sind, wenn eine +Dateierweiterung mit dem angegebenen \PName{Besitzer} zur Liste der bekannten +Dateierweiterungen hinzugefügt wird. Bezüglich des optionalen Arguments wird +wie in der Erklärung von \DescRef{\LabelBase.cmd.addtotoclist} beschrieben +verfahren. Wird das optionale Argument leer gelassen, werden in diesem Fall +die Aktionen unabhängig vom Besitzer immer ausgeführt, wenn die +Dateierweiterung zu der Liste der bekannten Dateierweiterungen hinzugefügt +wird. Während der Ausführung der \PName{Anweisungen} ist außerdem +\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} die +Dateierweiterung, die gerade hinzugefügt wird. +\begin{Example} + \Package{tocbasic} selbst verwendet + % Umbruchkorrektur (schließende Klammer verschoben) +\begin{lstcode} + \AtAddToTocList[]{% + \expandafter\tocbasic@extend@babel + \expandafter{\@currext}} +\end{lstcode} + um jede Dateierweiterung zu der in \Package{tocbasic} vorhandenen + Erweiterung für das Paket \Package{babel} hinzuzufügen. +\end{Example} + +Die\textnote{Achtung!} zweimalige Verwendung von \Macro{expandafter} ist im +Beispiel erforderlich, weil das Argument von +\DescRef{\LabelBase.cmd.tocbasic@extend@babel} zwingend bereits expandiert +sein muss. Siehe dazu auch die Erklärung zu +\DescRef{\LabelBase.cmd.tocbasic@extend@babel} in +\autoref{sec:tocbasic.internals}, +\DescPageRef{\LabelBase.cmd.tocbasic@extend@babel}. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{removefromtoclist}\OParameter{Besitzer}\Parameter{Dateierweiterung} +\end{Declaration} +Man kann eine \PName{Dateierweiterung} auch wieder aus der Liste der bekannten +Dateierweiterungen entfernen. Ist das optionale Argument \OParameter{Besitzer} +angegeben, so wird die Dateierweiterung nur entfernt, wenn sie für den +angegebenen \PName{Besitzer} angemeldet wurde. Wie der Besitzer beim Weglassen +des optionalen Argument bestimmt wird, ist der Erklärung zu +\DescRef{\LabelBase.cmd.addtotoclist} zu entnehmen. Wird ein leerer +\PName{Besitzer} angegeben, findet kein Besitzertest statt, sondern die +\PName{Dateierweiterung} wird unabhängig vom Besitzer entfernt.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{doforeachtocfile}\OParameter{Besitzer}\Parameter{Anweisungen} +\end{Declaration} +Bisher haben Sie nur Anweisungen kennengelernt, die für Klassen- und +Paketautoren zwar zusätzliche Sicherheit, aber auch eher zusätzlichen Aufwand +bedeuten. Mit \Macro{doforeachtocfile} kann man die erste Ernte dafür +einfahren. Diese Anweisung erlaubt es die angegebenen \PName{Anweisungen} für +jede von dem \PName{Besitzer} angemeldete Dateierweiterung +auszuführen. Während der Ausführung der \PName{Anweisungen} ist +\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} die aktuell +verarbeitete Dateierweiterung. Wird das optionale Argument +\OParameter{Besitzer} weggelassen, so werden alle Dateierweiterungen +unabhängig vom Besitzer abgearbeitet. Ein leeres optionales Argument würde +hingegen nur die Dateierweiterungen mit leerem Besitzer verarbeiten. +\begin{Example} + Wenn Sie die Liste aller bekannten Dateierweiterungen auf das Terminal und + in die \File{log}-Datei ausgeben wollen, ist dies einfach mit +\begin{lstcode} + \doforeachtocfile{\typeout{\@currext}} +\end{lstcode} + möglich. Sollen hingegen nur die Dateierweiterungen des Besitzer + »\PValue{foo}« ausgegeben werden, geht das einfach mit: +\begin{lstcode} + \doforeachtocfile[foo]{\typeout{\@currext}} +\end{lstcode} +\end{Example} +Die \KOMAScript-Klassen \Class{scrbook} und \Class{scrreprt} verwenden die +Anweisung, um für Verzeichnisse, für die Eigenschaft \PValue{chapteratlist} +gesetzt ist, optional einen vertikalen Abstand oder die Kapitelüberschrift in +das Verzeichnis einzutragen. Wie Sie diese Eigenschaft setzen können, ist +in \autoref{sec:tocbasic.toc} ab \DescPageRef{\LabelBase.cmd.setuptoc} zu +finden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasicautomode} +\end{Declaration} +Diese Anweisung definiert das vom \LaTeX-Kern für Klassen- und Paketautoren +bereitgestellte +\Macro{@starttoc}\IndexCmd{@starttoc}\important{\Macro{\@starttoc}} so um, +dass bei jedem Aufruf von \Macro{@starttoc} die dabei angegebene +Dateierweiterung in die Liste der bekannten Dateierweiterungen eingefügt wird, +soweit sie dort noch nicht vorhanden ist. Außerdem wird dann +\DescRef{\LabelBase.cmd.tocbasic@starttoc} anstelle von \Macro{@starttoc} +verwendet. Näheres zu \DescRef{\LabelBase.cmd.tocbasic@starttoc} und +\Macro{@starttoc} ist \autoref{sec:tocbasic.internals}, +\DescPageRef{\LabelBase.cmd.tocbasic@starttoc} zu entnehmen. + +Mit Hilfe von \Macro{tocbasicautomode} wird also jedes Verzeichnis, das mit +Hilfe von \Macro{@starttoc} erstellt wird, automatisch unter die Kontrolle von +\Package{tocbasic} gestellt. Ob das zum gewünschten Ergebnis führt, hängt +jedoch sehr von den jeweiligen Verzeichnissen ab. Immerhin funktioniert damit +schon einmal die Erweiterung für das \Package{babel}-Paket für alle +Verzeichnisse. Es ist jedoch vorzuziehen, wenn der Paketautor selbst +\Package{tocbasic} explizit verwendet. Er kann dann auch die weiteren Vorteile +nutzen, die ihm das Paket bietet und die in den nachfolgenden Abschnitten +beschrieben werden.% +\EndIndexGroup + + +\section{Erzeugen eines Verzeichnisses} +\seclabel{toc} + +Im vorherigen Abschnitt haben Sie erfahren, wie eine Liste bekannter +Dateierweiterungen verwaltet werden kann\iffree{ und wie automatisch Anweisungen + beim Hinzufügen von Dateierweiterungen zu dieser Liste ausgeführt werden + können}{}. Des Weiteren haben Sie eine Anweisung kennengelernt, mit der man +für jede einzelne bekannte Dateierweiterung oder einen spezifischen Teil davon +Anweisungen ausführen kann. In diesem Abschnitt werden Sie Anweisungen +kennenlernen, die sich auf die Datei beziehen, die mit dieser Dateierweiterung +verbunden ist. + + +\begin{Declaration} + \Macro{addtoeachtocfile}\OParameter{Besitzer}\Parameter{Inhalt} +\end{Declaration} +Die Anweisung \Macro{addtoeachtocfile} schreibt \PName{Inhalt} mit Hilfe von +\Macro{addtocontents}\IndexCmd{addtocontents}\important{\Macro{addtocontents}}% +\iffree{ aus dem \LaTeX-Kern}{} in jede Datei, die mit dem angegebenen +\PName{Besitzer} in der Liste der bekannten Dateierweiterungen \iffree{zu + finden ist}{steht}. Wird das optionale Argument weggelassen, wird in jede +Datei aus der Liste der bekannten Dateierweiterungen geschrieben.\iffree{ Der + konkrete Dateiname setzt sich dabei übrigens aus \Macro{jobname} und der + Dateierweiterung zusammen.}{} Während des Schreibens von \PName{Inhalt} ist +\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} die +Dateierweiterung der Datei, in die aktuell geschrieben wird. +\begin{Example} + Sie wollen einen vertikalen Abstand von einer Zeile in alle Dateien aus der + Liste der bekannten Dateierweiterungen schreiben. +\begin{lstcode} + \addtoeachtocfile{% + \protect\addvspace{\protect\baselineskip}% + }% +\end{lstcode} + Wenn Sie das hingegen nur für die Dateien mit dem definierten Besitzer + »\PValue{foo}« machen wollen, verwenden Sie: +\begin{lstcode} + \addtoeachtocfile[foo]{% + \protect\addvspace{\protect\baselineskip}% + } +\end{lstcode}% +\end{Example}% +\iffree{Anweisungen, die nicht bereits beim Schreiben expandiert werden + sollen, sind wie bei \Macro{addtocontents} mit \Macro{protect} zu + schützen.}{}% +\EndIndexGroup + + +\begin{Declaration} + \Macro{addxcontentsline}\Parameter{Dateierweiterung}\Parameter{Ebene} + \OParameter{Gliederungsnummer}\Parameter{Inhalt} +\end{Declaration} +Diese\ChangedAt{v3.12}{\Package{tocbasic}} Anweisung ähnelt sehr der Anweisung +\Macro{addcontentsline}\IndexCmd{addcontentsline} aus dem +\LaTeX-Kern. Allerdings besitzt sie ein zusätzliches optionales Argument für +die \PName{Gliederungsnummer} des Eintrags, während diese bei +\Macro{addcontentsline} im Argument \PName{Inhalt} mit angegeben wird. Sie +wird verwendet, um nummerierte oder nicht nummerierte Einträge in das über die +\PName{Dateierweiterung} spezifizierte Verzeichnis aufzunehmen. Dabei ist +\PName{Ebene} der symbolische Name der Gliederungsebene und \PName{Inhalt} der +entsprechende Eintrag. Die Seitenzahl wird automatisch bestimmt. + +Im Unterschied zu \Macro{addcontentsline} testet \Macro{addxcontentsline} +zunächst, ob Anweisung \Macro{add\PName{Ebene}\PName{Dateierweiterung}entry} +definiert ist. In diesem Fall wird sie für den Eintrag verwendet, wobei +\PName{Gliederungsnummer} als optionales Argument und \PName{Inhalt} als +obligatorisches Argument übergeben wird. Ein Beispiel für eine solche +Anweisung, die von den \KOMAScript-Klassen bereitgestellt wird, wäre +\DescRef{maincls-experts.cmd.addparttocentry} (siehe +\autoref{sec:maincls-experts.experts}, +\DescPageRef{maincls-experts.cmd.addparttocentry}). Ist die entsprechende +Anweisung nicht definiert, wird stattdessen die interne Anweisung +\DescRef{\LabelBase.cmd.tocbasic@addxcontentsline} verwendet. Diese erhält +alle vier Argumente als obligatorische Argumente und verwendet dann +seinerseits \Macro{addcontentsline}, um den gewünschten Eintrag +vorzunehmen. Näheres zu \DescRef{\LabelBase.cmd.tocbasic@addxcontentsline} ist +\autoref{sec:tocbasic.internals}, +\DescPageRef{\LabelBase.cmd.tocbasic@addxcontentsline} zu entnehmen. + +Ein Vorteil der Verwendung von \Macro{addxcontentsline} gegenüber +\Macro{addcontentsline} ist zum einen, dass die Eigenschaft +\PValue{numberline} (siehe \DescPageRef{\LabelBase.cmd.setuptoc}) beachtet +wird. Zum anderen kann die Form der Einträge über die Definition +entsprechender, für die \PName{Ebene} und \PName{Dateierweiterung} +spezifischer Anweisungen konfiguriert werden.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{addxcontentslinetoeachtocfile}\OParameter{Besitzer} + \Parameter{Ebene} + \OParameter{Gliederungsnummer}% + \Parameter{Inhalt} + \Macro{addcontentslinetoeachtocfile}\OParameter{Besitzer} + \Parameter{Ebene}\Parameter{Inhalt}% +\end{Declaration} +Diese beiden Anweisungen stehen in direkter Beziehung zu dem oben erklärten +\DescRef{\LabelBase.cmd.addxcontentsline}\ChangedAt{v3.12}{\Package{tocbasic}} +beziehungsweise zum im \LaTeX-Kern definierten \Macro{addcontentsline}. Der +Unterschied besteht darin, dass diese Anweisungen \PName{Inhalt} nicht nur in +eine einzelne Datei, sondern in alle Dateien eines angegebenen +\PName{Besitzers} und bei Verzicht auf das erste optionale Argument in alle +Dateien aus der Liste der bekannten Dateierweiterungen schreibt. +\begin{Example} + Angenommen, Sie sind Klassen-Autor und wollen den Kapiteleintrag nicht nur in + das Inhaltsverzeichnis, sondern in alle Verzeichnisdateien schreiben. Nehmen + wir weiter an, dass aktuell \PValue{\#1} den Titel enthält, der geschrieben + werden soll. +\begin{lstcode} + \addxcontentslinetoeachtocfile{chapter}% + [\thechapter]{#1} +\end{lstcode} + In diesem Fall soll natürlich die aktuelle Kapitelnummer direkt beim + Schreiben in die Verzeichnisdatei expandiert werden, weshalb sie nicht mit + \Macro{protect} vor der Expansion geschützt wurde. +\end{Example} +Während des Schreibens von \PName{Inhalt} ist auch hier, wie schon bei +\DescRef{\LabelBase.cmd.addtoeachtocfile}, +\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} die +Dateierweiterung der Datei, in die aktuell geschrieben wird.% + +Die Anweisung\ChangedAt{v3.12}{\Package{tocbasic}} +\Macro{addxcontentslinetoeachtocfile} ist wann immer möglich gegenüber +\Macro{addcontentslinetoeachtocfile} vorzuziehen, da die Erweiterungen von +\DescRef{\LabelBase.cmd.addxcontentsline} nur damit Anwendung finden. Näheres +zu diesen Erweiterungen und Vorteilen ist in der vorausgehenden Erklärung von +\DescRef{\LabelBase.cmd.addxcontentsline} zu finden.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{listoftoc}\OParameter{Titel}\Parameter{Dateierweiterung} + \Macro{listoftoc*}\Parameter{Dateierweiterung} + \Macro{listofeachtoc}\OParameter{Besitzer} + \Macro{listof\PName{Dateierweiterung}name} +\end{Declaration} +Mit diesen Anweisungen werden die Verzeichnisse +ausgegeben. Die\important{\Macro{listoftoc*}} Sternvariante \Macro{listoftoc*} +benötigt als einziges Argument die \PName{Dateierweiterung} der Datei mit den +Daten zu dem Verzeichnis. Die Anweisung setzt zunächst die vertikalen und +horizontalen Abstände, die innerhalb von Verzeichnissen gelten sollen, führt +die Anweisungen aus, die vor dem Einlesen der Datei ausgeführt werden sollen, +liest dann die Datei und führt zum Schluss die Anweisungen aus, die nach dem +Einlesen der Datei ausgeführt werden sollen. Damit kann \Macro{listoftoc*} als +direkter Ersatz der \LaTeX-Kern-Anweisung +\Macro{@starttoc}\IndexCmd{@starttoc}\important{\Macro{@starttoc}} verstanden +werden. + +Die\important{\Macro{listoftoc}} Version von \Macro{listoftoc} ohne Stern +setzt das komplette Verzeichnis und veranlasst auch einen optionalen Eintrag +in das Inhaltsverzeichnis und den Kolumnentitel. Ist das optionale Argument +\OParameter{Titel} gegeben, so wird diese Angabe sowohl als Überschrift als +auch als optionaler Eintrag in das Inhaltsverzeichnis und den Kolumnentitel +verwendet. Ist das Argument \PName{Titel} lediglich leer, so wird auch eine +leere Angabe verwendet. Wird\textnote{Achtung!} hingegen das komplette +Argument einschließlich der eckigen Klammern weggelassen, so wird die +Anweisung \Macro{listof\PName{Dateierweiterung}name} verwendet, wenn diese +definiert ist. Ist sie nicht definiert, wird ein Standard-Ersatzname verwendet +und eine Warnung ausgegeben. + +Die\important{\Macro{listofeachtoc}} Anweisung \Macro{listofeachtoc} gibt alle +Verzeichnisse des angegebenen Besitzers oder alle Verzeichnisse aller +bekannten Dateinamenerweiterungen aus. Dabei\textnote{Achtung!} sollte +\Macro{listof\PName{Dateierweiterung}name} definiert sein, damit der korrekte +Titel ausgegeben werden kann. + +Da\textnote{Tipp!} eventuell auch der Anwender selbst +\Macro{listoftoc} ohne optionales Argument oder \Macro{listofeachtoc} verwenden +könnte, wird empfohlen \Macro{listof\PName{Dateierweiterung}name} immer +passend zu definieren. +\begin{Example} + Angenommen, Sie haben ein neues »Verzeichnis der Algorithmen« mit der + Dateierweiterung »\PValue{loa}« und wollen dieses anzeigen lassen: +\begin{lstcode} + \listoftoc[Verzeichnis der Algorithmen]{loa} +\end{lstcode} + erledigt das für Sie. Wollen Sie das Verzeichnis hingegen ohne Überschrift + ausgegeben haben, dann genügt: +\begin{lstcode} + \listoftoc*{loa} +\end{lstcode} + Im zweiten Fall würde natürlich auch ein optional aktivierter Eintrag in das + Inhaltsverzeichnis nicht gesetzt. Näheres zur Eigenschaft des Eintrags in + das Inhaltsverzeichnis ist bei der Anweisung + \DescRef{\LabelBase.cmd.setuptoc}, \DescPageRef{\LabelBase.cmd.setuptoc} zu + finden. + + Wenn Sie zuvor +\begin{lstcode} + \newcommand*{\listofloaname}{% + Verzeichnis der Algorithmen% + } +\end{lstcode} + definiert haben, genügt auch: +\begin{lstcode} + \listoftoc{loa} +\end{lstcode} + um ein Verzeichnis mit der gewünschten Überschrift zu erzeugen. Für den + Anwender ist es eventuell einprägsamer, wenn Sie dann außerdem noch +\begin{lstcode} + \newcommand*{\listofalgorithms}{\listoftoc{loa}} +\end{lstcode} + als einfache Verzeichnisanweisung definieren. +\end{Example} + +Da\textnote{Achtung!} \LaTeX{} bei der Ausgabe eines Verzeichnisses auch +gleich eine neue Verzeichnisdatei zum Schreiben öffnet, kann der Aufruf jeder +dieser Anweisungen zu einer Fehlermeldung der Art +\begin{lstoutput} + ! No room for a new \write . + \ch@ck ...\else \errmessage {No room for a new #3} + \fi +\end{lstoutput} +führen, wenn keine Schreibdateien mehr zur Verfügung stehen. Abhilfe kann in +diesem Fall das Laden des in \autoref{cha:scrwfile} beschriebenen Pakets +\Package{scrwfile}\important{\Package{scrwfile}}\IndexPackage{scrwfile} +bieten. + +Das Paket \hyperref[cha:scrhack]{\Package{scrhack}}\IndexPackage{scrhack}% +\important{ \hyperref[cha:scrhack]{\Package{scrhack}}} enthält übrigens +Patches für mehrere Pakete wie \Package{float} oder \Package{listings}, damit +deren Verzeichnisbefehle \Macro{listoftoc} verwenden. Dadurch stehen viele +Möglichkeiten von \Package{tocbasic} und den \KOMAScript-Klassen auch für +deren Verzeichnisse zur Verfügung.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{BeforeStartingTOC}\OParameter{Dateierweiterung} + \Parameter{Anweisungen} + \Macro{AfterStartingTOC}\OParameter{Dateierweiterung}\Parameter{Anweisungen} +\end{Declaration} +Manchmal ist es nützlich, wenn unmittelbar vor dem Einlesen der Datei mit den +Verzeichnisdaten \PName{Anweisungen} ausgeführt werden können. Mit Hilfe von +\Macro{BeforeStartingTOC} können Sie eine solche Ausführung +wahlweise für eine einzelne \PName{Dateierweiterung} oder alle Dateien, die +mit Hilfe von \DescRef{\LabelBase.cmd.listoftoc*}, +\DescRef{\LabelBase.cmd.listoftoc} oder \DescRef{\LabelBase.cmd.listofeachtoc} +eingelesen werden, erreichen. Ebenso können Sie \PName{Anweisungen} nach dem +Einlesen der Datei ausführen, wenn Sie diese mit \Macro{AfterStartingTOC} +definieren. Während der Ausführung der \PName{Anweisungen} ist +\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} die +Dateierweiterung der Datei, die eingelesen wird bzw. gerade eingelesen wurde. + +Ein Beispiel\textnote{Beispiel} zur Verwendung von \Macro{BeforeStartingTOC} +ist in \autoref{sec:scrwfile.clonefilefeature} auf +\PageRefxmpl{scrwfile.cmd.BeforeStartingTOC} zu finden. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{BeforeTOCHead}\OParameter{Dateierweiterung}\Parameter{Anweisungen} + \Macro{AfterTOCHead}\OParameter{Dateierweiterung}\Parameter{Anweisungen} +\end{Declaration} +Es können auch \PName{Anweisungen} definiert werden, die unmittelbar vor oder +nach dem Setzen der Überschrift bei Verwendung von +\DescRef{\LabelBase.cmd.listoftoc} oder \DescRef{\LabelBase.cmd.listofeachtoc} +ausgeführt werden. Bezüglich des optionalen Arguments und der Bedeutung von +\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} gilt, was +bereits bei \DescRef{\LabelBase.cmd.BeforeStartingTOC} und +\DescRef{\LabelBase.cmd.AfterStartingTOC} oben erklärt wurde.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{MakeMarkcase} +\end{Declaration} +Wann immer \Package{tocbasic} eine Marke für einen Kolumnentitel setzt, +erfolgt dies als Argument der Anweisung \Macro{MakeMarkcase}. Diese Anweisung +ist dazu gedacht, bei Bedarf die Groß-/Kleinschreibung des Kolumnentitels zu +ändern. In der Voreinstellung ist diese Anweisung bei Verwendung einer +\KOMAScript-Klasse +\Macro{@firstofone}\IndexCmd{@firstofone}\important{\Macro{@firstofone}}, also +das unveränderte Argument selbst. Bei Verwendung einer anderen Klasse ist +\Macro{MakeMarkcase} im Gegensatz dazu +\Macro{MakeUppercase}\IndexCmd{MakeUppercase}\important{\Macro{MakeUppercase}}. +Die Anweisung wird von \Package{tocbasic} jedoch nur definiert, wenn sie +nicht bereits definiert ist. Sie kann also in einer Klasse in der gewünschten +Weise vorbelegt werden und wird dann von \Package{tocbasic} nicht umdefiniert, +sondern verwendet wie vorgefunden. +\begin{Example} + Sie wollen aus unerfindlichen Gründen, dass die Kolumnentitel in Ihrer + Klasse in Kleinbuchstaben ausgegeben werden. Damit dies auch für die + Kolumnentitel gilt, die von \Package{tocbasic} gesetzt werden, definieren + Sie: +\begin{lstcode} + \let\MakeMarkcase\MakeLowercase +\end{lstcode} +\end{Example} + +Erlauben\textnote{Tipp!} Sie mir einen Hinweis zu \Macro{MakeUppercase}. Diese +Anweisung ist zum einen nicht voll expandierbar. Das bedeutet, dass sie im +Zusammenspiel mit anderen Anweisungen zu Problemen führen kann. Zum anderen +sind sich alle Typografen einig, dass beim Versalsatz, also beim Satz +kompletter Wörter oder Passagen in Großbuchstaben, Sperrung unbedingt +notwendig ist. Dabei darf jedoch kein fester Abstand zwischen den Buchstaben +verwendet werden. Vielmehr muss zwischen unterschiedlichen Buchstaben auch ein +unterschiedlicher Abstand gesetzt werden, weil sich unterschiedliche +Buchstabenkombinationen unterschiedlich verhalten. Gleichzeitig bilden einige +Buchstaben von sich aus bereits Löcher, was bei der Sperrung ebenfalls zu +berücksichtigen ist. Pakete wie \Package{ulem} oder \Package{soul} können das +ebenso wenig leisten wie der Befehl \Macro{MakeUppercase} selbst. Auch die +automatische Sperrung mit Hilfe des \Package{microtype}-Pakets ist +diesbezüglich nur eine näherungsweise Notlösung, da die von der konkreten +Schrift abhängige Form der Buchstaben auch hier nicht näher betrachtet +wird. Da\textnote{Empfehlung} Versalsatz also eher etwas für absolute +Experten ist und fast immer Handarbeit bedeutet, wird Laien empfohlen, darauf +zu verzichten oder ihn nur vorsichtig und nicht an so exponierter Stelle +wie dem Kolumnentitel zu verwenden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{deftocheading}\Parameter{Dateierweiterung}\Parameter{Definition} +\end{Declaration} +Das Paket \Package{tocbasic} enthält eine Standarddefinition für das Setzen +von Überschriften von Verzeichnissen. Diese Standarddefinition ist durch +verschiedene Eigenschaften, die bei der Anweisung +\DescRef{\LabelBase.cmd.setuptoc} erläutert werden, konfigurierbar. Sollte +diese Möglichkeit einmal nicht ausreichen, so besteht die Möglichkeit, mit +\Macro{deftocheading} eine alternative Überschriftenanweisung für ein +Verzeichnis mit einer bestimmten \PName{Dateierweiterung} zu definieren. Die +Definition kann als einzigen Parameter \PValue{\#1} enthalten. Beim Aufruf der +Anweisung innerhalb von \DescRef{\LabelBase.cmd.listoftoc} oder +\DescRef{\LabelBase.cmd.listofeachtoc} wird für dieses Argument dann der Titel +für das Verzeichnis übergeben.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setuptoc}\Parameter{Dateierweiterung} + \Parameter{Liste von Eigenschaften} + \Macro{unsettoc}\Parameter{Dateierweiterung} + \Parameter{Liste von Eigenschaften} +\end{Declaration} +Mit diesen beiden Anweisungen können \PName{Eigenschaften} für eine +\PName{Dateierweiterung} bzw. das Verzeichnis, das dazu gehört, gesetzt und +gelöscht werden. Die \PName{Liste von Eigenschaften} ist dabei eine durch +Komma getrennte Folge von \PName{Eigenschaften}. Das Paket +\Package{tocbasic} wertet folgende Eigenschaften aus: +\begin{description}\setkomafont{descriptionlabel}{}% +\item[\PValue{leveldown}] bedeutet, dass das Verzeichnis nicht mit der + obersten Gliederungsebene unterhalb von \DescRef{maincls.cmd.part} -- wenn + vorhanden \DescRef{maincls.cmd.chapter}, sonst \DescRef{maincls.cmd.section} + -- erstellt wird, sondern mit einer Überschrift der nächst tieferen + Gliederungsebene. Diese Eigenschaft wird von der internen + Überschriftenanweisung ausgewertet. Wird\textnote{Achtung!} hingegen eine + eigene Überschriftenanweisung mit \DescRef{\LabelBase.cmd.deftocheading} + definiert, liegt die Auswertung der Eigenschaft in der Verantwortung dessen, + der die Definition vornimmt. Die \KOMAScript-Klassen setzen diese + Eigenschaft bei Verwendung der Option + \OptionValueRef{maincls}{listof}{leveldown}% + \important{\OptionValueRef{maincls}{listof}{leveldown}}% + \IndexOption{listof~=\textKValue{leveldown}} für alle Dateierweiterungen des + Besitzers \PValue{float}. +\item[\PValue{nobabel}] bedeutet, dass die normalerweise automatisch + verwendete Erweiterung für die Sprachumschaltung mit + \Package{babel}\IndexPackage{babel} für diese Dateierweiterung nicht + verwendet wird. Diese Eigenschaft sollte nur für Verzeichnisse verwendet + werden, die nur in einer festen Sprache erstellt werden, in denen also + Sprachumschaltungen im Dokument nicht zu berücksichtigen sind. Sie wird + außerdem vom Paket + \Package{scrwfile}\important{\Package{scrwfile}}\IndexPackage{scrwfile} für + Klonziele verwendet, da die Erweiterungen dort bereits durch das Klonen + selbst aus der Klonquelle übernommen werden. + + Es ist zu beachten\textnote{Achtung!}, dass die Eigenschaft bereits vor dem + Hinzufügen der Dateierweiterung zu der Liste der bekannten + Dateierweiterungen gesetzt sein muss, damit sie eine Wirkung hat. +\item[\PValue{noparskipfake}] verhindert\ChangedAt{v3.17}{\Package{tocbasic}}, + dass vor dem Abschalten des Absatzabstandes für die Verzeichnisse ein + letztes Mal ein expliziter Absatzabstand eingefügt wird. Dies führt in der + Regel dazu, dass bei Dokumenten mit Absatzabstand der Abstand zwischen + Überschrift und ersten Verzeichniseintrag\index{Verzeichnis>Eintrag} kleiner + wird als zwischen Überschriften und normalem Text. Normalerweise erhält man + daher ohne diese Eigenschaft eine einheitlichere Formatierung. +\item[\PValue{noprotrusion}] verhindert\ChangedAt{v3.10}{\Package{tocbasic}} + das Abschalten des optischen Randausgleichs in den Verzeichnissen. Optischer + Randausgleich wird standardmäßig abgeschaltet, wenn das Paket + \Package{microtype}\IndexPackage{microtype} oder ein anderes Paket, das die + Anweisung \Macro{microtypesetup}\IndexCmd{microtypesetup} bereitstellt, + geladen ist. Wenn also optischer Randausgleich in den Verzeichnissen + gewünscht wird, dann muss diese Eigenschaft aktiviert + werden. Es\textnote{Achtung!} ist jedoch zu beachten, dass der optische + Randausgleich in Verzeichnissen häufig zu einem falschen Ergebnis + führt. Dies ist ein bekanntes Problem des optischen Randausgleichs. +\item[\PValue{numbered}] bedeutet, dass das Verzeichnis nummeriert und damit + ebenfalls in das Inhaltsverzeichnis aufgenommen werden soll. Diese + Eigenschaft wird von der internen Überschriftenanweisung ausgewertet. Wird + hingegen eine eigene Überschriftenanweisung mit + \DescRef{\LabelBase.cmd.deftocheading} definiert, liegt die Auswertung der + Eigenschaft in der Verantwortung dessen, der die Definition vornimmt. Die + \KOMAScript-Klassen setzen diese Eigenschaft bei Verwendung der Option + \OptionValueRef{maincls}{listof}{numbered}% + \important{\OptionValueRef{maincls}{listof}{numbered}}% + \IndexOption{listof~=\textKValue{numbered}} für alle Dateierweiterungen des + Besitzers \Package{float}. +\item[\PValue{numberline}] \ChangedAt{v3.12}{\Package{tocbasic}}% + bedeutet, dass all diejenigen Einträge, die mit Hilfe der Anweisung + \DescRef{\LabelBase.cmd.addxcontentsline} oder der Anweisung + \DescRef{\LabelBase.cmd.addxcontentslinetoeachtocfile} vorgenommen werden, wobei das optionale Argument für die Nummer fehlt + oder leer ist, mit einer leeren + \DescRef{\LabelBase.cmd.numberline}-Anweisung versehen werden. Das führt in + der Regel dazu, dass diese Einträge nicht linksbündig mit der Nummer, + sondern mit dem Text der nummerierten Einträge gleicher Ebene gesetzt + werden. Bei\ChangedAt{v3.20}{\Package{tocbasic}} Verwendung des + Verzeichniseintragsstils \PValue{tocline} kann die Eigenschaft weitere + Auswirkungen haben. Siehe dazu die Stil-Eigenschaften + \Option{breakafternumber} und \Option{entrynumberformat} in + \autoref{tab:tocbasic.tocstyle.attributes} ab + \autopageref{tab:tocbasic.tocstyle.attributes}. + + Die \KOMAScript-Klassen setzen diese Eigenschaft bei Verwendung der Option + \OptionValueRef{maincls}{listof}{numberline}% + \important{\OptionValueRef{maincls}{listof}{numberline}}% + \IndexOption{listof~=\textKValue{numberline}} für die Dateierweiterungen des + Besitzers \PValue{float} und bei Verwendung der Option + \OptionValueRef{maincls}{toc}{numberline}% + \important{\OptionValueRef{maincls}{toc}{numberline}}% + \IndexOption{toc~=\textKValue{numberline}} für die Dateierweiterung + \PValue{toc}. Entsprechend wird die Eigenschaft bei Verwendung von Option + \OptionValueRef{maincls}{listof}{nonumberline}% + \important{\OptionValueRef{maincls}{listof}{nonumberline}}% + \IndexOption{listof~=\textKValue{nonumberline}} oder + \OptionValueRef{maincls}{toc}{nonumberline}% + \important{\OptionValueRef{maincls}{toc}{nonumberline}}% + \IndexOption{toc~=\textKValue{nonumberline}} wieder zurückgesetzt. +\item[\PValue{onecolumn}] \leavevmode\ChangedAt{v3.01}{\Package{tocbasic}}% + bedeutet, dass für dieses Verzeichnis automatisch der \LaTeX-interne + Einspaltenmodus mit \Macro{onecolumn}\IndexCmd{onecolumn} verwendet + wird. Dies\textnote{Achtung!} gilt jedoch nur, falls dieses Verzeichnis + nicht mit der oben beschriebenen Eigenschaft + \PValue{leveldown}\important{\PValue{leveldown}} um eine Gliederungsebene + nach unten verschoben wurde. Die \KOMAScript-Klassen \Class{scrbook} und + \Class{scrreprt} setzen diese Eigenschaft per + \DescRef{\LabelBase.cmd.AtAddToTocList} (siehe + \DescPageRef{\LabelBase.cmd.AtAddToTocList}) für alle Verzeichnisse mit dem + Besitzer \PValue{float} oder mit sich selbst als Besitzer. Damit werden + beispielsweise das Inhaltsverzeichnis, das Abbildungsverzeichnis und das + Tabellenverzeichnis bei diesen beiden Klassen automatisch einspaltig + gesetzt. Der Mehrspaltenmodus des + \Package{multicol}-Pakets\IndexPackage{multicol} ist von der Eigenschaft + ausdrücklich nicht betroffen. +\item[\PValue{totoc}] bedeutet, dass der Titel des Verzeichnisses in das + Inhaltsverzeichnis aufgenommen werden soll. Diese Eigenschaft wird von der + internen Überschriftenanweisung ausgewertet. Wird\textnote{Achtung!} mit + \DescRef{\LabelBase.cmd.deftocheading}\important{\DescRef{\LabelBase.cmd.deftocheading}}% + \IndexCmd{deftocheading} hingegen eine eigene Überschriftenanweisung + definiert, liegt die Auswertung der Eigenschaft in der Verantwortung dessen, + der die Definition vornimmt. Die \KOMAScript-Klassen setzen diese + Eigenschaft bei Verwendung der Option + \OptionValueRef{maincls}{listof}{totoc}% + \important{\OptionValueRef{maincls}{listof}{totoc}}% + \IndexOption{listof~=\textKValue{totoc}} für alle Dateierweiterungen des + Besitzers \Package{float}. +\end{description} +Die \KOMAScript-Klassen kennen eine weitere Eigenschaft: +\begin{description}\setkomafont{descriptionlabel}{} +\item[\PValue{chapteratlist}] sorgt dafür, dass in dieses Verzeichnis bei + jedem neuen Kapitel eine optionale Gliederung eingefügt wird. In der + Voreinstellung ist diese Untergliederung dann ein vertikaler + Abstand. Näheres zu den Möglichkeiten ist Option + \DescRef{maincls.option.listof}% + \IndexOption{listof~=\PName{Einstellung}}% + \important{\DescRef{maincls.option.listof}} in + \autoref{sec:maincls.floats}, \DescPageRef{maincls.option.listof} zu + entnehmen. +\end{description} +\begin{Example} + Da \KOMAScript{} für das Abbildungs- und das Tabellenverzeichnis auf + \Package{tocbasic} aufbaut, gibt es nun eine weitere Möglichkeit, jegliche + Kapiteluntergliederung dieser Verzeichnisse zu verhindern: +\begin{lstcode} + \unsettoc{lof}{chapteratlist} + \unsettoc{lot}{chapteratlist} +\end{lstcode} + + Wollen Sie hingegen, dass das von Ihnen definierte Verzeichnis mit der + Dateierweiterung »\PValue{loa}« ebenfalls von der Kapiteluntergliederung der + \KOMAScript-Klassen betroffen ist, so verwenden Sie +\begin{lstcode} + \setuptoc{loa}{chapteratlist} +\end{lstcode} +Wollen Sie außerdem, dass bei Klassen, die \DescRef{maincls.cmd.chapter} als +oberste Gliederungsebene verwenden, das Verzeichnis automatisch einspaltig +gesetzt wird, so verwenden Sie zusätzlich +\begin{lstcode} + \ifundefinedorrelax{chapter}{}{% + \setuptoc{loa}{onecolumn}% + } +\end{lstcode} + Die Verwendung von \DescRef{scrbase.cmd.ifundefinedorrelax} + setzt das Paket \Package{scrbase} voraus (siehe + \autoref{sec:scrbase.if}, + \DescPageRef{scrbase.cmd.ifundefinedorrelax}). + + Sollte\textnote{Tipp!} Ihr Paket mit einer anderen Klasse verwendet werden, + so schadet es trotzdem nicht, dass Sie diese Eigenschaften setzen, im + Gegenteil: Wertet eine andere Klasse diese Eigenschaften ebenfalls aus, so + nutzt Ihr Paket automatisch die Möglichkeiten jener Klasse. +\end{Example} +Wie Sie hier sehen, unterstützt ein Paket, das \Package{tocbasic} verwendet, +bereits ohne nennenswerten Aufwand diverse Möglichkeiten für die dadurch +realisierten Verzeichnisse, die sonst einigen Implementierungsaufwand +bedeuten würden und deshalb in vielen Paketen leider fehlen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{iftocfeature}\Parameter{Dateierweiterung}\Parameter{Eigenschaft} + \Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +Hiermit kann man für jede \PName{Eigenschaft} feststellen, ob sie für eine +\PName{Dateierweiterung} gesetzt ist. Ist dies der Fall, wird der +\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Das kann +beispielsweise nützlich sein, wenn Sie eigene Überschriftenanweisungen mit +\DescRef{\LabelBase.cmd.deftocheading} definieren, aber die oben beschriebenen +Eigenschaften \PValue{totoc}, \PValue{numbered} oder \PValue{leveldown} +unterstützen wollen. +% +\EndIndexGroup + + +\section{Konfiguration von Verzeichniseinträgen} +\seclabel{tocstyle} +\BeginIndexGroup +\BeginIndex{}{Verzeichnis>Eintrag} + +Neben\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} den eigentlichen +Verzeichnissen und den zugehörigen Hilfsdateien kann man mit dem Paket +\Package{tocbasic} ab Version~3.20 auch Einfluss auf die Verzeichniseinträge +nehmen. Dazu können neue Stile definiert werden. Es stehen aber auch mehrere +vordefinierte Stile zur Verfügung. Mittelfristig wird \Package{tocbasic} das +nie offiziell gewordene \KOMAScript-Paket \Package{tocstyle} ablösen. Die +\KOMAScript-Klassen selbst bauen seit Version~3.20 ebenfalls vollständig auf +die von \Package{tocbasic} bereitgestellten Stile für Verzeichniseinträge. + +\begin{Declaration} + \Counter{tocdepth} +\end{Declaration} +Verzeichniseinträge sind normalerweise hierarchisch geordnet. Dazu wird jeder +Eintragsebene ein nummerischer Wert zu geordnet. Je höher dieser Wert, desto +tiefer in der Hierarchie liegt die Ebene. Bei den Standardklassen hat die +Ebene für Teile beispielsweise den Wert -1 und die Ebene für Kapitel den Wert +0. Über den \LaTeX-Zähler \Counter{tocdepth} wird bestimmt, bis zu welcher +Ebene Einträge im Verzeichnis ausgegeben werden. + +Bei \Class{book} ist \Counter{tocdepth} beispielsweise mit 2 voreingestellt, +es werden also die Einträge der Ebenen \PValue{part}, \PValue{chapter}, +\PValue{section} und \PValue{subsection} ausgeben. Tiefere Ebenen wie +\PValue{subsubsection}, deren nummerischer Wert 3 ist, werden nicht +ausgegeben. Trotzdem sind die Einträge in der Hilfsdatei für das +Inhaltsverzeichnis vorhanden. + +Die von \Package{tocbasic} definierten Eintragsstile beachten, abgesehen von +\PValue{gobble} (siehe +\DescRef{\LabelBase.cmd.DeclareTOCStyleEntry}\iffree{}{, weiter unten in + diesem Abschnitt}), ebenfalls \Counter{tocdepth}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{numberline}\Parameter{Gliederungsnummer} + \Macro{usetocbasicnumberline}\OParameter{Code} +\end{Declaration} +Zwar\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} definiert bereits der +\LaTeX-Kern eine Anweisung \Macro{numberline}, diese ist allerdings für die +Anforderungen von \Package{tocbasic} nicht ausreichend. Deshalb definiert +\Package{tocbasic} eigene Anweisungen und setzt \Macro{numberline} bei Bedarf +mit Hilfe von \Macro{usetocbasicnumberline} für die einzelnen +Verzeichniseinträge entsprechend. Eine Umdefinierung von \Macro{numberline} +ist daher bei Verwendung von \Package{tocbasic} oftmals wirkungslos und führt +teilweise auch zu Warnungen. + +Man kann auch die Definition von \Package{tocbasic} generell nutzen, indem man +bereits in der Dokumentpräambel \Macro{usetocbasicnumberline} aufruft. Die +Anweisung versucht zunächst zu ermitteln, ob in der aktuellen Definition +wichtige interne Anweisungen von \Package{tocbasic} verwendet werden. Ist dies +nicht der Fall, wird \Macro{numberline} entsprechend umdefiniert und zusätzlich +\PName{Code} ausgeführt. Ist kein optionales Arguments angegeben, wird +stattdessen via \Macro{PackageInfo} eine Meldung über die erfolgte +Umdefinierung ausgegeben. Diese Meldung kann man einfach unterdrücken, indem +ein leeres optionales Argument angegeben wird. + +Es\textnote{Achtung!} ist zu beachten, dass \Macro{usetocbasicnumberline} den +internen Schalter \Macro{if@tempswa} global verändern kann!% +\EndIndexGroup + + +\begin{Declaration} + \Macro{DeclareTOCStyleEntry}\OParameter{Optionenliste}\Parameter{Stil} + \Parameter{Eintragsebene} + \Macro{DeclareTOCStyleEntries}\OParameter{Optionenliste}\Parameter{Stil} + \Parameter{Liste von Eintragsebenen} +\end{Declaration} +Über\ChangedAt{v3.20}{\Package{tocbasic}} diese Anweisungen werden +die Verzeichniseinträge für bestimmte \PName{Eintragsebenen} deklariert +oder konfiguriert. Dabei ist die \PName{Eintragsebene} der Name der jeweiligen +Eintragsebene, beispielsweise \PValue{section} für einen zur gleichnamigen +Gliederungsebene gehörenden Eintrag ins Inhaltsverzeichnis oder +\PValue{figure} für den Eintrag einer Abbildung ins +Abbildungsverzeichnis. Jeder \PName{Eintragsebene} wird ein bestimmter +\PName{Stil} zugeordnet, der zum Zeitpunkt der Deklaration bereits definiert +sein muss. Über die \PName{Optionenliste} können die verschiedenen, meist vom +\PName{Stil} abhängenden Eigenschaften des Eintrags festgelegt werden. + +Derzeit werden von \Package{tocbasic} die folgenden Eintragsstile definiert: +\begin{description}\setkomafont{descriptionlabel}{} +\item[\PValue{default}] ist in der Voreinstellung ein Klon von Stil + \PValue{dottedtocline}. Klassenautoren, die \Package{tocbasic} verwenden, + wird empfohlen, diesen Stil mit Hilfe von + \DescRef{\LabelBase.cmd.CloneTOCEntryStyle} auf den + Standardverzeichniseintragsstil der Klasse zu ändern. Bei den + \KOMAScript-Klassen wird \PValue{default} beispielsweise zu einem Klon von + Stil \PValue{tocline}. +\item[\PValue{dottedtocline}] entspricht dem Stil, der von den Standardklassen + \Class{book} und \Class{report} für die Inhaltsverzeichniseinträge der + Ebenen \PValue{section} bis \PValue{subparagraph} und bei allen + Standardklassen für die Einträge in das Abbildungs- und das + Tabellenverzeichnis bekannt ist. Er kennt nur drei\important{\PValue{level}, + \PValue{indent}, \PValue{numwidth}} Eigenschaften. Die Einträge werden + um \PValue{indent} von links eingezogen in der aktuellen Schrift + ausgegeben. \DescRef{\LabelBase.cmd.numberline} wird nicht umdefiniert. Die + Breite der Nummer wird von \PValue{numwidth} bestimmt. Bei mehrzeiligen + Einträgen wird der Einzug ab der zweiten Zeile um \PValue{numwidth} + erhöht. Die Seitenzahl wird mit \Macro{normalfont} ausgegeben. Eintragstext + und Seitenzahl werden durch eine punktierte Linie + verbunden. \autoref{fig:tocbasic.dottedtocline} illustriert die + Eigenschaften des Stils. + \begin{figure} + \centering + \resizebox{.8\linewidth}{!}{% + \begin{tikzpicture} + \draw[color=lightgray] (0,2\baselineskip) -- (0,-2.5\baselineskip); + \draw[color=lightgray] (\linewidth,2\baselineskip) -- + (\linewidth,-2.5\baselineskip); + \node (dottedtocline) at (0,0) [anchor=west,inner sep=0,outer sep=0] + {% + \hspace*{7em}% + \parbox[t]{\dimexpr\linewidth-9.55em}{% + \setlength{\parindent}{-3.2em}% + \addtolength{\parfillskip}{-2.55em}% + \makebox[3.2em][l]{1.1.10}% + Überschrift im Verzeichniseintragsstil \PValue{dottedtocline} mit + mehr als einer Zeile% + \leaders\hbox{$\csname m@th\endcsname + \mkern 4.5mu\hbox{.}\mkern 4.5mu$}\hfill\nobreak + \makebox[1.55em][r]{12}% + }% + }; + \draw[|-|,color=gray,overlay] (0,0) -- + node [anchor=north,font=\small] { + \PValue{indent} + } + (3.8em,0); + \draw[|-|,color=gray,overlay] (3.8em,\baselineskip) -- + node [anchor=south,font=\small] { + \PValue{numwidth} + } + (7em,\baselineskip); + \draw[|-|,color=gray,overlay] (\linewidth,\ht\strutbox) -- + node [anchor=south,font=\small] { + \Macro{@tocrmarg} + } + (\linewidth-2.55em,\ht\strutbox); + \draw[|-|,color=gray,overlay] (\linewidth,-\baselineskip) -- + node [anchor=north,font=\small] { + \Macro{@pnumwidth} + } + (\linewidth-1.55em,-\baselineskip); + \end{tikzpicture}% + } + \caption{Illustration einiger Attribute des Verzeichniseintragsstils + \PValue{dottedtocline}} + \label{fig:tocbasic.dottedtocline} + \end{figure} +\item[\PValue{gobble}] ist der denkbar einfachste Stil. Einträge in diesem + Stil werden unabhängig von allen Einstellungen für + \DescRef{\LabelBase.counter.tocdepth}% + \IndexCounter{tocdepth}\important{\DescRef{\LabelBase.counter.tocdepth}} + nicht ausgegeben sondern sozusagen verschluckt. Dennoch verfügt er über die + Standardeigenschaft \PValue{level}, die jedoch nie ausgewertet wird. +\item[\PValue{largetocline}] entspricht dem Stil, der von den Standardklassen + für die Ebene \PValue{part} bekannt ist. Er kennt + nur\important{\PValue{level}, \PValue{indent}} die Eigenschaften + \PName{level} und \PName{indent}. Letzteres ist gleichsam eine Abweichung + von den Standardklassen, die selbst keinen Einzug der \PValue{part}-Einträge + unterstützen. + + Vor dem Eintrag wird ein Seitenumbruch erleichtert. Die Einträge werden um + \PValue{indent} von links eingezogen und mit den Schrifteinstellungen + \Macro{large}\Macro{bfseries} ausgegeben. Sollte + \DescRef{\LabelBase.cmd.numberline} verwendet werden, so ist die + Nummernbreite fest auf 3\Unit{em} + eingestellt. \DescRef{\LabelBase.cmd.numberline} wird nicht umdefiniert. Die + Standardklassen verwenden für \PName{part}-Einträge kein + \DescRef{\LabelBase.cmd.numberline}. Der Wert hat bei mehrzeiligen Einträgen + auch keine Auswirkung auf den Einzug ab der zweiten Zeile. + + \autoref{fig:tocbasic.largetocline} illustriert die + Eigenschaften + des Stils. Dabei wird auch auf"|fällig, dass der Stil einige Ungereimtheiten + der Standardklassen übernommen hat, beispielsweise der fehlende Einzug ab + der zweiten Zeile bei mehrzeiligen Einträgen und zwei unterschiedliche Werte + für \Macro{@pnumwidth}, die aus einer Abhängigkeit von der Schriftgröße + resultieren. Daraus resultiert auch der Umstand, dass im Extremfall der Text + der Überschrift der Seitenzahl zu nahe kommen kann. Es ist zu beachten, dass + die in der Abbildung gezeigte Breite der Gliederungsnummer nur dann + Verwendung findet, wenn auch tatsächlich \DescRef{\LabelBase.cmd.numberline} + verwendet wird. Die Standardklassen setzen hingegen einen festen Abstand von + 1\Unit{em} nach der Nummer. + \begin{figure} + \centering + \resizebox{.8\linewidth}{!}{% + \begin{tikzpicture} + \draw[color=lightgray] (0,2\baselineskip) -- (0,-2.5\baselineskip); + \draw[color=lightgray] (\linewidth,2\baselineskip) -- + (\linewidth,-2.5\baselineskip); + \node (largetocline) at (0,0) [anchor=west,inner sep=0,outer sep=0] {% + \parbox[t]{\dimexpr \linewidth-1.55em\relax}{% + \makebox[3em][l]{\large\bfseries I}% + \large\bfseries + Überschrift im Verzeichniseintragsstil \PValue{largetocline} mit + mehr als einer Zeile\hfill + \makebox[0pt][l]{\normalsize\normalfont + \makebox[1.55em][r]{\large\bfseries 1}}% + }% + }; + \draw[|-|,color=gray] (0,\baselineskip) -- + node [anchor=south] { 3\,em } + (3em,\baselineskip); + \draw[|-|,color=gray,overlay] (\linewidth,\ht\strutbox) -- + node [anchor=south] { \Macro{@pnumwidth} } + (\linewidth-1.55em,\ht\strutbox); + \large\bfseries + \draw[|-|,color=gray,overlay] (\linewidth,-\baselineskip) -- + node [anchor=north,font=\normalfont\normalsize] { + \Macro{large}\Macro{@pnumwidth} + } + (\linewidth-1.55em,-\baselineskip); + \end{tikzpicture}% + } + \caption{Illustration einiger Attribute des Verzeichniseintragsstils + \PValue{largetocline}} + \label{fig:tocbasic.largetocline} + \end{figure} +\item[\PValue{tocline}] ist ein flexibler Stil, der in der Voreinstellung für + alle Einträge der \KOMAScript-Klassen verwendet wird. Entsprechend + definieren diese Klassen auch die Klone \PValue{part}, \PValue{chapter} und + \PValue{section} beziehungsweise \PValue{section} und \PValue{subsection} + mit Hilfe dieses Stils, ändern dann jedoch den \PName{Initialisierungscode} + der Klone so ab, dass sie unterschiedliche Voreinstellungen besitzen. + + Der Stil kennt neben der Standardeigenschaft \PValue{level} noch + 16\important{\PValue{level}, \PValue{beforeskip}, \PValue{breakafternumber}, + \PValue{dynnumwidth}, \PValue{entryformat}, \PValue{entrynumberformat}, + \PValue{indent}, \PValue{linefill}, \PValue{numsep}, \PValue{numwidth}, + \PValue{onstarthigherlevel}, \PValue{onstartlowerlevel}, + \PValue{onstartsamelevel}, \PValue{pagenumberbox}, + \PValue{pagenumberformat}, \PValue{raggedentrytext}, + \PValue{raggedpagenumber}} weitere Eigenschaften. Die Voreinstellungen all + dieser Eigenschaften werden abhängig vom Namen der \PName{Eintragsebene} + bestimmt und orientieren sich dann an den Ergebnissen der + Standardklassen. Es ist daher möglich, nach Laden von \Package{tocbasic} den + Stil der Inhaltsverzeichniseinträge der Standardklassen mit + \DescRef{\LabelBase.cmd.DeclareTOCEntryStyle} in \PValue{tocline} zu ändern, + ohne dass dies unmittelbar zu größeren Veränderungen im Aussehen der + Inhaltsverzeichniseinträge führt. So kann man gezielt nur die Eigenschaften + ändern, die für erwünschte Änderungen notwendig sind. Dasselbe gilt für + Abbildungs- und Tabellenverzeichnis der Standardklassen.% + + Aufgrund der hohen Flexibilität kann dieser Stil prinzipiell die Stile + \PValue{dottedtocline}, \PValue{undottedtocline} und \PValue{largetocline} + ersetzen, bedarf dann jedoch teilweise eines höheren Aufwands bei der + Konfiguration. + + \autoref{fig:tocbasic.tocline} illustriert einige Längen-Eigenschaften des + Stils. Die weiteren sind in \autoref{tab:tocbasic.tocstyle.attributes}, ab + \autopageref{tab:tocbasic.tocstyle.attributes} erklärt. + \begin{figure} + \centering + \resizebox{.8\linewidth}{!}{% + \begin{tikzpicture} + \coordinate (subsection) at (0,0); + \coordinate (section) at ($(subsection)+(0,2\baselineskip)$); + \coordinate (chapter) at ($(section)+(0,2\baselineskip)$); + \coordinate (part) at ($(chapter)+(0,2.4\baselineskip+1em)$); + + \draw[color=lightgray] + ($(part)+(0,2\baselineskip)$) -- + (0,-2.5\baselineskip); + \draw[color=lightgray] + ($(part)+(\linewidth,2\baselineskip)$) -- + (\linewidth,-2.5\baselineskip); + + \coordinate (subsection) at (0,0); + + \node at (part) [anchor=west,inner sep=0,outer sep=0] + {% + \hspace*{3em}% + \parbox[t]{\dimexpr\linewidth-5.55em}{% + \setlength{\parindent}{-3em}% + \addtolength{\parfillskip}{-2.55em}% + \makebox[3em][l]{\large\bfseries I.}% + \textbf{\large Überschrift eines Teil-Eintrags im Stil + \PValue{tocline} zur Demonstration mit mehr als einer Zeile}% + \hfill + \makebox[1.55em][r]{\bfseries 12}\large + }% + }; + \draw[|-|,color=gray,overlay] + (part) -- + ($(part)+(3em,0)$) + node [anchor=north east,font=\small] { + \PValue{numwidth} + }; + \draw[|-|,color=gray,overlay] + ($(part)+(\linewidth,\ht\strutbox)$) + node [anchor=north,font=\small] { + \Macro{@tocrmarg} + } -- + ($(part)+(\linewidth-2.55em,\ht\strutbox)$); + \draw[|-|,color=gray,overlay] + ($(part)+(\linewidth,-\baselineskip)$) -- + node [anchor=north,font=\small] { + \Macro{@pnumwidth} + } + ($(part)+(\linewidth-1.55em,-\baselineskip)$); + \node at (chapter) [anchor=west,inner sep=0,outer sep=0] + {% + \hspace*{1.5em}% + \parbox[t]{\dimexpr\linewidth-4.05em}{% + \setlength{\parindent}{-1.5em}% + \addtolength{\parfillskip}{-2.55em}% + \makebox[1.5em][l]{\bfseries 1.}% + \textbf{Überschrift eines Kapiteleintrags im Stil + \PValue{tocline} zur Demonstration mit mehr als einer Zeile}% + \hfill + \makebox[1.55em][r]{\bfseries 12}% + }% + }; + \draw[|-|,color=gray,overlay] + ($(chapter)+(3em,\baselineskip)$) -- + node [anchor=west,font=\small] { + \PValue{beforeskip} + } + ($(part)+(3em,-\baselineskip)$); + \draw[|-|,color=gray,overlay] + (chapter) -- + ($(chapter)+(1.5em,0)$) + node [anchor=north east,font=\small] { + \PValue{numwidth} + }; + \draw[|-|,color=gray,overlay] + ($(chapter)+(\linewidth,\ht\strutbox)$) + node [anchor=north,font=\small] { + \Macro{@tocrmarg} + } -- + ($(chapter)+(\linewidth-2.55em,\ht\strutbox)$); + \draw[|-|,color=gray,overlay] + ($(chapter)+(\linewidth,-\baselineskip)$) + node [anchor=north,font=\small] { + \Macro{@pnumwidth} + } -- + ($(chapter)+(\linewidth-1.55em,-\baselineskip)$); + \node at (section) [anchor=west,inner sep=0,outer sep=0] + { + \hspace*{3.8em}% + \parbox[t]{\dimexpr\linewidth-6.35em}{% + \setlength{\parindent}{-2.3em}% + \addtolength{\parfillskip}{-2.55em}% + \makebox[2.3em][l]{1.1.}% + Überschrift eines Abschnitteintrags im Stil + \PValue{tocline} zur Demonstration mit mehr als einer Zeile% + \leaders\hbox{$\csname m@th\endcsname + \mkern 4.5mu\hbox{.}\mkern 4.5mu$}\hfill\nobreak + \makebox[1.55em][r]{3}% + }% + }; + \node at (subsection) [anchor=west,inner sep=0,outer sep=0] + {% + \hspace*{7em}% + \parbox[t]{\dimexpr\linewidth-9.55em}{% + \setlength{\parindent}{-3.2em}% + \addtolength{\parfillskip}{-2.55em}% + \makebox[3.2em][l]{1.1.10.}% + Überschrift eines Unterabschnitteintrags im Stil + \PValue{tocline} mit mehr als einer Zeile% + \leaders\hbox{$\csname m@th\endcsname + \mkern 4.5mu\hbox{.}\mkern 4.5mu$}\hfill\nobreak + \makebox[1.55em][r]{12}% + }% + }; + \draw[|-|,color=gray,overlay] + ($(subsection)+(0,\ht\strutbox)$) -- + node [anchor=north,font=\small] { + \PValue{indent} + } + ($(subsection)+(3.8em,\ht\strutbox)$); + \draw[|-|,color=gray,overlay] + ($(subsection)+(3.8em,0)$) -- + ($(subsection)+(7em,0)$) + node [anchor=north east,font=\small] { + \PValue{numwidth} + }; + \draw[|-|,color=gray,overlay] + ($(subsection)+(\linewidth,\ht\strutbox)$) + node [anchor=north,font=\small] { + \Macro{@tocrmarg} + } -- + ($(subsection)+(\linewidth-2.55em,\ht\strutbox)$); + \draw[|-|,color=gray,overlay] + ($(subsection)+(\linewidth,-\baselineskip)$) -- + node [anchor=north,font=\small] { + \Macro{@pnumwidth} + } + ($(subsection)+(\linewidth-1.55em,-\baselineskip)$); + \end{tikzpicture}% + } + \caption{Illustration einiger Attribute des Verzeichniseintragsstils + \PValue{tocline}} + \label{fig:tocbasic.tocline} + \end{figure} +\item[\PValue{undottedtocline}] entspricht dem Stil, der von den + Standardklassen \Class{book} und \Class{report} für die Ebene + \PValue{chapter} und von \Class{article} für die Ebene \PValue{section} + bekannt ist. Er kennt\important{\PValue{level}, \PValue{indent}, + \PValue{numwidth}} nur drei Eigenschaften. + Vor dem Eintrag wird ein Seitenumbruch erleichtert und ein vertikaler + Abstand eingefügt. Die Einträge werden um \PValue{indent} von links + eingezogen in \Macro{bfseries} ausgegeben. Dies ist gleichsam eine + Abweichung von den Standardklassen, die selbst keinen Einzug für Einträge + der genannten Ebenen bieten. \DescRef{\LabelBase.cmd.numberline} wird nicht + umdefiniert. Die Breite der Nummer wird von \PValue{numwidth} bestimmt. Bei + mehrzeiligen Einträgen wird der Einzug ab der zweiten Zeile um + \PValue{numwidth} erhöht. \autoref{fig:tocbasic.undottedtocline} illustriert + die Eigenschaften des Stils. + \begin{figure} + \centering + \resizebox{.8\linewidth}{!}{% + \begin{tikzpicture} + \draw[color=lightgray] (0,2\baselineskip) -- (0,-2.5\baselineskip); + \draw[color=lightgray] (\linewidth,2\baselineskip) -- + (\linewidth,-2.5\baselineskip); + \node (undottedtocline) at (0,0) [anchor=west,inner sep=0,outer sep=0] + {% + \makebox[1.5em][l]{\bfseries 1}% + \parbox[t]{\dimexpr \linewidth-4.05em\relax}{% + \bfseries + Überschrift im Verzeichniseintragsstil \PValue{undottedtocline} mit + mehr als einer Zeile% + }% + \raisebox{-\baselineskip}{\makebox[2.55em][r]{\bfseries 3}}% + }; + \draw[|-|,color=gray,overlay] (0,\baselineskip) -- + node [anchor=south,font=\small] { + \PValue{numwidth} + } + (1.5em,\baselineskip); + \draw[|-|,color=gray,overlay] (\linewidth,\ht\strutbox) -- + node [anchor=south,font=\small] { + \Macro{@tocrmarg} + } + (\linewidth-2.55em,\ht\strutbox); + \draw[|-|,color=gray,overlay] (\linewidth,-\baselineskip) -- + node [anchor=north,font=\small] { + \Macro{@pnumwidth} + } + (\linewidth-1.55em,-\baselineskip); + \end{tikzpicture}% + } + \caption{Illustration einiger Attribute des Verzeichniseintragsstils + \PValue{undottedtocline} am Beispiel einer Kapitelüberschrift} + \label{fig:tocbasic.undottedtocline} + \end{figure} +\end{description} +Eine Erklärung zu den Eigenschaften der von \Package{tocbasic} definierten +Stile findet sich in \autoref{tab:tocbasic.tocstyle.attributes}. +Bei\ChangedAt{v3.21}{\Package{tocbasic}} Verwendung der Eigenschaften +als Optionen für +\DescRef{\LabelBase.cmd.DeclareNewTOC}\IndexCmd{DeclareNewTOC} (siehe +\DescPageRef{\LabelBase.cmd.DeclareNewTOC}) sind die Namen der Eigenschaften +mit dem Präfix \PValue{tocentry}, also beispielsweise \Option{tocentrylevel} +anstelle von \PValue{level}, zu +verwenden. Bei\ChangedAt{v3.20}{\Package{tocbasic}} Verwendung als +Optionen für \DescRef{maincls-experts.cmd.DeclareSectionCommand}% +\IndexCmd{DeclareSectionCommand}\IndexCmd{DeclareNewSectionCommand}% +\IndexCmd{RedeclareSectionCommand}\IndexCmd{ProvideSectionCommand} (siehe +\DescPageRef{maincls-experts.cmd.DeclareSectionCommand}) und verwandten +Anweisungen sind die Namen der Eigenschaften mit dem Präfix \PValue{toc} zu +versehen, also beispielsweise \Option{toclevel} anstelle von \PValue{level} zu +verwenden. + +Letztlich führt der Aufruf von \Macro{DeclareTOCStyleEntry} zur Definition der +Anweisung \Macro{l@\PName{Eintragsebene}}. + +\begin{desclist} + \desccaption{% + Attribute für die vordefinierten Verzeichniseintragsstile von + \Package{tocbasic}% + \label{tab:tocbasic.tocstyle.attributes}% + }{% + Attribute der Verzeichniseintragsstile (\emph{Fortsetzung})% + }% + \entry{\OptionVName{beforeskip}{Länge}}{% + Vertikaler Abstand, der vor einem Eintrag dieser Ebene im Stil + \PValue{tocline} eingefügt wird (siehe \autoref{fig:tocbasic.tocline}). Der + Abstand wird je nach Ebene mit \Macro{vskip} oder \Macro{addvspace} + eingefügt, so dass diesbezüglich möglichst Kompatibilität zu den + Standardklassen und früheren Versionen von \KOMAScript{} besteht. + + Bei der \PName{Eintragsebene} \PValue{part} wird das Attribut mit + \texttt{2.25em plus 1pt} initialisiert, bei \PValue{chapter} mit + \texttt{1em plus 1pt}. Ist noch keine \PName{Eintragsebene} + \PValue{chapter} bekannt, wird stattdessen für \PValue{section} + \texttt{1em plus 1pt} verwendet. Ansonsten wird \PValue{section} wie alle + anderen Ebenen mit \texttt{0pt plus .2pt} initialisiert.% + }% + \entry{\OptionVName{breakafternumber}{Schalter}}{% + \PName{Schalter} ist einer der Werte für einfache Schalter aus + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. Ist der + Schalter beim Stil \PValue{tocline} aktiviert, so wird nach der mit + \DescRef{\LabelBase.cmd.numberline}\IndexCmd{numberline} gesetzten Nummer + eine neue Zeile begonnen, die erneut linksbündig mit der Nummer beginnt. + + In der Voreinstellung ist die Eigenschaft im Stil \PValue{tocline} nicht + gesetzt. + + Ist %\textnote{Achtung!} + für ein Verzeichnis mit \DescRef{\LabelBase.cmd.setuptoc} die Eigenschaft + \Option{numberline} gesetzt (siehe \autoref{sec:tocbasic.toc}, + \DescPageRef{\LabelBase.cmd.setuptoc}), wie dies bei den + \KOMAScript-Klassen und Verwendung deren Option + \OptionValueRef{maincls}{toc}{numberline}% + \IndexOption{toc~=\textKValue{numberline}} der Fall ist, führt dies auch + dazu, dass bei nicht nummerierten Einträgen dennoch die Zeile mit der dann + leeren Nummer in der Formatierung von \Option{entrynumberformat} gesetzt + wird.% + }% + \entry{\OptionVName{dynnumwidth}{Schalter}}{% + \PName{Schalter} ist einer der Werte für einfache Schalter aus + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. Ist der + Schalter beim Stil \PValue{tocline} aktiviert, gibt die Eigenschaft + \PValue{numwidth} nur noch einen Minimalwert an. Übertrifft die beim + letzten \LaTeX-Lauf ermittelte maximale Breite der Eintragsnummern + gleicher Ebene zuzüglich des Wertes von \PValue{numsep} diesen + Minimalwert, so wird stattdessen der ermittelte Wert verwendet.% + }% + \entry{\OptionVName{entryformat}{Befehl}}{% + Über diese Eigenschaft kann die Formatierung des gesamten Eintrags + verändert werden. Der dabei als Wert angegebene \PName{Befehl} hat genau + ein Argument zu erwarten. Dieses Argument ist nicht zwingend voll + expandierbar. Befehle wie \Macro{MakeUppercase}, die ein voll + expandierbares Argument erwarten, dürfen an dieser Stelle also nicht + verwendet werden. Font-Änderungen über \Option{entryformat} erfolgen + ausgehend von \Macro{normalfont}\Macro{normalsize}. Es wird darauf + hingewiesen, dass die Ausgabe von \Option{linefill} und der Seitenzahl + unabhängig von \Option{entryformat} sind. Siehe dazu auch die Eigenschaft + \Option{pagenumberformat}. + + Initialisiert wird die Eigenschaft für die \PName{Eintragsebene} + \PValue{part} mit der Ausgabe des übergebenen Argument in + \Macro{large}\Macro{bfseries} und für \PValue{chapter} in + \Macro{bfseries}. Falls bei der Initialisierung von \PValue{section} noch + keine Ebene \PValue{chapter} existiert, wird auch für diese Ebene + \Macro{bfseries} verwendet. Bei allen anderen Ebenen wird das Argument + unverändert ausgegeben.% + }% + \entry{\OptionVName{entrynumberformat}{Befehl}}{% + Über diese Eigenschaft kann die Formatierung der mit + \DescRef{\LabelBase.cmd.numberline} gesetzten Eintragsnummer verändert + werden. Der dabei als Wert angegebene \PName{Befehl} hat genau ein + Argument zu erwarten. Font-Änderungen erfolgen ausgehend von der + Eigenschaft \Option{entryformat}. + + Initialisiert wird die Eigenschaft mit Ausgabe des übergebenen + Arguments. Die Eintragsnummer wird also unverändert ausgegeben. + + Ist %\textnote{Achtung!} + für ein Verzeichnis mit \DescRef{\LabelBase.cmd.setuptoc} die Eigenschaft + \Option{numberline} gesetzt (siehe \autoref{sec:tocbasic.toc}, + \DescPageRef{\LabelBase.cmd.setuptoc}), wie dies bei den + \KOMAScript-Klassen und Verwendung deren Option + \OptionValueRef{maincls}{toc}{numberline}% + \IndexOption{toc~=\textKValue{numberline}} der Fall ist, führt dies auch + dazu, dass bei nicht nummerierten Einträgen \PName{Befehl} dennoch + ausgeführt wird.% + }% + \entry{\OptionVName{indent}{Länge}}{% + Horizontaler Abstand des Eintrags vom linken Rand (siehe + \autoref{fig:tocbasic.dottedtocline} und \autoref{fig:tocbasic.tocline}). + + Beim Stil \PValue{tocline} wird für alle Eintragsebenen, deren Name mit + »\texttt{sub}« beginnt, eine Initialisierung mit + \PValue{indent}+\PValue{numwidth} der gleichnamigen Eintragsebene ohne + diesen Präfix vorgenommen, falls eine solche Ebene mit entsprechenden + Eigenschaften existiert. Bei den Stilen \PValue{dottedtocline}, + \PValue{undottedtocline} und \PValue{tocline} findet für die + Eintragsebenen \PValue{part} bis \PValue{subparagraph} sowie + \PValue{figure} und \PValue{table} eine Initialisierung mit Werten + entsprechend der Standardklassen statt. Alle anderen Ebenen erhalten keine + Initialisierung. Für sie ist eine explizite Angabe daher bei der ersten + Verwendung zwingend.% + }% + \entry{\OptionVName{level}{Integer}}{% + Nummerischer Wert der \PName{Eintragsebene}. Tatsächlich angezeigt werden + nur Einträge, deren nummerische Ebene nicht größer als Zähler + \DescRef{\LabelBase.counter.tocdepth}% + %\important{\DescRef{\LabelBase.counter.tocdepth}} + \IndexCounter{tocdepth} + ist. + + Diese Eigenschaft ist für alle Stile zwingend und wird bei der + Definition eines Stils automatisch definiert. + + Beim Stil \PValue{tocline} findet für alle Eintragsebenen, deren Name + mit »\texttt{sub}« beginnt, eine Initialisierung entsprechend dem + um eins erhöhten Wert einer gleichnamigen Eintragsebene ohne + diesen Präfix statt, falls eine solche Ebene existiert. Bei den Stilen + \PValue{dottedtocline}, \PValue{largetocline}, \PValue{tocline} und + \PValue{undottedtocline} findet für die \PName{Eintragsebene} + \PValue{part}, \PValue{chapter}, \PValue{section}, \PValue{subsection}, + \PValue{subsubsection}, \PValue{paragraph}, \PValue{subparagraph}, + \PValue{figure} und \PValue{table} automatisch eine Initialisierung + aufgrund des Namens statt. Für andere Ebenen findet eine Initialisierung + mit dem Wert der Gliederungsebene statt, falls kompatibel zu den + \KOMAScript-Klassen \Macro{\PName{Eintragsebene}numdepth} definiert + ist.% + }% + \entry{\OptionVName{linefill}{Code}}{% + Beim Stil \PValue{tocline} kann zwischen dem Ende des Eintragstextes und + der Seitenzahl die Art der Füllung verändert werden. Die Eigenschaft + \PName{linefill} erhält als Wert direkt den gewünschten \PName{Code}. + Für \PName{Eintragsebene} \PValue{part} und \PValue{chapter} wird die + Eigenschaft mit \Macro{hfill} initialisiert. Dadurch rückt die Seitenzahl + an den rechten Rand. Ist bisher keine \PName{Eintragsebene} + \PValue{chapter} definiert, so gilt dies auch für \PValue{section}. Alle + anderen Ebenen werden mit \DescRef{\LabelBase.cmd.TOCLineLeaderFill} (siehe + \DescPageRef{\LabelBase.cmd.TOCLineLeaderFill}) initialisiert. + + Wird \PName{Code} angegeben, der nicht automatisch zu einer Füllung des + Abstandes führt, sollte übrigens auch die Eigenschaft + \PValue{raggedpagenumber} gesetzt werden, damit es nicht zu + »\texttt{underfull \Macro{hbox}}«-Meldungen kommt.% + }% + \entry{\OptionVName{numsep}{Länge}}{% + Der Stil \PValue{tocline} versucht sicherzustellen, dass zwischen der + Nummer und dem Text eines Eintrags mindestens ein Abstand von + \PName{Länge} eingehalten wird. Bei aktiviertem \PValue{dynnumwidth} kann + die für die Nummer reservierte Breite \PValue{numwidth} entsprechend + korrigiert werden. Bei nicht aktiviertem \PValue{dynnumwidth} wird + hingegen lediglich eine Warnung ausgegeben, wenn diese Bedingung nicht + eingehalten wird. + + Die Eigenschaft wird mit einem Wert von 0,4\Unit{em} initialisiert.% + }% + \entry{\OptionVName{numwidth}{Länge}}{% + Für die Nummer eines Eintrags reservierte Breite (siehe + \autoref{fig:tocbasic.dottedtocline} bis + \autoref{fig:tocbasic.undottedtocline}). Dieser Wert wird bei den + Stilen \PValue{dottedtocline}, \PValue{tocline} und + \PValue{undottedtocline} ab der zweiten Zeile eines Eintrags zum linken + Einzug hinzugerechnet. + + Beim Stil \PValue{tocline} wird für alle Eintragsebenen, deren Name mit + »\texttt{sub}« beginnt, eine Initialisierung mit dem Wert der + gleichnamigen Eintragsebene ohne diesen Präfix zuzüglich 0,9\Unit{em} + vorgenommen, falls eine solche Ebene mit entsprechender + Eigenschaften existiert. Bei den Stilen \PValue{dottedtocline}, + \PValue{undottedtocline} und \PValue{tocline} findet für die + Eintragsebenen \PValue{part} bis \PValue{subparagraph} sowie + \PValue{figure} und \PValue{table} eine Initialisierung mit Werten + entsprechend der Standardklassen statt. Alle anderen Ebenen erhalten keine + Initialisierung. Für sie ist eine explizite Angabe daher bei der + ersten Verwendung zwingend.% + }% + \entry{\OptionVName{onstarthigherlevel}{Code}}{% + Der Stil \PValue{tocline} kann zu Beginn eines Eintrags eine Aktion in + Abhängigkeit davon ausführen, ob der zuletzt gesetzte Eintrag einen + höheren, denselben oder einen niedrigeren \PName{level}-Wert + hatte. Im Falle, dass der aktuelle Eintrag einen größeren + \PName{level}-Wert besitzt, in der Hierarchie der Einträge also tiefer + steht, wird der über diese Eigenschaft angegebene \PName{Code} ausgeführt. + + Die Erkennung funktioniert übrigens nur, solange sich \Macro{lastpenalty} + seit dem letzten Eintrag nicht geändert hat. + + Initialisiert wird die Eigenschaft mit + \DescRef{\LabelBase.cmd.LastTOCLevelWasLower} (siehe + \DescPageRef{\LabelBase.cmd.LastTOCLevelWasLower}).% + }% + \entry{\OptionVName{onstartlowerlevel}{Code}}{% + Der Stil \PValue{tocline} kann zu Beginn eines Eintrags eine Aktion in + Abhängigkeit davon ausführen, ob der zuletzt gesetzte Eintrag einen + höheren, denselben oder einen niedrigeren \PName{level}-Wert hatte. Im + Falle, dass der aktuelle Eintrag einen kleineren \PName{level}-Wert + besitzt, in der Hierarchie der Einträge also höher steht, wird der über + diese Eigenschaft angegebene \PName{Code} ausgeführt. + + Die Erkennung funktioniert übrigens nur, solange sich \Macro{lastpenalty} + seit dem letzten Eintrag nicht geändert hat. + + Initialisiert wird die Eigenschaft mit + \DescRef{\LabelBase.cmd.LastTOCLevelWasHigher} (siehe + \DescPageRef{\LabelBase.cmd.LastTOCLevelWasHigher}), was normalerweise + dazu führt, dass ein Umbruch vor dem Eintrag begünstigt wird.% + }% + \entry{\OptionVName{onstartsamelevel}{Code}}{% + Der Stil \PValue{tocline} kann zu Beginn eines Eintrags eine Aktion in + Abhängigkeit davon ausführen, ob der zuletzt gesetzte Eintrag einen + höheren, denselben oder einen niedrigeren \PName{level}-Wert hatte. Im + Falle, dass der aktuelle Eintrag denselben \PName{level}-Wert besitzt, in + der Hierarchie der Einträge also gleich gestellt ist, wird der über diese + Eigenschaft angegebene \PName{Code} ausgeführt. + + Die Erkennung funktioniert übrigens nur, solange sich \Macro{lastpenalty} + seit dem letzten Eintrag nicht geändert hat. + + Initialisiert wird die Eigenschaft mit + \DescRef{\LabelBase.cmd.LastTOCLevelWasSame} (siehe + \DescPageRef{\LabelBase.cmd.LastTOCLevelWasSame}), was normalerweise dazu + führt, dass ein Umbruch vor dem Eintrag begünstigt wird.% + }% + \entry{\OptionVName{pagenumberbox}{Befehl}}{% + Normalerweise wird die zu einem Eintrag gehörende Seitenzahl rechtsbündig + in eine Box der Breite \Macro{@pnumwidth} gesetzt. Beim Stil + \PValue{tocline} kann der Befehl, der dazu verwendet wird, über diese + Eigenschaft konfiguriert werden. Der dabei anzugebende \PName{Befehl} hat + genau ein Argument zu erwarten. + + Initialisiert wird die Eigenschaft mit der bereits erwähnten Box.% + }% + \entry{\OptionVName{pagenumberformat}{Befehl}}{% + Über diese Eigenschaft kann die Formatierung der Seitenzahl des Eintrags + verändert werden. Der dabei als Wert angegebene \PName{Befehl} hat genau + ein Argument zu erwarten. Font-Änderungen über \Option{entryformat} + erfolgen ausgehend von \Option{entryformat}, gefolgt von + \Macro{normalfont}\Macro{normalsize}. + + Initialisiert wird die Eigenschaft für die \PName{Eintragsebene} + \PValue{part} mit der Ausgabe des übergebenen Arguments in + \Macro{large}\Macro{bfseries}. Für alle anderen Ebenen erfolgt die Ausgabe + in \Macro{normalfont}\Macro{normalcolor}.% + }% + \entry{\OptionVName{raggedentrytext}{Schalter}}{% + \ChangedAt{v3.21}{\Package{tocbasic}}% + \PName{Schalter} ist einer der Werte für einfache Schalter aus + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. + Ist der Schalter beim Stil \PValue{tocline} aktiviert, so wird der Text + des Eintrags nicht im Blocksatz, sondern im Flattersatz gesetzt. Dabei + werden nur noch Wörter getrennt, die länger als eine Zeile sind. + + In der Voreinstellung ist dieser Schalter nicht gesetzt.% + }% + \entry{\OptionVName{raggedpagenumber}{Schalter}}{% + \PName{Schalter} ist einer der Werte für einfache Schalter aus + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}. + Ist der Schalter beim Stil \PValue{tocline} aktiviert, so wird die + Seitenzahl nicht zwingend rechtsbündig gesetzt. + + Je nach Wert der Eigenschaft \PValue{linefill} kann sich das + Setzen dieses Schalters nur im Erscheinen oder Verschwinden einer Warnung + oder auch konkret in der Formatierung der Einträge auswirken. Es ist also + wichtig, diese beiden Eigenschaften zueinander passend zu setzen. + + In der Voreinstellung ist dieser Schalter nicht gesetzt und passt damit + zur Initialisierung von \PValue{linefill} sowohl mit \Macro{hfill} als + auch mit \DescRef{\LabelBase.cmd.TOCLineLeaderFill}.% + }% +\end{desclist} + +Während \Macro{DeclareTOCStyleEntry} nur genau eine \PName{Eintragsebene} +definiert, kann über +\Macro{DeclareTOCStyeEntries}\ChangedAt{v3.26}{\Package{tocbasic}} auf einen +Schlag eine ganze \PName{Liste von Eintragsebenen} definiert werden. Die durch +Komma voneinander getrennt angegebenen Eintragsebenen der Liste werden dabei +alle mit demselben \PName{Stil} und den über \PName{Optionenliste} +angegebenen Einstellungen definiert.% +\EndIndexGroup + +\begin{Declaration} + \Macro{DeclareTOCEntryStyle}\Parameter{Stil} + \OParameter{Initialisierungscode} + \Parameter{Befehlscode} + \Macro{DefineTOCEntryOption}\Parameter{Option} + \OParameter{Säumniswert} + \Parameter{Code} + \Macro{DefineTOCEntryBooleanOption}\Parameter{Option} + \OParameter{Säumniswert} + \Parameter{Präfix} + \Parameter{Postfix} + \Parameter{Erklärung} + %\OParameter{Initialisierungscode} + \Macro{DefineTOCEntryCommandOption}\Parameter{Option} + \OParameter{Säumniswert} + \Parameter{Präfix} + \Parameter{Postfix} + \Parameter{Erklärung} + %\OParameter{Initialisierungscode} + \Macro{DefineTOCEntryIfOption}\Parameter{Option} + \OParameter{Säumniswert} + \Parameter{Präfix}% + \Parameter{Postfix} + \Parameter{Erklärung} + % \OParameter{Initialisierungscode} + \Macro{DefineTOCEntryLengthOption}\Parameter{Option} + \OParameter{Säumniswert} + \Parameter{Präfix} + \Parameter{Postfix} + \Parameter{Erklärung} + % \OParameter{Initialisierungscode} + \Macro{DefineTOCEntryNumberOption}\Parameter{Option} + \OParameter{Säumniswert} + \Parameter{Präfix} + \Parameter{Postfix} + \Parameter{Erklärung} + % \OParameter{Initialisierungscode} +\end{Declaration} +\Macro{DeclareTOCEntryStyle}\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} ist +eine der komplexesten Anweisungen in \KOMAScript. Sie richtet sich daher +ausdrücklich an \LaTeX-Entwickler und nicht an \LaTeX-Anwender. Mit ihrer +Hilfe ist es möglich, einen neuen \PName{Stil} für Verzeichniseinträge zu +definieren. Üblicherweise werden Verzeichniseinträge mit +\Macro{addcontentsline}\IndexCmd{addcontentsline} oder bei Verwendung von +\Package{tocbasic} vorzugsweise mit +\DescRef{\LabelBase.cmd.addxcontentsline}\IndexCmd{addxcontentsline} (siehe +\autoref{sec:tocbasic.basics}, \DescPageRef{\LabelBase.cmd.addxcontentsline}) +erzeugt. Dabei schreibt \LaTeX{} eine zugehörige Anweisung +\Macro{contentsline}\IndexCmd{contentsline} in die jeweilige Hilfsdatei. Bei +Einlesen dieser Hilfsdatei führt \LaTeX{} dann für jedes \Macro{contentsline} +eine Anweisung \Macro{l@\PName{Eintragsebene}} aus. + +Wird später einer \PName{Eintragsebene} über +\DescRef{\LabelBase.cmd.DeclareTOCStyleEntry} ein \PName{Stil} zugewiesen, so +wird zunächst \PName{Initialisierungscode} ausgeführt falls angegeben und dann +\PName{Befehlscode} für die Definition von \Macro{l@\PName{Eintragsebene}} +verwendet. \PName{Befehlscode} ist also letztlich der Code, der bei +\Macro{l@\PName{Eintragsebene}} ausgeführt wird. Dabei ist \texttt{\#1} der +Name der Eintragsebene, während \texttt{\#\#1} und \texttt{\#\#2} Platzhalter +für die beiden Argumente von \Macro{l@\PName{Eintragsebene}} sind. + +Der \PName{Initialisierungscode} dient einerseits dazu, die Einstellungen +eines Stils zu initialisieren. Entwickler\textnote{Empfehlung!} sollten darauf +achten, dass wirklich alle Einstellungen hier bereits einen Wert erhalten. Nur +dann funktioniert \DescRef{\LabelBase.cmd.DeclareTOCStyleEntry} auch ohne +Angabe einer \PName{Optionenliste} fehlerfrei. Darüber hinaus hat der +\PName{Initialisierungscode} auch alle Optionen, die der jeweilige Stil +versteht, zu definieren. Zwingend vordefiniert wird lediglich +\Option{level}. Der eingestellte Wert für \Option{level} kann in +\PName{Befehlscode} mit \Macro{@nameuse}\PParameter{\#1tocdepth}% +\important{\Macro{\PName{Eintragsebene}tocdepth}} abgefragt werden, um ihn +beispielsweise mit dem Wert des Zählers +\DescRef{\LabelBase.counter.tocdepth}\IndexCounter{tocdepth} zu vergleichen. + +Zur Definition neuer Optionen für die Eigenschaften einer +Eintragsebene existieren nur innerhalb von \PName{Initialisierungscode} die +Anweisungen \iffree{\Macro{DefineTOCEntryBooleanOption}, +\Macro{DefineTOCEntryCommandOption}, \Macro{DefineTOCEntryIfOption}, +\Macro{DefineTOCEntryLengthOption} und +\Macro{DefineTOCEntryNumberOption}}{\Macro{DefineTOCEntry\dots Option}}. +Diese Anweisungen definieren jeweils eine \PName{Option}, die bei ihrem +Aufruf eine Anweisung +\Macro{\PName{Präfix}\PName{Eintragsebene}\PName{Postfix}} mit dem übergebenen +Wert oder bei Fehlen einer Wertzuweisung mit dem \PName{Säumniswert} +definieren. Eine Besonderheit stellt \Macro{DefineTOCEntryIfOption} dar. Diese +definiert \Macro{\PName{Präfix}\PName{Eintragsebene}\PName{Postfix}} immer als +Anweisung mit zwei Argumenten. Ist der an die Option übergebene Wert einer der +Aktivierungswerte aus \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch}, so expandiert die Anweisung zum ersten +Argument. Ist der an die Option übergebene Wert hingegen ein +Deaktivierungswert, so expandiert die Anweisung zum zweiten Argument. + +Die \PName{Erklärung} sollte ein möglichst kurzer Text sein, der den Sinn der +Option mit wenigen Schlagworten beschreibt. Er wird von \Package{tocbasic} bei +Fehlermeldungen, Warnungen und Informationen auf dem Terminal und in der +\File{log}-Datei ausgegeben. + +Der einfachste Stil von \Package{tocbasic}, \PValue{gobble}, wurde mit +\begin{lstcode} + \DeclareTOCEntryStyle{gobble}{}% +\end{lstcode} +definiert. Würde man nun mit +\begin{lstcode} + \DeclareTOCStyleEntry[level=1]{gobble}{dummy} +\end{lstcode} +eine Eintragsebene \PValue{dummy} in diesem Stil definieren, so würde das +unter anderem +\begin{lstcode} + \def\dummytocdepth{1} + \def\l@dummy#1#2{} +\end{lstcode} +entsprechen. + +Innerhalb von Stil \PValue{tocline} wird beispielsweise +\begin{lstcode} + \DefineTOCEntryCommandOption{linefill}% + [\TOCLineLeaderFill]{scr@tso@}{@linefill}% + {filling between text and page number}% +\end{lstcode} +verwendet, um Option \Option{linefill} zu definieren. Durch die Angabe von +\DescRef{\LabelBase.cmd.TOCLineLeaderFill} als \PName{Säumniswert} würde ein +Aufruf wie +\begin{lstcode} + \DeclareTOCStyleEntry[linefill]{tocline}{part} +\end{lstcode} +unter anderem die Definition +\begin{lstcode} + \def\scr@tso@part@linefill{\TOCLineLeaderFill} +\end{lstcode} +vornehmen. + +Wer\textnote{Tipp!} sich selbst einen Stil definieren möchte, dem sei +empfohlen, zunächst die Definition des Stils \PValue{dottedtocline} zu +studieren. Nachdem dessen Definition verstanden wurde, gibt dann die deutlich +komplexere Definition von Stil \PValue{tocline} viele Hinweise darauf, wie die +Anweisungen sinnvoll zu verwenden sind. + +In\textnote{Tipp!} vielen Fällen wird es jedoch auch ausreichen, einen der +vorhandenen Stile mit \DescRef{\LabelBase.cmd.CloneTOCEntryStyle} zu klonen +und dann dessen Initialisierungscode mit Anweisung +\DescRef{\LabelBase.cmd.TOCEntryStyleInitCode} oder +\DescRef{\LabelBase.cmd.TOCEntryStyleStartInitCode} abzuändern. + +\Macro{DefineTOCEntryOption} dient eher der Definition der übrigen +Anweisungen und sollte in der Regel nicht direkt verwendet +werden. Normalerweise besteht dafür auch keine Notwendigkeit. Sie sei hier +nur der Vollständigkeit halber erwähnt.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{CloneTOCEntryStyle}\Parameter{Stil}\Parameter{neuer Stil}% +\end{Declaration} +Mit\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} dieser Anweisung kann ein +existierender \PName{Stil} geklont werden. Dabei wird ein \PName{neuer Stil} +mit denselben Eigenschaften und Voreinstellungen wie der existierende +\PName{Stil} deklariert. Das Paket selbst verwendet +\Macro{CloneTOCEntryStyle}, um den Stil \PValue{default} als Klon von +\PValue{dottedtocline} zu deklarieren. Die \KOMAScript-Klassen verwenden die +Anweisung um die Stile \PValue{part}, \PValue{section} und \PValue{chapter} +oder \PValue{subsection} als Klon von \PValue{tocline} zu deklarieren und dann +mit \DescRef{\LabelBase.cmd.TOCEntryStyleInitCode} und +\DescRef{\LabelBase.cmd.TOCEntryStyleStartInitCode} abzuändern. Der Stil +\PValue{default} wird von \Class{scrbook} und \Class{scrreprt} neu als Klon +von \PValue{section} und von \Class{scrartcl} als Klon von \PValue{subsection} +deklariert.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{TOCEntryStyleInitCode}\Parameter{Stil}% + \Parameter{Initialisierungscode} + \Macro{TOCEntryStyleStartInitCode}\Parameter{Stil}% + \Parameter{Initialisierungscode} +\end{Declaration} +Jeder\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} Verzeichniseintragsstil +verfügt über einen Initialisierungscode. Dieser wird immer dann aufgerufen, +wenn einer Verzeichnisebene der entsprechende \PName{Stil} mit +\DescRef{\LabelBase.cmd.DeclareTOCEntryStyle}\IndexCmd{DeclareTOCEntryStyle} +zugewiesen wird. Dieser\textnote{Achtung!} \PName{Initialisierungscode} sollte +keine globalen Seiteneffekte aufweisen, da er auch für lokale +Initialisierungen innerhalb anderer Anweisungen wie +\DescRef{\LabelBase.cmd.DeclareNewTOC}\IndexCmd{DeclareNewTOC} verwendet +wird. Der \PName{Initialisierungscode} dient einerseits dazu, Eigenschaften +für den jeweiligen \PName{Stil} zu definieren. Er setzt aber auch die +Standardeinstellungen für diese Eigenschaften. + +Mit Hilfe der Anweisungen \Macro{TOCEntryStyleStartInitCode} und +\Macro{TOCEntryStyleInitCode} kann der für einen \PName{Stil} bereits +definierte Initialisierungscode um weiteren \PName{Initialisierungscode} +erweitert werden. Dabei fügt \Macro{TOCEntryStyleStartInitCode} den neuen +\PName{Intialisierungscode} vorn an, während \Macro{TOCEntryStyleInitCode} den +\PName{Initialisierungscode} hinten an den vorhandenen Code anfügt. Dies wird +beispielsweise von den \KOMAScript-Klassen verwendet, um für den von +\PValue{tocline} geklonten Stil \PValue{part} Füllung, Schrift und vertikalen +Abstand passend zu initialisieren. Die Klassen \Class{scrbook} und +\Class{scrreprt} verwenden beispielsweise +\begin{lstcode} + \CloneTOCEntryStyle{tocline}{section} + \TOCEntryStyleStartInitCode{section}{% + \expandafter\providecommand% + \csname scr@tso@#1@linefill\endcsname + {\TOCLineLeaderFill\relax}% + } +\end{lstcode} +um den Stil \PValue{section} als abgewandelten Klon von \PValue{tocline} zu +definieren.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{LastTOCLevelWasHigher} + \Macro{LastTOCLevelWasSame} + \Macro{LastTOCLevelWasLower} +\end{Declaration} +Bei\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} Einträgen im Stil +\PValue{tocline} wird am Anfang abhängig vom Wert von +\Macro{lastpenalty}\IndexCmd{lastpenalty} eine dieser drei Anweisungen +ausgeführt. Dabei fügen \Macro{LastTOCLevelWasHigher} und +\Macro{LastTOCLevelWasSame} im vertikalen Modus +\Macro{addpenalty}\PParameter{\Macro{@lowpenalty}} ein und ermöglichen so +einen Umbruch vor Einträgen gleicher oder übergeordneter +Ebene. \Macro{LastTOCLevelWasLower} ist hingegen bisher leer definiert, so +dass zwischen einem Eintrag und seinem ersten Untereintrag normalerweise ein +Umbruch untersagt ist. + +Anwender sollten diese Anweisungen nicht umdefinieren. Stattdessen können und +sollten Änderungen bei Zuweisung des Stils an eine Eintragsebene gezielt über +die Eigenschaften \PValue{onstartlowerlevel}, \PValue{onstartsamelevel} und +\PValue{onstarthigherlevel} vorgenommen werden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{TOCLineLeaderFill}\OParameter{Füllzeichen} +\end{Declaration} +Die\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} Anweisung ist dazu gedacht +als Wert für die Eigenschaft \Option{linefill} des Verzeichniseintragsstils +\PName{tocline} verwendet zu werden. Sie erzeugt dann eine Verbindung zwischen +dem Ende des Textes eines Eintrags und der zugehörigen Seitenzahl. Das +\PName{Füllzeichen}, das dazu in regelmäßigem Abstand wiederholt wird, kann +als optionales Argument angegeben werden. Voreinstellung ist ein +Punkt.\textnote{Voreinstellung} + +Wie der Name schon vermuten lässt, werden die Füllzeichen mit Hilfe von +\Macro{leaders} gesetzt. Als Abstand wird wie bei der \LaTeX-Kern-Anweisung +\Macro{@dottedtocline} vor und nach dem Füllzeichen +\Macro{mkern}\Macro{@dotsep}\Unit{\texttt{mu}} verwendet.% +\EndIndexGroup +% +\EndIndexGroup + + +\section{Interne Anweisungen für Klassen- und Paketautoren} +\seclabel{internals} + +Das Paket \Package{tocbasic} bietet einige interne Anweisungen, deren +Benutzung durch Klassen- und Paketautoren freigegeben ist. Diese Anweisungen +beginnen alle mit \Macro{tocbasic@}. Aber\textnote{Achtung!} auch Klassen- und +Paketautoren sollten diese Anweisungen nur verwenden und nicht etwa +umdefinieren! Ihre interne Funktion kann jederzeit geändert oder erweitert +werden, so dass jede Umdefinierung der Anweisungen die Funktion von +\Package{tocbasic} erheblich beschädigen könnte! + + +\begin{Declaration} + \Macro{tocbasic@extend@babel}\Parameter{Dateierweiterung} +\end{Declaration} +Das Paket \Package{babel}\IndexPackage{babel} (siehe \cite{package:babel}) +bzw. ein \LaTeX-Kern, der um die Sprachverwaltung von \Package{babel} +erweitert wurde, schreibt bei jeder Sprachumschaltung am Anfang oder innerhalb +eines Dokuments in die Dateien mit den Dateierweiterungen \File{toc}, +\File{lof} und \File{lot} Anweisungen, um diese Sprachumschaltung in diesen +Dateien mit zu führen. \Package{tocbasic} erweitert diesen Mechanismus so, +dass mit Hilfe von \Macro{tocbasic@extend@babel} auch andere +\PName{Dateierweiterungen} davon profitieren. Das Argument +\PName{Dateierweiterung} sollte dabei vollständig expandiert sein! +Anderenfalls besteht die Gefahr, dass etwa die Bedeutung eines Makros zum +Zeitpunkt der tatsächlichen Auswertung bereits geändert wurde. + +In der Voreinstellung wird diese Anweisung normalerweise für alle +\PName{Dateierweiterungen}, die mit \DescRef{\LabelBase.cmd.addtotoclist} zur +Liste der bekannten Dateierweiterungen hinzugefügt werden, aufgerufen. Über +die Eigenschaft \PValue{nobabel}\important{\PValue{nobabel}} (siehe +\DescRef{\LabelBase.cmd.setuptoc}, \autoref{sec:tocbasic.toc}, +\DescPageRef{\LabelBase.cmd.setuptoc}) kann dies unterdrückt werden. Für die +Dateinamenerweiterungen \File{toc}, \File{lof} und \File{lot} unterdrückt +\Package{tocbasic} dies bereits selbst, % +\iftrue% Umbruchvarianten +da \Package{babel} sie von sich aus vornimmt.% +\else% +damit die Umschaltung nicht mehrfach in die zugehörigen Dateien +eingetragen wird.% +\fi + +Normalerweise gibt es keinen Grund, diese Anweisung selbst aufzurufen. Es sind +allerdings Verzeichnisse denkbar, die nicht unter der Kontrolle von +\Package{tocbasic} stehen, also nicht in der Liste der bekannten +Dateierweiterungen geführt werden, aber trotzdem die Spracherweiterung für +\Package{babel} nutzen sollen. Für derartige Verzeichnisse wäre die Anweisung +explizit aufzurufen. Bitte\textnote{Achtung!} achten Sie jedoch darauf, dass +dies für jede Dateierweiterung nur einmal geschieht!% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasic@starttoc}\Parameter{Dateierweiterung} +\end{Declaration} +Diese Anweisung ist der eigentliche Ersatz der Anweisung +\Macro{@starttoc}\IndexCmd{@starttoc}\important{\Macro{@starttoc}} aus dem +\LaTeX-Kern. Es ist die Anweisung, die sich hinter +\DescRef{\LabelBase.cmd.listoftoc*} (siehe \autoref{sec:tocbasic.toc}, +\DescPageRef{\LabelBase.cmd.listoftoc*}) verbirgt. Klassen- oder Paketautoren, +die Vorteile von \Package{tocbasic} nutzen wollen, sollten zumindest diese +Anweisung, besser jedoch \DescRef{\LabelBase.cmd.listoftoc} verwenden. Die +Anweisung baut selbst auf \Macro{@starttoc} auf, setzt allerdings zuvor +\Length{parskip}\IndexLength{parskip}\important[i]{\Length{parskip}, + \Length{parindent}, \Length{parfillskip}} und +\Length{parindent}\IndexLength{parindent} auf 0 und +\Length{parfillskip}\IndexLength{parfillskip} auf 0 bis unendlich. Außerdem +wird \Macro{@currext}\important{\Macro{@currext}}\IndexCmd{@currext} auf die +aktuelle Dateierweiterung gesetzt, damit diese in den nachfolgend ausgeführten +Haken\Index{Haken} ausgewertet werden kann. Die Erklärungen der Haken finden +Sie im Anschluss. + +Da\textnote{Achtung!} \LaTeX{} bei der Ausgabe eines Verzeichnisses auch +gleich eine neue Verzeichnisdatei zum Schreiben öffnet, kann der Aufruf dieser +Anweisung zu einer Fehlermeldung der Art +\begin{lstoutput} + ! No room for a new \write . + \ch@ck ...\else \errmessage {No room for a new #3} + \fi +\end{lstoutput} +führen, wenn keine Schreibdateien mehr zur Verfügung stehen. Abhilfe kann in +diesem Fall das Laden des in \autoref{cha:scrwfile} beschriebenen Pakets +\Package{scrwfile}\important{\Package{scrwfile}}\IndexPackage{scrwfile} +oder die Verwendung von Lua\LaTeX{} bieten.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasic@@before@hook} + \Macro{tocbasic@@after@hook} +\end{Declaration} +Der Haken\Index{Haken} \Macro{tocbasic@@before@hook} wird unmittelbar vor dem +Einlesen der Verzeichnisdatei, noch vor den mit +\DescRef{\LabelBase.cmd.BeforeStartingTOC} definierten Anweisungen +ausgeführt. Es ist erlaubt, diesen Haken mit Hilfe von +\Macro{g@addto@macro}\IndexCmd{g@addto@macro} zu erweitern. + +Ebenso wird \Macro{tocbasic@@after@hook} unmittelbar nach der +Verzeichnisdatei, aber noch vor den mit +\DescRef{\LabelBase.cmd.AfterStartingTOC} definierten Anweisungen +ausgeführt. Es ist erlaubt, diesen Haken mit Hilfe von +\Macro{g@addto@macro}\IndexCmd{g@addto@macro} zu erweitern. + +\KOMAScript{} nutzt diese Haken, um Verzeichnisse mit dynamischer Anpassung an +die Breite der Gliederungsnummern zu ermöglichen. Ihre Verwendung ist Klassen +und Paketen vorbehalten. Anwender\textnote{Achtung!} sollten sich auf +\DescRef{\LabelBase.cmd.BeforeStartingTOC} und +\DescRef{\LabelBase.cmd.AfterStartingTOC} beschränken. Paketautoren sollten +ebenfalls vorzugsweise diese beiden Anwenderanweisungen verwenden! Ausgaben +innerhalb der beiden Haken sind nicht gestattet! + +Wird keine\textnote{Achtung!} der Anweisungen +\DescRef{\LabelBase.cmd.listofeachtoc}, \DescRef{\LabelBase.cmd.listoftoc} und +\DescRef{\LabelBase.cmd.listoftoc*} für die Ausgabe der Verzeichnisse +verwendet, sollten die Anweisungen für die Haken\Index{Haken} trotzdem +aufgerufen werden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tb@\PName{Dateierweiterung}@before@hook} + \Macro{tb@\PName{Dateierweiterung}@after@hook} +\end{Declaration} +Diese Anweisungen werden direkt nach +\DescRef{\LabelBase.cmd.tocbasic@@before@hook} bzw. vor +\DescRef{\LabelBase.cmd.tocbasic@@after@hook} für das jeweilige Verzeichnis +mit der entsprechenden \PName{Dateierweiterung} +ausgeführt. Sie\textnote{Achtung!} dürfen keinesfalls von Klassen- und +Paketautoren verändert werden. Werden für die Ausgabe der Verzeichnisse die +Anweisungen \DescRef{\LabelBase.cmd.listoftoc}, +\DescRef{\LabelBase.cmd.listoftoc*} und \DescRef{\LabelBase.cmd.listofeachtoc} +nicht verwendet, sollten die beiden Anweisungen für die Haken\Index{Haken} +trotzdem aufgerufen werden, soweit sie definiert sind. Die Anweisungen können +auch undefiniert sein. Für einen entsprechenden Test siehe +\DescRef{scrbase.cmd.scr@ifundefinedorrelax}\IndexCmd{scr@ifundefinedorrelax} +in \autoref{sec:scrbase.if}, +\DescPageRef{scrbase.cmd.scr@ifundefinedorrelax}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasic@listhead}\Parameter{Titel} +\end{Declaration} +Diese Anweisung wird von \DescRef{\LabelBase.cmd.listoftoc} und +\DescRef{\LabelBase.cmd.listofeachtoc} verwendet, um die Anweisung zum Setzen +der Überschrift eines Verzeichnisses aufzurufen. Das kann entweder die +vordefinierte Anweisung des Pakets \Package{tocbasic} oder eine individuelle +Anweisung sein. Wenn Sie Ihre eigene Anweisung für die Überschrift definieren, +können Sie ebenfalls \Macro{tocbasic@listhead} verwenden. In diesem Fall +sollte vor dem Aufruf von \Macro{tocbasic@listhead} die Anweisung +\Macro{@currext}\important{\Macro{@currext}}\IndexCmd{@currext} auf die +Dateinamenerweiterung, die zu diesem Verzeichnis gehört, gesetzt werden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasic@listhead@\PName{Dateierweiterung}}\Parameter{Titel} +\end{Declaration} +Ist diese individuelle Anweisung für das Setzen einer Verzeichnisüberschrift +definiert, so verwendet \DescRef{\LabelBase.cmd.tocbasic@listhead} +sie. Anderenfalls definiert \DescRef{\LabelBase.cmd.tocbasic@listhead} diese +vor der Verwendung.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasic@addxcontentsline}\Parameter{Dateierweiterung} + \Parameter{Ebene} + \Parameter{Gliederungsnummer} + \Parameter{Eintrag} + \Macro{nonumberline} +\end{Declaration} +Anweisung\ChangedAt{v3.12}{\Package{tocbasic}} +\Macro{tocbasic@addxcontentsline} nimmt einen \PName{Eintrag} der angegebenen +\PName{Ebene} in das über die \PName{Dateierweiterung} spezifizierte +Verzeichnis vor. Ob der Eintrag nummeriert wird\iffree{ oder + nicht}{}% Umbruchvarianten +, hängt davon ab, ob das Argument \PName{Gliederungsnummer} leer ist oder +nicht. Im Falle eines leeren Argument wird dem \PName{Eintrag} ein +\Macro{nonumberline} ohne Argument vorangestellt. Anderenfalls wird wie +gewohnt \DescRef{\LabelBase.cmd.numberline} mit \PName{Gliederungsnummer} als +Argument verwendet. + +Die Anweisung \Macro{nonumberline} wird innerhalb +\DescRef{\LabelBase.cmd.listoftoc} (siehe \autoref{sec:tocbasic.toc}, +\DescPageRef{\LabelBase.cmd.listoftoc}) entsprechend der Eigenschaft +\PValue{numberline} (siehe \autoref{sec:tocbasic.toc}, +\DescPageRef{\LabelBase.cmd.setuptoc}) umdefiniert. Dadurch wirkt sich das +Setzen oder Löschen dieser Eigenschaft \iffree{bereits beim nächsten + \LaTeX-Lauf}{unmittelbar} % Umbruchvarianten +aus.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{tocbasic@DependOnPenaltyAndTOCLevel}\Parameter{Eintragsebene} + \Macro{tocbasic@SetPenaltyByTOCLevel}\Parameter{Eintragsebene} +\end{Declaration} +Der\ChangedAt[2016/03]{v3.20}{\Package{tocbasic}} Verzeichniseintragsstil +\PValue{tocline} (siehe \autoref{sec:tocbasic.tocstyle}) setzt am Ende jedes +Eintrags über \Macro{tocbasic@SetPenaltyByTOCLevel} \Macro{penalty} so, dass +nach einem Eintrag kein Seitenumbruch erfolgen darf. Der genaue Wert wird +dabei abhängig von der \PName{Eintragsebene} gewählt. + +% \begin{sloppypar} +\begingroup +\emergencystretch=2em +Über \Macro{tocbasic@DependOnPenaltyAndTOCLevel} wird am Anfang eines +Eintrags, abhängig von \Macro{lastpenalty} und der \PName{Eintragsebene} die +über die Eigenschaft \Option{onstartlowerlevel} im internen Makro +\Macro{scr@tso@\PName{Eintragsebene}@LastTOCLevelWasHigher}, über die +\iffree{Eigenschaft}{Ei\-genschaft} +\Option{onstartsamelevel} im zugehörigen, internen +Makro\iffree{ +}{\linebreak}\Macro{scr@tso@\PName{Eintragsebene}@LastTOCLevelWasSame} oder +über die Eigenschaft \Option{onstarthigherlevel} im zugehörigen, internen +Makro \Macro{scr@tso@\PName{Eintragsebene}@LastTOCLevelWasLower} gespeicherte +Aktion ausgeführt. In der Voreinstellung\textnote{Voreinstellung} erlauben die +ersten beiden einen Umbruch, wenn sie im vertikalen Modus ausgeführt +werden.\par +\endgroup +%\end{sloppypar} + +Entwicklern, die eigene Stile kompatibel mit \PValue{tocline} erstellen +wollen, sei empfohlen, dieses Verhalten zu kopieren. Zu diesem Zweck dürfen +sie auf diese eigentlich internen Makros zurückgreifen.% +\EndIndexGroup + + +\section{Ein komplettes Beispiel} +\seclabel{example} + +In diesem Abschnitt finden Sie ein komplettes Beispiel, wie eine eigene +Gleitumgebung einschließlich Verzeichnis und \KOMAScript-Integration mit Hilfe +von \Package{tocbasic} definiert werden kann. In diesem Beispiel werden +interne Anweisungen, also solche mit »\texttt{@}« im Namen +verwendet. Das\textnote{Achtung!} bedeutet, dass die Anweisungen entweder in +einem eigenen Paket, einer Klasse oder zwischen +\Macro{makeatletter}\important[i]{\Macro{makeatletter}\\\Macro{makeatother}}% +\IndexCmd{makeatletter} und \Macro{makeatother}\IndexCmd{makeatother} +verwendet werden müssen. + +Als\textnote{Umgebung} erstes wird eine Umgebung benötigt, die diese neue +Gleitumgebung bereitstellt. Das geht ganz einfach mit: +\begin{lstcode} + \newenvironment{remarkbox}% + {\@float{remarkbox}}% + {\end@float} +\end{lstcode} +Die neue Umgebung heißt also \Environment{remarkbox}. + +Jede\textnote{Platzierung} Gleitumgebung hat eine Standardplatzierung. Diese +setzt sich aus einer oder mehreren der bekannten Platzierungsoptionen +\PValue{b}, \PValue{h}, \PValue{p} und \PValue{t} zusammen: +\begin{lstcode} + \newcommand*{\fps@remarkbox}{tbp} +\end{lstcode} +Die neue Gleitumgebung soll also in der Voreinstellung nur oben, unten oder +auf einer eigenen Seite platziert werden dürfen. + +Gleitumgebungen\textnote{Gleittyp} haben außerdem einen nummerischen Gleittyp +zwischen 1 und 31. Umgebungen, bei denen das gleiche Bit +im Gleittyp gesetzt ist, dürfen sich nicht gegenseitig überholen. Abbildungen +und Tabellen haben normalerweise den Typ~1 und 2. Abbildungen dürfen also +Tabellen überholen und umgekehrt. +\begin{lstcode} + \newcommand*{\ftype@remarkbox}{4} +\end{lstcode} +Die neue Umgebung hat den Typ~4, darf also Tabellen und Abbildungen überholen +und von diesen überholt werden. + +Gleitumgebungen\textnote{Nummer} haben außerdem eine Nummer. +\begin{lstcode} + \newcounter{remarkbox} + \newcommand*{\remarkboxformat}{% + Merksatz~\theremarkbox\csname autodot\endcsname + } + \newcommand*{\fnum@remarkbox}{\remarkboxformat} +\end{lstcode} +Hier wird zunächst ein neuer Zähler definiert, der unabhängig von Kapiteln +oder sonstigen Gliederungszählern ist. Dabei definiert \LaTeX{} auch gleich +\Macro{theremarkbox} mit der Standardausgabe als arabische Zahl. Diese wird +dann in der Definition der formatierten Ausgabe verwendet. Die formatierte +Ausgabe wird wiederum als Gleitumgebungsnummer für die Verwendung in +\DescRef{maincls.cmd.caption} definiert. + +Gleitumgebungen\textnote{Dateierweiterung} haben Verzeichnisse und diese haben +eine Datei mit dem Namen \Macro{jobname} und einer Dateierweiterung. +\begin{lstcode} + \newcommand*{\ext@remarkbox}{lor} +\end{lstcode} +Als Dateierweiterung verwenden wir also »\File{lor}«. + +Die\important{\Package{tocbasic}} Umgebung selbst steht damit. Es fehlt +allerdings das Verzeichnis. Damit wir dabei möglichst wenig selbst machen +müssen, verwenden wir das Paket \Package{tocbasic}. Dieses wird in Dokumenten +mit +\begin{lstcode} + \usepackage{tocbasic} +\end{lstcode} +geladen. Ein Klassen- oder Paketautor würde hingegen +\begin{lstcode} + \RequirePackage{tocbasic} +\end{lstcode} +verwenden. + +Nun\textnote{Dateierweiterung} machen wir die neue Dateierweiterung dem Paket +\Package{tocbasic} bekannt. +\begin{lstcode} + \addtotoclist[float]{lor} +\end{lstcode} +Dabei verwenden wir als Besitzer \PValue{float}, damit sich alle +anschließend aufgerufenen Optionen von \KOMAScript, die sich auf Verzeichnisse +von Gleitumgebungen beziehen, auch auf das neue Verzeichnis beziehen. + +Jetzt\textnote{Verzeichnistitel} definieren wir noch einen Titel für dieses +Verzeichnis: +\begin{lstcode} + \newcommand*{\listoflorname}{Verzeichnis der Merksätze} +\end{lstcode} +Normalerweise würde man in einem Paket übrigens zunächst einen englischen +Titel definieren und dann beispielsweise mit Hilfe des Pakets +\Package{scrbase} Titel für alle weiteren Sprachen, die man unterstützen +will. Siehe dazu \autoref{sec:scrbase.languageSupport}, ab +\autopageref{sec:scrbase.languageSupport}. + +Jetzt\textnote{Verzeichniseintrag}\index{Verzeichnis>Eintrag} müssen wir nur +noch definieren, wie ein einzelner Eintrag in dem Verzeichnis aussehen soll: +\begin{lstcode} + \newcommand*{\l@remarkbox}{\l@figure} +\end{lstcode} +Weil das die einfachste Lösung ist, wurde hier festgelegt, dass Einträge in +das Verzeichnis der Merksätze genau wie Einträge in das Abbildungsverzeichnis +aussehen sollen. Man hätte auch eine explizite Festlegung wie +\begin{lstcode} + \DeclareTOCStyleEntry[level=1,indent=1em,numwidth=1.5em]% + {tocline}{remarkbox} +\end{lstcode} +verwenden können. + +Außerdem\textnote{Kapiteleintrag} wollen Sie, dass sich Kapiteleinträge auf das +Verzeichnis auswirken. +\begin{lstcode} + \setuptoc{lor}{chapteratlist} +\end{lstcode} +Das Setzen dieser Eigenschaft ermöglicht dies bei Verwendung einer +\KOMAScript-Klasse und jeder anderen Klasse, die diese Eigenschaft +unterstützt. Leider gehören die Standardklassen nicht dazu. + +Das\textnote{Verzeichnis} genügt schon. Der Anwender kann nun bereits +wahlweise mit Hilfe der Optionen einer \KOMAScript-Klasse oder +\DescRef{\LabelBase.cmd.setuptoc} verschiedene Formen der Überschrift (ohne +Inhaltsverzeichniseintrag, mit Inhaltsverzeichniseintrag, mit Nummerierung) +wählen und das Verzeichnis mit +\DescRef{\LabelBase.cmd.listoftoc}\PParameter{lor} ausgeben. Mit einem +schlichten +\begin{lstcode} + \newcommand*{\listofremarkboxes}{\listoftoc{lor}} +\end{lstcode} +kann man die Anwendung noch etwas vereinfachen. + +Wie Sie gesehen haben, beziehen sich gerade einmal fünf einzeilige +Anweisungen, von denen nur drei bis vier wirklich notwendig sind, auf das +Verzeichnis selbst. Trotzdem bietet dieses Verzeichnis bereits die +Möglichkeit, es zu nummerieren oder auch nicht nummeriert in das +Inhaltsverzeichnis aufzunehmen. Es kann sogar per Eigenschaft bereits eine +tiefere Gliederungsebene gewählt werden. Kolumnentitel werden für \KOMAScript, +die Standardklassen und alle Klassen, die \Package{tocbasic} explizit +unterstützen, angepasst gesetzt. Unterstützende Klassen beachten das neue +Verzeichnis sogar beim Wechsel zu einem neuen Kapitel. Sprachumschaltungen +durch \Package{babel} werden in dem Verzeichnis ebenfalls berücksichtigt. + +Natürlich\textnote{Verzeichniseigenschaften} kann ein Paketautor weiteres +hinzufügen. So könnte er explizit Optionen anbieten, um die Verwendung von +\DescRef{\LabelBase.cmd.setuptoc} vor dem Anwender zu verbergen. Andererseits +kann er auch auf diese Anleitung zu \Package{tocbasic} verweisen, wenn es +darum geht, die entsprechenden Möglichkeiten zu erklären. Vorteil ist dann, +dass der Anwender automatisch von etwaigen zukünftigen Erweiterungen von +\Package{tocbasic} profitiert. Soll der Anwender aber nicht mit der Tatsache +belastet werden, dass für die Merksätze die Dateierweiterung \File{lor} +verwendet wird, so genügt +\begin{lstcode} + \newcommand*{\setupremarkboxes}{\setuptoc{lor}} +\end{lstcode} +\iffalse% +um eine als Argument an \Macro{setupremarkboxes} übergebene Liste von +Eigenschaften direkt als Liste von % +\else% +um über \Macro{setupremarkboxes} +\fi +Eigenschaften für \File{lor} zu setzen. + + +\section{Alles mit einer Anweisung} +\seclabel{declarenewtoc} + +Das Beispiel aus dem vorherigen Abschnitt hat gezeigt, dass es mit mit +\Package{tocbasic} recht einfach ist, eigene Gleitumgebungen mit eigenen +Verzeichnissen zu definieren. In diesem Abschnitt wird gezeigt, dass es sogar +noch einfacher gehen kann. + +\begin{Declaration} + \Macro{DeclareNewTOC}\OParameter{Optionenliste} + \Parameter{Dateierweiterung} +\end{Declaration}% +Mit\ChangedAt{v3.06}{\Package{tocbasic}} dieser Anweisung wird in einem +einzigen Schritt ein neues Verzeichnis, dessen Überschrift und die Bezeichnung +für die Einträge unter Kontrolle von \Package{tocbasic} definiert. Optional +können dabei gleichzeitig gleitende oder nicht gleitende Umgebungen definiert +werden, innerhalb derer \DescRef{maincls.cmd.caption}% +\important{\DescRef{maincls.cmd.caption}}\IndexCmd{caption} Einträge für +dieses neue Verzeichnis erzeugt. Auch die Erweiterungen +\DescRef{maincls.cmd.captionabove}\important[i]{% + \DescRef{maincls.cmd.captionabove}\\ + \DescRef{maincls.cmd.captionbelow}}, \DescRef{maincls.cmd.captionbelow} und +\DescRef{maincls.env.captionbeside} aus den \KOMAScript-Klassen (siehe +\autoref{sec:maincls.floats}, ab \DescPageRef{maincls.cmd.captionabove}) +können dann verwendet werden. + +\PName{Dateierweiterung} definiert dabei die Dateiendung der Hilfsdatei, die +das Verzeichnis repräsentiert, wie dies in \autoref{sec:tocbasic.basics}, ab +\autopageref{sec:tocbasic.basics} bereits erläutert +wurde. Dieser\textnote{Achtung!} Parameter muss angegeben werden und darf +nicht leer sein! + +\PName{Optionenliste} ist eine durch Komma getrennte Liste, wie dies auch von +\DescRef{maincls.cmd.KOMAoptions} (siehe \autoref{sec:typearea.options}, +\DescPageRef{typearea.cmd.KOMAoptions}) bekannt ist. Diese +Optionen\textnote{Achtung!} können jedoch \emph{nicht} mit +\DescRef{maincls.cmd.KOMAoptions}\IndexCmd{KOMAoptions} gesetzt werden! Eine +Übersicht über die möglichen Optionen bietet +\autoref{tab:tocbasic.DeclareNewTOC-options}\iffalse ab +\autopageref{tab:tocbasic.DeclareNewTOC-options}\fi. + +Wird\ChangedAt[2015/12]{v3.20}{\Package{tocbasic}} Option +\Option{tocentrystyle} nicht gesetzt, so wird bei Bedarf der Stil +\PValue{default} verwendet. Näheres zu diesem Stil ist +\autoref{sec:tocbasic.tocstyle} zu entnehmen. Soll kein Befehl für +Verzeichniseinträge definiert werden, so kann ein leeres Argument, also +wahlweise \OptionValue{tocentrystyle}{}\iffree{}{\unskip} oder +\OptionValue{tocentrystyle}{\PParameter{}} verwendet werden. + +Abhängig\ChangedAt[2016/06]{v3.21}{\Package{tocbasic}} vom Stil der +Verzeichniseinträge können auch alle für diesen Stil gültigen Eigenschaften +gesetzt werden, indem die entsprechenden in +\autoref{tab:tocbasic.tocstyle.attributes} ab +\autopageref{tab:tocbasic.tocstyle.attributes} aufgeführten Namen, mit dem +Präfix \PValue{tocentry} versehen, in der \PName{Optionenliste} angegeben +werden. Nachträgliche Änderungen am Stil sind mit +\DescRef{\LabelBase.cmd.DeclareTOCStyleEntry}% +\IndexCmd{DeclareTOCStyleEntry}% +\important{\DescRef{\LabelBase.cmd.DeclareTOCStyleEntry}} jederzeit +möglich. Siehe dazu \autoref{sec:tocbasic.tocstyle}, +\DescPageRef{\LabelBase.cmd.DeclareTOCStyleEntry}. + +% Umbruchoptimierung: Tabelle verschoben. +\begin{desclist} + \renewcommand*{\abovecaptionskipcorrection}{-\normalbaselineskip}% + \desccaption[{% + Optionen für die Anweisung \Macro{DeclareNewTOC}% + }]{% + Optionen für die Anweisung + \Macro{DeclareNewTOC}\ChangedAt{v3.06}{\Package{tocbasic}}% + \label{tab:tocbasic.DeclareNewTOC-options}% + }{% + Optionen für die Anweisung \Macro{DeclareNewTOC} (\emph{Fortsetzung})% + }% + \entry{\OptionVName{atbegin}{Code}\ChangedAt{v3.09}{\Package{tocbasic}}}{% + Falls eine neue Gleitumgebung oder nicht gleitende Umgebung definiert + wird, so wird \PName{Code} jeweils am Anfang dieser Umgebung ausgeführt.% + }% + \entry{\OptionVName{atend}{Code}\ChangedAt{v3.09}{\Package{tocbasic}}}{% + Falls eine neue Gleitumgebung oder nicht gleitende Umgebung definiert + wird, so wird \PName{Code} jeweils am Ende dieser Umgebung ausgeführt.% + }% + \entry{\OptionVName{counterwithin}{\LaTeX-Zähler}}{% + Falls eine neue Gleitumgebung oder eine nicht gleitende Umgebung definiert + wird, so wird für diese auch ein neuer Zähler + \Counter{\PName{Eintragstyp}} (siehe Option \Option{type}) + angelegt. Dieser Zähler kann in gleicher Weise wie beispielsweise der + Zähler \Counter{figure} bei \Class{book}-Klassen von Zähler + \Counter{chapter} abhängt, von einem \LaTeX-Zähler ahängig gemacht + werden.}% + \entry{\Option{float}}{% + Es wird nicht nur ein neuer Verzeichnistyp definiert, sondern auch + Gleitumgebungen \Environment{\PName{Eintragstyp}} (siehe Option + \Option{type}) und \Environment{\PName{Eintragstyp}*} + (vgl. \Environment{figure} und \Environment{figure*}).}% + \entry{\OptionVName{floatpos}{Gleitverhalten}}{% + Jede Gleitumgebung hat ein voreingestelltes \PName{Gleitverhalten}, das + über das optionale Argument der Gleitumgebung geändert werden kann. Mit + dieser Option wird das \PName{Gleitverhalten} für die optional erstellbare + Gleitumgebung (siehe Option \Option{float}) festgelegt. Die Syntax und + Semantik ist dabei mit der des optionalen Arguments für die Gleitumgebung + identisch. Wird die Option nicht verwendet, so ist das voreingestellte + Gleitverhalten \texttt{tbp}, also \emph{top}, \emph{bottom}, + \emph{page}.}% + \entry{\OptionVName{floattype}{Gleittyp}}{% + Jede Gleitumgebung hat einen nummerischen Typ. Gleitumgebungen, bei denen + in diesem \PName{Gleittyp} nur unterschiedliche Bits gesetzt sind, können + sich gegenseitig überholen. Die Gleitumgebungen \Environment{figure} und + \Environment{table} haben normalerweise die Typen 1 und 2, können sich + also gegenseitig überholen. Es sind Typen von 1 bis 31 (alle Bits gesetzt, + kann also keinen anderen Typ überholen und von keinem anderen Typen + überholt werden) zulässig. Wird kein Typ angegeben, so wird mit 16 der + höchst mögliche Ein-Bit-Typ verwendet.}% + \entry{\Option{forcenames}}{% + Siehe Option \Option{name} und \Option{listname}.}% + \entry{\OptionVName{hang}{Einzug}}{% + \ChangedAt[2015/12]{v3.20}{\Package{tocbasic}}% + \ChangedAt[2015/12]{v3.21}{\Package{tocbasic}}% + Diese Option gilt seit \KOMAScript~3.20 als überholt. Die Breite der + Nummer des Verzeichniseintrags\index{Verzeichnis>Eintrag} ist nun + stattdessen als Eigenschaft in Abhängigkeit des Verzeichniseintragsstils + von Option \Option{tocentrystyle} anzugeben. Bei den Stilen von + \KOMAScript{} wäre das beispielsweise die Eigenschaft \PValue{numwidth} + und damit Option \Option{tocentrynumwidth}. Besitzt ein Stil diese + Eigenschaft, so wird sie von \Macro{DeclareNewTOC} mit 1,5\Unit{em} + voreingestellt. Diese Voreinstellung kann durch explizite Angabe von + \OptionVName{tocentrynumwidth}{Wert} leicht mit einem anderen + \PName{Wert} überschrieben werden. Für Abbildungen verwenden die + \KOMAScript-Klassen beispielsweise den \PName{Wert} \PValue{2.3em}.}% + \entry{\OptionVName{indent}{Einzug}}{% + \ChangedAt[2015/12]{v3.20}{\Package{tocbasic}}% + \ChangedAt[2015/12]{v3.21}{\Package{tocbasic}}% + Diese Option gilt seit \KOMAScript~3.20 als überholt. Der Einzug des + Verzeichniseintrags\index{Verzeichnis>Eintrag} von links ist nun + stattdessen als Eigenschaft in Abhängigkeit des Verzeichniseintragsstils + von Option \Option{tocentrystyle} anzugeben. Bei den Stilen von + \KOMAScript{} wäre das beispielsweise die Eigenschaft \PValue{indent} und + damit Option \Option{tocentryindent}. Besitzt ein Stil diese Eigenschaft, + so wird sie von \Macro{DeclareNewTOC} mit 1\Unit{em} voreingestellt. Diese + Voreinstellung kann durch explizite Angabe von + \OptionVName{tocentryindent}{Wert} leicht mit einem anderen \PName{Wert} + überschrieben werden. Für Abbildungen verwenden die \KOMAScript-Klassen + beispielsweise den \PName{Wert} \PValue{1.5em}.}% + \entry{\OptionVName{level}{Gliederungsebene}}{% + \ChangedAt[2015/12]{v3.20}{\Package{tocbasic}}% + \ChangedAt[2015/12]{v3.21}{\Package{tocbasic}}% + Diese Option gilt seit \KOMAScript~3.20 als überholt. Der nummerische Wert + der Ebene des Verzeichniseintrags\index{Verzeichnis>Eintrag} ist nun + stattdessen als Eigenschaft in Abhängigkeit des Verzeichniseintragsstils + von Option \Option{tocentrystyle} anzugeben. Nichts desto trotz haben alle + Stile die Eigenschaft \PValue{level} und damit Option + \Option{tocentrylevel}. Die Eigenschaft wird von \Macro{DeclareNewTOC} mit + 1 voreingestellt. Diese Voreinstellung kann durch explizite Angabe von + \OptionVName{tocentrylevel}{Wert} leicht mit einem anderen \PName{Wert} + überschrieben werden.}% + \entry{\OptionVName{listname}{Verzeichnistitel}}{% + Jedes Verzeichnis hat eine Überschrift, die durch diese Option bestimmt + werden kann. Ist die Option nicht angegeben, so wird als Verzeichnistitel + »\texttt{List of \PName{Mehrzahl des Eintragstyps}}« (siehe Option + \Option{types}) verwendet, wobei das erste Zeichen der \PName{Mehrzahl des + Eintragstyps} in einen Großbuchstaben gewandelt wird. Es wird auch ein + Makro \Macro{list\PName{Eintragstyp}name} mit diesem Wert definiert, der + jederzeit geändert werden kann. Dieses Makro wird jedoch nur definiert, + wenn es nicht bereits definiert ist oder zusätzlich Option + \Option{forcenames} gesetzt ist.}% + \entry{\OptionVName{name}{Eintragsname}}{% + Sowohl als optionaler Präfix für die Einträge im Verzeichnis als auch für + die Beschriftung in einer Gleitumgebung (siehe Option \Option{float}) oder + einer nicht gleitenden Umgebung (siehe Option \Option{nonfloat}) wird ein + Name für einen Eintrag in das Verzeichnis benötigt. Ohne diese Option wird + als \PName{Eintragsname} der \PName{Eintragstyp} (siehe Option + \Option{type}) verwendet, bei dem das erste Zeichen in einen + Großbuchstaben gewandelt wird. Es wird auch ein Makro + \Macro{\PName{Eintragstyp}name} mit diesem Wert definiert, der jederzeit + geändert werden kann. Dieses Makro wird jedoch nur definiert, wenn es + nicht bereits definiert ist oder zusätzlich Option \Option{forcenames} + gesetzt ist.}% + \entry{\Option{nonfloat}}{% + Es wird nicht nur ein neuer Verzeichnistyp definiert, sondern auch eine + nicht gleitende Umgebungen \Environment{\PName{Eintragstyp}-} (siehe + Option \Option{type}), die ähnlich wie eine Gleitumgebung verwendet werden + kann, jedoch nicht gleitet und auch nicht die Grenzen der Umgebung, in der + sie verwendet wird, durchbricht.}% + \entry{\OptionVName{owner}{Besitzer}}{% + Jedes neue Verzeichnis hat bei \Package{tocbasic} einen Besitzer (siehe + \autoref{sec:tocbasic.basics}). Dieser kann hier angegeben werden. Ist + kein Besitzer angegeben, so wird der Besitzer »\PValue{float}« verwendet, + den auch die \KOMAScript-Klassen für das Abbildungs- und das + Tabellenverzeichnis verwenden.}% + \entry{\OptionVName{setup}{Liste von Eigenschaften}}{% + \ChangedAt{v3.25}{\Package{tocbasic}}% + Die \PName{Liste von Eigenschaften} wird via + \DescRef{\LabelBase.cmd.setuptoc} gesetzt. Es wird darauf hingewiesen, + dass für die Angabe mehrerer durch Komma getrennter Eigenschaften die + \PName{Liste von Eigenschaften} in geschweifte Klammern gesetzt werden + muss.% + }% + \entry{\OptionVName{tocentrystyle}{Eintragsstil}}{% + \ChangedAt{v3.20}{\Package{tocbasic}}% + \PName{Eintragsstil} gibt den Stil an, den Einträge in das entsprechende + Verzeichnis haben sollen. Der Name der Eintragsebene wird dabei über + Option \Option{type} bestimmt. Zusätzlich zu den Optionen dieser Tabelle + können auch alle Eigenschaften des Stils als Optionen angegeben werden, + indem die Namen der Eigenschaften mit dem Präfix \PValue{toc} ergänzt + werden. So kann der nummerische Wert der Ebene beispielsweise als + \Option{tocentrylevel} angegeben werden. Näheres zu den Stilen ist + \autoref{sec:tocbasic.tocstyle} ab \autopageref{sec:tocbasic.tocstyle} zu + entnehmen.}% + \entry{\OptionVName{tocentry\PName{Stiloption}}{Wert}}{% + \ChangedAt[2015/12]{v3.20}{\Package{tocbasic}}% + Weitere Optionen in Abhängigkeit vom via \Option{tocentrystyle} gewählten + \PName{Eintragsstil}. Siehe dazu \autoref{sec:tocbasic.tocstyle} ab + \autopageref{sec:tocbasic.tocstyle}. Für die von \Package{tocbasic} + vordefinierten Verzeichniseintragsstile finden sich die als + \PName{Stiloption} verwendbaren Attribute in + \autoref{tab:tocbasic.tocstyle.attributes}, ab + \autopageref{tab:tocbasic.tocstyle.attributes}.% + }% + \entry{\OptionVName{type}{Eintragstyp}}{% + \PName{Eintragstyp} gibt den Typ der Einträge in das entsprechende + Verzeichnis an. Der Typ wird auch als Basisname für verschiedene Makros + und gegebenenfalls Umgebungen und Zähler verwendet. Er sollte daher nur + aus Buchstaben bestehen. Wird diese Option nicht verwendet, so wird für + \PName{Eintragstyp} die \PName{Dateierweiterung} aus dem obligatorischen + Argument verwendet.}% + \entry{\OptionVName{types}{Mehrzahl des Eintragstyps}}{% + An verschiedenen Stellen wird auch die Mehrzahlform des Eintragstyps + verwendet, beispielsweise um eine Anweisung \Macro{listof\PName{Mehrzahl + des Eintragstyps}} zu definieren. Wird diese Option nicht verwendet, + so wird als \PName{Mehrzahl des Eintragstyps} der Wert von + \Option{type} mit angehängtem »s« verwendet.}% + \entry{\OptionVName{unset}{Liste von Eigenschaften}}{% + \ChangedAt{v3.25}{\Package{tocbasic}}% + Die \PName{Liste von Eigenschaften} wird via + \DescRef{\LabelBase.cmd.unsettoc} aufgehoben. Es wird darauf hingewiesen, + dass für die Angabe mehrerer durch Komma getrennter Eigenschaften die + \PName{Liste von Eigenschaften} in geschweifte Klammern gesetzt werden + muss.% + }% +\end{desclist} + +\begin{Example} + Das Beispiel aus \autoref{sec:tocbasic.example} kann mit Hilfe der neuen + Anweisung deutlich verkürzt werden: +\begin{lstcode} + \DeclareNewTOC[% + type=remarkbox,% + types=remarkboxes,% + float,% Gleitumgebungen sollen definiert werden. + floattype=4,% + name=Merksatz,% + listname={Verzeichnis der Merks\"atze}% + ]{lor} + \setuptoc{lor}{chapteratlist} +\end{lstcode} + Neben den Umgebungen \Environment{remarkbox} und \Environment{remarkbox*} + sind damit auch der Zähler \Counter{remarkbox}, die zur Ausgabe gehörenden + Anweisungen \Macro{theremarkbox}, \Macro{remarkboxname} und + \Macro{remarkboxformat}, die für das Verzeichnis benötigten + \Macro{listremarkboxname} und \Macro{listofremarkboxes} sowie einige intern + verwendete Anweisungen mit Bezug auf die Dateiendung \File{lor} + definiert. Soll der Gleitumgebungstyp dem Paket überlassen werden, so kann + Option \Option{floattype} im Beispiel entfallen. Wird zusätzlich + die Option \Option{nonfloat} angegeben, wird außerdem eine nicht gleitende + Umgebung \Environment{remarkbox-} definiert, in der ebenfalls + \DescRef{maincls.cmd.caption}\IndexCmd{caption} verwendet werden kann. + + Zum besseren Verständnis zeigt \autoref{tab:tocbasic.comparison} eine + Gegenüberstellung der Anweisungen und Umgebungen für die neu erstellte + Beispielumgebung \Environment{remarkbox} mit den entsprechenden Befehlen und + Umgebungen für Abbildungen.% + \begin{table} + \centering + \caption{Gegenüberstellung von Beispielumgebung \Environment{remarkbox} + und Umgebung \Environment{figure}} + \label{tab:tocbasic.comparison} + \begin{tabularx}{\textwidth}{l@{\hskip\tabcolsep}l@{\hskip\tabcolsep}>{\raggedright}p{7em}@{\hskip\tabcolsep}X} + \toprule + \begin{tabular}[t]{@{}l@{}} + Umgebung\\ + \Environment{remarkbox} + \end{tabular} + & \begin{tabular}[t]{@{}l@{}} + Umgebung\\ + \Environment{figure} + \end{tabular} + & Optionen von \Macro{DeclareNewTOC} & Kurzbeschreibung \\[1ex] + \midrule + \Environment{remarkbox} & \Environment{figure} + & \Option{type}, \Option{float} + & Gleitumgebung des jeweiligen Typs.\\[1ex] + \Environment{remarkbox*} & \Environment{figure*} + & \Option{type}, \Option{float} + & spaltenübergreifende Gleitumgebung des jeweiligen Typs \\[1ex] + \Counter{remarkbox} & \Counter{figure} + & \Option{type}, \Option{float} + & Zähler, der von \DescRef{maincls.cmd.caption} verwendet wird \\[1ex] + \Macro{theremarkbox} & \Macro{thefigure} + & \Option{type}, \Option{float} + & Anweisung zur Ausgabe des jeweiligen Zählers \\[1ex] + \Macro{remarkboxformat} & \DescRef{maincls.cmd.figureformat} + & \Option{type}, \Option{float} + & Anweisung zur Formatierung des jeweiligen Zählers in der Ausgabe von + \DescRef{maincls.cmd.caption}\\[1ex] + \Macro{remarkboxname} & \Macro{figurename} + & \Option{type}, \Option{float}, \Option{name} + & Name, der im Label von \DescRef{maincls.cmd.caption} verwendet + wird\\[1ex] + \Macro{listofremarkboxes} & \DescRef{maincls.cmd.listoffigures} + & \Option{types}, \Option{float} + & Anweisung zur Ausgabe des jeweiligen Verzeichnisses \\[1ex] + \Macro{listremarkboxname} & \Macro{listfigurename} + & \Option{type}, \Option{float}, \Option{listname} + & Überschrift des jeweiligen Verzeichnisses \\[1ex] + \Macro{fps@remarkbox} & \Macro{fps@figure} + & \Option{type}, \Option{float}, \Option{floattype} + & nummerischer Gleitumge\-bungstyp zwecks + Reihen\-fol\-gen\-erhalts\\[1ex] + \File{lor} & \File{lof} + & + & Dateiendung der Hilfsdatei für das jeweilige Verzeichnis \\ + \bottomrule + \end{tabularx} + \end{table} + + Und hier nun eine mögliche Verwendung der Umgebung: +\begin{lstcode} + \begin{remarkbox} + \centering + Gleiches sollte immer auf gleiche Weise und + mit gleichem Aussehen gesetzt werden. + \caption{Erster Hauptsatz der Typografie} + \label{rem:typo1} + \end{remarkbox} +\end{lstcode} + Ein Ausschnitt aus einer Beispielseite mit dieser Umgebung könnte dann so + aussehen: + \begin{center}\footnotesize + \begin{tabular} + {|!{\hspace{.1\linewidth}}p{.55\linewidth}!{\hspace{.1\linewidth}}|} + \\ + \centering + Gleiches sollte immer auf gleiche Weise und + mit gleichem Aussehen gesetzt werden.\\[\abovecaptionskip] + {% + \usekomafont{caption}\footnotesize + \begin{tabularx}{\hsize}[t]{@{}l@{ }X@{}} + \usekomafont{captionlabel}{Merksatz 1:} & + Erster Hauptsatz der Typografie%\\ + \end{tabularx}% + }% + \\ + \end{tabular}% + \end{center}% +\end{Example}% + +Benutzer von +\Package{hyperref}\IndexPackage{hyperref}\important{\Package{hyperref}} +sollten Option \Option{listname} übrigens immer angeben. Anderenfalls kommt es +in der Regel zu einer Fehlermeldung, weil \Package{hyperref} nicht mit dem +\Macro{MakeUppercase}\IndexCmd{MakeUppercase} im Namen des Verzeichnisses +zurecht kommt, das benötigt wird, um den ersten Buchstaben des Wertes von +\Option{types} in Großbuchstaben zu wandeln.% +\EndIndexGroup +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "../guide" +%%% End: + +% LocalWords: Verzeichnisdatei Klonquelle Absatzabstandes Absatzabstand +% LocalWords: Verzeichniseinträge Verzeichniseintrag Eintragsstile +% LocalWords: Inhaltsverzeichniseinträge Standardklassen Nummernbreite +% LocalWords: Standardeigenschaft Eintragsebene Optionenliste expandierbar +% LocalWords: Standardverzeichniseintragsstil Verzeichniseigenschaften +% LocalWords: Verzeichniseintragsstil Verzeichniseintragsstils Eintragsstil +% LocalWords: Kapitelüberschrift Gliederungsebene expandierbares +% LocalWords: Eintragsnummer Initialisierungscode Aktivierungswerte +% LocalWords: Deaktivierungswert Verzeichnistitel Eintragstyp Eintragstyps +% LocalWords: Verzeichniseintrags Säumniswert Überschriftenanweisung +% LocalWords: Eintragstext Dateierweiterung Dateierweiterungen Paketautoren +% LocalWords: Verzeichnisbefehle Verzeichnisdaten Schrifteinstellungen +% LocalWords: Eintragsebenen Platzierungsoptionen Kapiteleinträge diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/typearea-experts.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/typearea-experts.tex new file mode 100644 index 0000000000..9b071f0edd --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/typearea-experts.tex @@ -0,0 +1,292 @@ +% ====================================================================== +% typearea-experts.tex +% Copyright (c) Markus Kohm, 2008-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% typearea-experts.tex +% Copyright (c) Markus Kohm, 2008-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about typearea of the KOMA-Script guide part II +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel über typearea in der KOMA-Script-Anleitung Teil II +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\KOMAProvidesFile{typearea-experts.tex} + [$Date: 2018-01-31 09:49:41 +0100 (Wed, 31 Jan 2018) $ + KOMA-Script guide (chapter: typearea for experts)] + +\chapter{Zusätzliche Informationen zum Paket \Package{typearea.sty}} +\labelbase{typearea-experts} + +\BeginIndexGroup \BeginIndex{Package}{typearea} In diesem Kapitel finden Sie +zusätzliche Informationen zum Paket +\hyperref[cha:typearea]{\Package{typearea}}. \iffree{Einige Teile des Kapitels + sind dabei dem \KOMAScript-Buch \cite{book:komascript} vorbehalten. Dies + sollte kein Problem sein, denn der}{Der} normale Anwender, der das Paket +einfach nur verwenden will, wird diese Informationen eher selten +benötigen. Ein Teil der Informationen richtet sich an Anwender, die +ausgefallene Aufgaben lösen oder eigene Pakete schreiben wollen, die auf +\Package{typearea} basieren. Ein weiterer Teil der Informationen behandelt +Möglichkeiten von \Package{typearea}, die aus Gründen der Kompatibilität zu +den Standardklassen oder früheren Versionen von \KOMAScript{} existieren. Die +Teile, die nur aus Gründen der Kompatibilität zu früheren Versionen von +\KOMAScript{} existieren, sind in serifenloser Schrift gesetzt und sollten +nicht mehr verwendet werden. + + +\section{Experimentelle Möglichkeiten} +\seclabel{experimental} + +In diesem Abschnitt werden experimentelle Möglichkeiten +beschrieben. Experimentell bedeutet in diesem Zusammenhang, dass die Funktion +nicht garantiert werden kann. Dafür kann es zwei Gründe geben. Zum einen +steht die endgültige Funktion oder Implementierung eventuell noch nicht +abschließend fest. Zum anderen hängen die Möglichkeiten teilweise von Interna +anderer Pakete ab und können deshalb in ihrer Funktion nur so lange garantiert +werden, wie diese anderen Pakete nicht geändert werden. + +\begin{Declaration} + \OptionVName{usegeometry}{Ein-Aus-Wert} +\end{Declaration} +Normalerweise kümmert sich \Package{typearea} wenig darum, ob es in irgend +einer Konstellation zusammen mit dem Paket +\Package{geometry}\IndexPackage{geometry} (siehe \cite{package:geometry}) +verwendet wird. Das bedeutet insbesondere, dass \Package{geometry} nach wie +vor nichts davon mitbekommt, wenn man mit \Package{typearea} beispielsweise +die Papiergröße ändert -- etwas, das \Package{geometry} selbst gar nicht +bietet. + +Sobald\ChangedAt{v3.17}{\Package{typearea}} Option \Option{usegeometry} +gesetzt wird, versucht \Package{typearea}, alle eigenen Optionen für +\Package{geometry} in dessen Optionen zu übersetzen. Innerhalb des Dokuments +wird sogar \Macro{newgeometry} aufgerufen, wenn neue Parameter aktiviert +werden (siehe \DescRef{\LabelBase.cmd.activateareas} im nachfolgenden +Abschnitt). Da \Package{geometry} keine Änderung der Papiergröße oder +Papierausrichtung via \Macro{newgeometry} bietet, wird diese bei Bedarf über +interne Anweisungen und Längen von \Package{geometry} umgesetzt. Getestet ist +dies für \Package{geometry}~5.3 bis 5.6. + +Die Option bedeutet übrigens nicht, dass bei Verwendung von \Package{geometry} +nach einer Papiergrößen- oder Papierausrichtungsänderung mit +\Package{typearea} das neue Papier direkt optimal genutzt wird. Da +\Package{geometry} aus Komfortgründen deutlich mehr Optionen für die +Papiereinstellung bietet, als für die Bestimmung von Textbereich, Rändern, +Kopf, Fuß etc. benötigt werden -- man spricht von \emph{Überbestimmung} -- und +gleichzeitig bei neuen Aufrufen von \Macro{newgeometry} fehlende Angaben aus +bereits bekannten ableitet -- man spricht von \emph{Werterhalt} --, +muss man gegebenenfalls durch vollständige Bestimmung neuer Werte +bei einem eigenen Aufruf von \Macro{newgeometry} alle gewünschten +Einstellungen explizit vornehmen. Nichts desto Trotz kann die Berücksichtigung +von \Package{geometry} durch \Package{typearea} zusätzliche Möglichkeiten +eröffnen. + +{\setlength{\emergencystretch}{1em}% +Von \Package{typearea} werden mit \Option{usegeometry} für \Package{geometry} +derzeit die Optionen +\Option{bindingoffset}, \Option{footskip}, \Option{headheight}, +\Option{headsep}, \Option{includefoot}, \Option{includehead}, +\Option{includemp}, \Option{lmargin}, \Option{marginparsep}, +\Option{marginparwidth}, \Option{textheight}, \Option{textwidth}, \Option{top} +und in der Dokumentpräambel zusätzlich \Option{paperheight} und +\Option{paperwidth} gesetzt.\par}% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{areasetadvanced}{Ein-Aus-Wert} + \Macro{areaset}\OParameter{BCOR}\Parameter{Breite}\Parameter{Höhe} +\end{Declaration} +Normalerweise berücksichtigt \DescRef{typearea.cmd.areaset} Optionen zur +Bestimmung der Höhe von Kopf und Fuß oder zur Festlegung, ob Randelemente Teil +des Satzspiegels sein sollen, nicht in gleicher Weise wie +\DescRef{typearea.cmd.typearea}. Mit Option +\Option{areasetadvanced}\ChangedAt{v3.11}{\Package{typearea}} kann jedoch +eingestellt werden, dass sich \DescRef{typearea.cmd.areaset} diesbezüglich +mehr wie \DescRef{typearea.cmd.typearea} verhalten soll. Trotzdem +unterscheiden sich Einstellungen, die zu gleich großen Textbereichen führen +zwischen den beiden Befehlen weiterhin, da \DescRef{typearea.cmd.typearea} +immer auf ganze Zeile rundet und dabei gegebenenfalls den unteren Rand um bis +zu eine Zeile kleiner wählt, während \DescRef{typearea.cmd.areaset} den oberen +und unteren Rand immer im Verhältnis 1:2 einstellt. Die Textbereiche der +unterschiedlichen Befehle können also bei gleicher Größe vertikal leicht +verschoben sein.% +\EndIndexGroup + + +\section{Anweisungen für Experten} +\seclabel{experts} + +In diesem Abschnitt werden Anweisungen beschrieben, die für den normalen +Anwender kaum oder gar nicht von Interesse sind. Experten bieten diese +Anweisungen zusätzliche Möglichkeiten.\iffree{ Da die Beschreibungen für + Experten gedacht sind, sind sie kürzer gefasst.}{} + +\begin{Declaration} + \Macro{activateareas} +\end{Declaration}% +Diese Anweisung wird von \Package{typearea} genutzt, um die Einstellungen für +Satzspiegel und Ränder in die internen \LaTeX-Längen zu übertragen, wenn der +Satzspiegel innerhalb des Dokuments, also nach +\Macro{begin}\PParameter{document} neu berechnet wurde. Wurde die Option +\DescRef{typearea.option.pagesize} verwendet, so wird diese anschließend mit +demselben Wert neu aufgerufen. Damit kann beispielsweise innerhalb von +PDF-Dokumenten die Seitengröße tatsächlich variieren. + +Experten können diese Anweisung auch verwenden, wenn Sie aus irgendwelchen +Gründen Längen wie \Length{textwidth} oder \Length{textheight} innerhalb des +Dokuments manuell geändert haben. Der Experte ist dabei für eventuell +notwendige Seitenumbrüche vor oder nach der Verwendung jedoch selbst +verantwortlich! Darüber hinaus sind alle von \Macro{activateareas} +durchgeführten Änderungen lokal!% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{storeareas}\Parameter{Anweisung} + \Macro{BeforeRestoreareas}\Parameter{Code} + \Macro{BeforeRestoreareas*}\Parameter{Code} + \Macro{AfterRestoreareas}\Parameter{Code} + \Macro{AfterRestoreareas*}\Parameter{Code} +\end{Declaration} +Mit Hilfe von \Macro{storeareas} wird eine \PName{Anweisung} definiert, über +die alle aktuellen Seitenspiegeleinstellungen wieder hergestellt werden +können. So ist es möglich, die aktuellen Einstellungen zu speichern, +anschließend die Einstellungen zu ändern und dann die gespeicherten +Einstellungen wieder zu reaktivieren. + +\begin{Example} + Sie wollen in einem Dokument im Hochformat eine Seite im Querformat + unterbringen. Mit \Macro{storeareas} kein Problem: +\begin{lstcode} + \documentclass{scrartcl} + + \begin{document} + \noindent\rule{\textwidth}{\textheight} + + \storeareas\meinegespeichertenWerte + \KOMAoptions{paper=landscape,DIV=current} + \noindent\rule{\textwidth}{\textheight} + + \clearpage + \meinegespeichertenWerte + \noindent\rule{\textwidth}{\textheight} + \end{document} +\end{lstcode} + Wichtig\textnote{Achtung!} ist dabei die Anweisung + \DescRef{maincls.cmd.clearpage} vor dem Aufruf von + \Macro{meinegespeichertenWerte}, damit die Wiederherstellung erst auf der + nächsten Seite erfolgt. Bei doppelseitigen Dokumenten sollte bei Änderungen + am Papierformat stattdessen sogar + \DescRef{maincls.cmd.cleardoubleoddpage}\IndexCmd{cleardoubleoddpage} oder + -- wenn keine \KOMAScript-Klasse zum Einsatz kommt -- + \DescRef{maincls.cmd.cleardoublepage}\IndexCmd{cleardoublepage} verwendet + werden.% + \iffree{\par Außerdem wird \Macro{noindent} verwendet, um den normalen + Absatzeinzug vor den schwarzen Kästen zu verhindern. Sie würden sonst kein + korrektes Bild des Seitenlayouts wiedergeben.}{}% +\end{Example} + +Bei\textnote{Achtung!} der Verwendung von \Macro{storeareas} ist zu beachten, +dass sowohl \Macro{storeareas} als auch die damit definierte \PName{Anweisung} +nicht innerhalb einer Gruppe aufgerufen werden sollten. Die Definition der +\PName{Anweisung} erfolgt intern mit +\Macro{newcommand}\IndexCmd{newcommand*}\important{\Macro{newcommand*}}. Bei +erneuter Verwendung einer bereits definierten \PName{Anweisung} wird eine +entsprechende Fehlermeldung ausgegeben. + +Oftmals\ChangedAt{v3.18}{\Package{typearea}} ist auch erwünscht, vor der +Wiederherstellung der Einstelllungen per \PName{Anweisung} grundsätzlich +bestimmte Aktionen wie beispielsweise ein +\DescRef{maincls.cmd.cleardoubleoddpage} auszuführen. Dies kann man mit Hilfe +von \Macro{BeforeRestoreareas} und \Macro{BeforeRestoreareas*} +erreichen. Entsprechend kann man mit \Macro{AfterRestoreareas} und +\Macro{AfterRestoreareas*} \PName{Code} nach der Wiederherstellung der +Einstellungen ausführen lassen. Die Formen mit und ohne Stern unterscheiden +sich insoweit, als die Sternform nur für noch nicht per \Macro{storeareas} +gespeicherte Einstellungen gilt, während sich die Variante ohne Stern auch auf +die zukünftige Verwendung bereits früher gespeicherter Einstellungen +auswirkt.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{AfterCalculatingTypearea}\Parameter{Anweisungen} + \Macro{AfterCalculatingTypearea*}\Parameter{Anweisungen} + \Macro{AfterSettingArea}\Parameter{Anweisungen} + \Macro{AfterSettingArea*}\Parameter{Anweisungen} +\end{Declaration}% +Diese Anweisungen dienen der Verwaltung zweier Haken\Index{Haken} (engl. +\emph{hooks}\Index{hook=\emph{hook}}). Die ersten beiden, +\Macro{AfterCalculatingTypearea} und deren Sternform, ermöglichen es dem +Experten jedes Mal, nachdem \Package{typearea} eine neue Auf"|teilung in +Satzspiegel und Ränder berechnet hat, also nach jeder impliziten oder +expliziten Ausführung von \DescRef{typearea.cmd.typearea}, \PName{Anweisungen} +ausführen zu lassen. Entsprechendes leisten +\Macro{AfterSettingArea}\ChangedAt{v3.11}{\Package{typearea}} und dessen +Stern-Form für die Ausführung von \DescRef{typearea.cmd.areaset}. Die +Normalformen arbeiten dabei global, während die Änderungen durch die +Sternformen nur lokal wirksam sind. Die \PName{Anweisungen} werden jeweils +unmittelbar vor \DescRef{\LabelBase.cmd.activateareas} ausgeführt.\iffree{}{ + In \autoref{cha:modernletters} wird für die \emph{Letter-Class-Option} + \File{asymTypB.lco} davon Gebrauch gemacht, um die Randverteilung zu + ändern.}% +% +\EndIndexGroup + + +\section{Lokale Einstellungen durch die Datei \File{typearea.cfg}} +\seclabel{cfg} +\BeginIndex{File}{typearea.cfg} + +\LoadNonFree{typearea-experts}{0} + +\section{Mehr oder weniger obsolete Optionen und Anweisungen} +\seclabel{obsolete} + +\LoadNonFree{typearea-experts}{1} +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: + +% LocalWords: Hochformat Seitenspiegels diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/typearea.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/typearea.tex new file mode 100644 index 0000000000..0ff9dd4573 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/ngerman/typearea.tex @@ -0,0 +1,2035 @@ +% ====================================================================== +% typearea.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% typearea.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about typearea of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel über typearea in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ====================================================================== + + +\KOMAProvidesFile{typearea.tex} + [$Date: 2018-01-31 13:01:01 +0100 (Wed, 31 Jan 2018) $ + KOMA-Script guide (chapter: typearea)] +\chapter{Satzspiegelberechnung mit \Package{typearea.sty}} +\labelbase{typearea} + +\BeginIndexGroup% +\BeginIndex{Package}{typearea}% +Viele \LaTeX-Klassen\iffree{, darunter auch die Standardklassen,}{} bieten dem +Anwender eine weitgehend feste Auf"|teilung von Rändern und Textbereich. Bei +den Standardklassen ist die konkrete Auf"|teilung in engen Grenzen von der +gewählten Schriftgröße abhängig. Darüber hinaus gibt es Pakete wie +\Package{geometry}\IndexPackage{geometry} (siehe \cite{package:geometry}), die +dem Anwender die volle Kontrolle, aber auch die Verantwortung für die +Einstellungen des Textbereichs und der Ränder überlassen. + +\KOMAScript{} geht mit dem Paket \Package{typearea} einen etwas anderen +Weg. Hier werden basierend auf einer in der Typografie etablierten +Konstruktion Einstellmöglichkeiten und Automatismen geboten, die es dem +Anwender erleichtern, eine gute Wahl zu treffen. + +\iffalse% Umbruchoptimierung!!! + Es wird darauf hingewiesen, dass sich \Package{typearea} des Pakets + \Package{scrbase} bedient. Letzteres Paket ist im Expertenteil + \iffree{dieser Anleitung}{dieses Buches} in \autoref{cha:scrbase} ab + \autopageref{cha:scrbase} erklärt. + Die Mehrzahl der dort dokumentierten Anweisungen richtet sich jedoch nicht + an Anwender, sondern an Klassen- und Paketautoren.% +\fi + +\section{Grundlagen der Satzspiegelkonstruktion} +\seclabel{basics} + +\begin{Explain} + Betrachtet man eine einzelne Seite eines Buches oder eines anderen + Druckwerkes, so besteht diese auf den ersten Blick aus den Rändern% + \iffalse% Umbruchkorrekturtext + \footnote{Der Autor und der Lektor haben an dieser Stelle überlegt, ob eine + Seite nicht nur einen umlaufenden Rand hat und daher von »dem Rand« die + Rede sein müsste. Da jedoch \LaTeX{} diesen einen Rand logisch in mehrere + Ränder unterteilt, die getrennt bestimmt werden, ist hier auch von »den + Rändern« die Rede.}% + \fi% + , einem Kopfbereich, einem Textkörper und einem Fußbereich. Genauer + betrachtet, kommt noch ein Abstand zwischen Kopfbereich und Textkörper sowie + zwischen Textkörper und Fußbereich hinzu. Der Textkörper heißt in der + Fachsprache der Typografen und Setzer \emph{Satzspiegel}. Die Auf"|teilung + dieser Bereiche sowie ihre Anordnung zueinander und auf dem Papier nennen + wir \emph{Satzspiegeldefinition} oder + \emph{Satzspiegelkonstruktion}.\Index[indexmain]{Satzspiegel} + + In der Literatur werden verschiedene Algorithmen und heuristische Verfahren + zur Konstruktion eines guten Satzspiegels vorgeschlagen und diskutiert% + \iffree{ \cite{DANTE:TK0402:MJK}}{. Einen Überblick über einige Möglichkeiten + und der dabei angenommenen Grundsätze gibt + \autoref{cha:typeareaconstruction}}% + . Häufig findet man ein Verfahren, das mit verschiedenen Diagonalen + und deren Schnittpunkten arbeitet. Das gewünschte Ergebnis ist, dass das + Seitenverhältnis des Satzspiegels dem Seitenverhältnis \emph{der Seite} + entspricht. Bei einem einseitigen\Index{einseitig} Dokument sollen außerdem + der linke und der rechte Rand gleich breit sein, während der obere zum + unteren Rand im Verhältnis 1:2 stehen sollte. Bei einem + doppelseitigen\Index{doppelseitig} Dokument, beispielsweise einem Buch, ist + hingegen zu beachten, dass der gesamte innere Rand genauso groß sein sollte + wie jeder der beiden äußeren Ränder. Eine einzelne Seite steuert dabei + jeweils nur die Hälfte des inneren Randes bei. + + Im vorherigen Absatz wurde \emph{die Seite} erwähnt und + hervorgehoben. Irrtümlich wird oftmals angenommen, das Format der Seite wäre + mit dem Format des Papiers gleichzusetzen.\Index[indexmain]{Seiten>Format} + \Index[indexmain]{Papier>Format} Betrachtet man jedoch ein gebundenes + Druckerzeugnis, so ist zu erkennen, dass ein Teil des Papiers in der + Bindung\Index[indexmain]{Bindung} verschwindet und nicht mehr als Seite zu + sehen ist. Für den Satzspiegel ist jedoch nicht entscheidend, welches Format + das Papier hat, sondern, was der Leser für einen Eindruck vom Format der + Seite bekommt. Damit ist klar, dass bei der Berechnung des Satzspiegels der + Teil, der durch die Bindung versteckt wird, aus dem Papierformat + herausgerechnet und dann zum inneren Rand hinzugefügt werden muss. Wir + nennen diesen Teil + \emph{Bindekorrektur}.\Index[indexmain]{Bindekorrektur}% + \textnote{Bindekorrektur} + Die Bindekorrektur ist also rechnerischer Bestandteil des + \emph{Bundstegs}\Index{Bundsteg}, nicht jedoch des sichtbaren + inneren Randes. + + Die Bindekorrektur ist vom jeweiligen Produktionsvorgang abhängig und kann + nicht allgemein festgelegt werden. Es handelt sich dabei also um einen + Parameter, der für jeden Produktionsvorgang neu festzulegen ist. Im + professionellen Bereich spielt dieser Wert nur eine geringe Rolle, da + ohnehin auf größere Papierbögen gedruckt und entsprechend geschnitten + wird. Beim Schneiden wird dann wiederum sichergestellt, dass obige + Verhältnisse für die sichtbare Doppelseite eingehalten sind. + + Wir wissen nun also, wie die einzelnen Teile zueinander stehen. Wir wissen + aber noch nicht, wie breit und hoch der Satzspiegel ist. Kennen wir eines + dieser beiden Maße, so ergeben sich zusammen mit dem Papierformat und dem + Seitenformat oder der Bindekorrektur alle anderen Maße durch Lösung mehrerer + mathematischer Gleichungen: + % Umbruchoptiomierung!!! + \iffree{% + \begin{align*} + \Var{Satzspiegelhöhe}\Index{Satzspiegel} : \Var{Satzspiegelbreite} &= + \Var{Seitenhöhe}\Index{Seite} : \Var{Seitenbreite} \\ + \Var{oberer~Rand}\Index{Rand} : \Var{unterer~Rand} &= + \text{1} : \text{2} \\ + \Var{linker~Rand} : \Var{rechter~Rand} &= \text{1} : \text{1} \\ +% + \Var{innerer~Randanteil} : \Var{äußerer~Rand} &= \text{1} : \text{2} \\ +% + \Var{Seitenbreite} &= + \Var{Papierbreite}\Index{Papier} - + \Var{Bindekorrektur}\Index{Bindekorrektur}\\ +% + \Var{oberer~Rand} + \Var{unterer~Rand} &= + \Var{Seitenhöhe} - \Var{Satzspiegelhöhe} \\ +% + \Var{linker~Rand} + \Var{rechter Rand} &= + \Var{Seitenbreite} - \Var{Satzspiegelbreite} \\ +% + \Var{innerer Randanteil} + \Var{äußerer Rand} &= + \Var{Seitenbreite} - \Var{Satzspiegelbreite} \\ +% + \Var{innerer~Randanteil} + \Var{Bindekorrektur} &= + \Var{Bundsteg}\index{Bundsteg} + \end{align*} + }{% + % Umbruchkorrektur: Abstände verändert! + \begin{prepareformargin} + \vskip -.5\baselineskip plus .25\baselineskip + \begin{align*} + \Var{Satzspiegelhöhe}\Index{Satzspiegel} : \Var{Satzspiegelbreite} &= + \Var{Seitenhöhe}\Index{Seite} : \Var{Seitenbreite} \\ + \Var{oberer~Rand}\Index{Rand} : \Var{unterer~Rand} &= + \text{1} : \text{2} \\ + \Var{linker~Rand} : \Var{rechter~Rand} &= \text{1} : \text{1} \\ + \Var{innerer~Randanteil} : \Var{äußerer~Rand} &= + \text{1} : \text{2}\\ + \Var{Seitenbreite} &= + \Var{Papierbreite}\Index{Papier} - + \Var{Bindekorrektur}\Index{Bindekorrektur} \\ + \Var{oberer~Rand} + \Var{unterer~Rand} &= + \Var{Seitenhöhe} - \Var{Satzspiegelhöhe} \\ + % + \Var{linker~Rand} + \Var{rechter Rand} &= + \Var{Seitenbreite} - \Var{Satzspiegelbreite} \\ + % + \Var{innerer Randanteil} + \Var{äußerer Rand} &= + \Var{Seitenbreite} - \Var{Satzspiegelbreite} \\ + % +% \end{align*} +% \end{prepareformargin}\pagebreak +% \begin{prepareformargin}\vskip-\abovedisplayskip +% \begin{align*} + \Var{innerer~Randanteil} + \Var{Bindekorrektur} &= + \Var{Bundsteg}\index{Bundsteg} + \end{align*} + \end{prepareformargin} + \vskip .5\baselineskip minus .25\baselineskip + }% + \Index[indexmain]{Rand}% + Dabei gibt es \Var{linker~Rand} und \Var{rechter~Rand} nur im einseitigen + Druck. Entsprechend gibt es \Var{innerer~Randanteil} und \Var{äußerer~Rand} + nur im doppelseitigen Druck. + + In den Gleichungen wird mit \Var{innerer~Randanteil} gearbeitet, weil der + komplette innere Rand ein Element der vollständigen Doppelseite ist. Zu + einer Seite gehört also nur die Hälfte des inneren Randes: + \Var{innerer~Randanteil}. + + Die Frage nach der Breite des Satzspiegels wird in der Literatur + ebenfalls diskutiert. Die optimale Satzspiegelbreite ist von + verschiedenen Faktoren abhängig: + \iffree{\begin{itemize}}{\begin{itemize}[% Umbuchkorrektur + topsep=.5\baselineskip plus .25\baselineskip minus .33\baselineskip, + partopsep=.5\baselineskip plus .25\baselineskip minus .33\baselineskip, + itemsep=.33\baselineskip plus .25\baselineskip minus .25\baselineskip, + parsep=0pt + ]} + \item Größe, Laufweite und Art der verwendeten Schrift, + \item verwendeter Durchschuss, + \item Länge der Worte, + \item verfügbarer Platz. + \end{itemize} + Der Einfluss der Schrift wird deutlich, wenn man sich bewusst macht, + wozu Serifen dienen. Serifen\Index[indexmain]{Serifen} sind kleine + Striche an den Linienenden der Buchstaben. Buchstaben, die mit + vertikalen Linien auf die Grundlinie der Textzeile treffen, + lösen diese eher auf, als dass sie das Auge auf der Linie halten. + Genau bei diesen Buchstaben liegen die Serifen horizontal auf + der Grundlinie und verstärken damit die Zeilenwirkung der Schrift. + Das Auge kann der Textzeile nicht nur beim Lesen der Worte, sondern + insbesondere auch beim schnellen Zurückspringen an den Anfang der + nächsten Zeile besser folgen. Damit darf die Zeile bei einer Schrift + mit Serifen genau genommen länger sein als bei einer Schrift ohne Serifen. + + Unter dem + Durchschuss\Index[indexmain]{Durchschuss}\textnote{Durchschuss} + versteht man den Abstand zwischen Textzeilen. Bei \LaTeX{} ist ein + Durchschuss von etwa 20\,\% der Schriftgröße voreingestellt. Mit Befehlen + wie \Macro{linespread}\IndexCmd{linespread} oder besser mit Hilfe von + Paketen wie \Package{setspace}\IndexPackage{setspace} (siehe + \cite{package:setspace}) kann der Durchschuss verändert werden. Ein großer + Durchschuss erleichtert dem Auge die Verfolgung einer Zeile. Bei sehr + großem Durchschuss wird das Lesen aber dadurch gestört, dass das Auge + zwischen den Zeilen weite Wege zurücklegen muss. Daneben wird sich der + Leser des entstehenden Streifeneffekts sehr deutlich und unangenehm + bewusst. Der Graueindruck der Seite ist in diesem Fall gestört. Dennoch + dürfen bei großem Durchschuss die Zeilen länger sein. + + Auf der Suche nach konkreten Werten für gute + Zeilenlängen\Index[indexmain]{Zeilenlaenge=Zeilenlänge} findet man in der + Literatur je nach Autor unterschiedliche Angaben. Teilweise ist dies auch in + der Muttersprache des Autors begründet. Das Auge springt nämlich + üblicherweise von Wort zu Wort, wobei kurze Wörter diese Aufgabe + erleichtern. Über alle Sprachen und Schriftarten hinweg kann man sagen, dass + eine Zeilenlänge von 60 bis 70 Zeichen, einschließlich Leer- und + Satzzeichen, einen brauchbaren Kompromiss darstellt. Ein gut gewählter + Durchschuss wird dabei vorausgesetzt. Bei den Voreinstellungen von \LaTeX{} + braucht man sich über Letzteres normalerweise keine Sorgen zu + machen. Größere Zeilenlängen darf man nur Gewohnheitslesern zumuten, die + täglich viele Stunden lesend zubringen. Aber auch dann sind Zeilenlängen + jenseits von 80 Zeichen unzumutbar. In jedem Fall ist dann der Durchschuss + anzupassen. 5\,\% bis 10\,\% zusätzlich sind dabei als Faustregel + empfehlenswert. Bei Schriften wie Palatino, die bereits bei einer normalen + Zeilenlänge nach 5\,\% mehr Durchschuss verlangt, können es auch mehr sein. + + Bevor wir uns an die konkrete Konstruktion machen, fehlen jetzt nur noch + Kleinigkeiten, die man wissen sollte. \LaTeX{} beginnt die erste Zeile des + Textbereichs einer Seite nicht am oberen Rand des Textbereichs, sondern + setzt die Grundlinie der Zeile mit einem definierten Mindestabstand zum + oberen Rand des Textbereichs. Des Weiteren verfügt \LaTeX{} über die beiden + Befehle \DescRef{maincls.cmd.raggedbottom}\IndexCmd{raggedbottom} und + \DescRef{maincls.cmd.flushbottom}\IndexCmd{flushbottom}. Der erste dieser + Befehle legt fest, dass die letzte Zeile einer jeden Seite dort liegen soll, + wo sie eben zu liegen kommt. Das kann dazu führen, dass sich die Position + der letzten Zeile von Seite zu Seite vertikal um nahezu eine Zeile verändern + kann -- bei Zusammentreffen des Seitenendes mit Überschriften, Abbildungen, + Tabellen oder Ähnlichem auch mehr. Im doppelseitigen Druck ist das in der + Regel unerwünscht. Mit dem zweiten Befehl, + \DescRef{maincls.cmd.flushbottom}, wird hingegen festgelegt, dass die letzte + Zeile immer am unteren Rand des Textbereichs zu liegen kommt. Um diesen + vertikalen Ausgleich zu erreichen, muss \LaTeX{} gegebenenfalls dehnbare + vertikale Abstände über das erlaubte Maß hinaus strecken. Ein solcher + Abstand ist beispielsweise der Absatzabstand. Dies gilt in der Regel auch, + wenn man gar keinen Absatzabstand verwendet. Um nicht bereits auf normalen + Seiten, auf denen der Absatzabstand das einzige dehnbare vertikale Maß + darstellt, eine Dehnung zu erzwingen, sollte die Höhe des Textbereichs ein + Vielfaches der Textzeilenhöhe zuzüglich des Abstandes der ersten Zeile vom + oberen Rand des Textbereichs sein. + +\iffalse% Umbruchkorrektur + Damit sind alle Grundlagen der Satzspiegelberechnung, die bei + {\KOMAScript} eine Rolle spielen, erklärt. +\else + Soweit die Grundlagen. +\fi +\iffalse% Umbruchkorrektur + Es folgen die beiden von \KOMAScript{} angebotenen Konstruktionen. +\else +\iffalse% Umbruchkorrektur + Wir können also mit den konkreten Konstruktionen beginnen. +\else + In den folgenden beiden Abschnitten werden die von {\KOMAScript} angebotenen + Konstruktionen im Detail vorgestellt. +\fi +\fi +\end{Explain} + + +\section{Satzspiegelkonstruktion durch Teilung} +\seclabel{divConstruction} + +\begin{Explain} + Der einfachste Weg, um zu erreichen, dass der Textbereich dasselbe + Seitenverhältnis aufweist wie die Seite, ist folgender:% + \begin{itemize} + \item Zunächst zieht man an der Innenseite des Papiers den Teil + \Var{BCOR}\important{\Var{BCOR}}, der für die + Bindekorrektur\Index{Bindekorrektur} benötigt wird, ab und teilt die + restliche Seite vertikal in eine Anzahl \Var{DIV} gleich hoher Streifen. + \item Dann teilt man die Seite horizontal in die gleiche Anzahl + \Var{DIV}\important{\Var{DIV}} gleich breiter Streifen. + \item Nun verwendet man den obersten horizontalen Streifen als oberen und + die beiden untersten horizontalen Streifen als unteren Rand. Im + doppelseitigen Druck verwendet man außerdem den innersten vertikalen + Streifen als inneren und die beiden äußersten vertikalen Streifen als + äußeren Rand. + \item Zum inneren Rand gibt man dann noch \Var{BCOR} hinzu. + \end{itemize} + Was nun innerhalb der Seite noch übrig bleibt, ist der + Textbereich.\Index{Text>Bereich} Die Breite bzw. Höhe der Ränder und des + Textbereichs resultiert damit automatisch aus der Anzahl \Var{DIV} der + Streifen. Da für die Ränder insgesamt jeweils drei Streifen benötigt werden, + muss \Var{DIV} zwingend größer als drei sein. Damit der Satzspiegel + horizontal und vertikal jeweils mindestens doppelt so viel Platz wie die + Ränder einnimmt, sollte \Var{DIV} sogar mindestens 9 betragen. Mit diesem + Wert ist die Konstruktion auch als \emph{klassische Neunerteilung} bekannt + (siehe \autoref{fig:typearea.nineparts}). + + \begin{figure} +% \centering + \KOMAoption{captions}{bottombeside}% + \setcapindent{0pt}% + \setlength{\columnsep}{.6em}% + \begin{captionbeside}[{% + Doppelseite mit der Rasterkonstruktion für die klassische + Neunerteilung nach Abzug einer Bindekorrektur% + }]{% + \label{fig:typearea.nineparts}% + \hspace{0pt plus 1ex}% + Doppelseite mit der Rasterkonstruktion für die klassische + Neunerteilung nach Abzug einer Bindekorrektur% + } + [l] + \setlength{\unitlength}{.25mm}% + \definecolor{komalight}{gray}{.75}% + \definecolor{komamed}{gray}{.6}% + \definecolor{komadark}{gray}{.3}% + \begin{picture}(420,297) + % BCOR + \put(198,0){\color{komalight}\rule{24\unitlength}{297\unitlength}} + \multiput(198,2)(0,20){15}{\thinlines\line(0,1){10}} + \multiput(222,2)(0,20){15}{\thinlines\line(0,1){10}} + % Das Papier + \put(0,0){\thicklines\framebox(420,297){}} +% \put(210,0){\thicklines\framebox(210,297){}} + % Der Satzspiegel + \put(44,66){\color{komamed}\rule{132\unitlength}{198\unitlength}} + \put(244,66){\color{komamed}\rule{132\unitlength}{198\unitlength}} + % Hilfslinien + \multiput(0,33)(0,33){8}{\thinlines\line(1,0){198}} + \multiput(222,33)(0,33){8}{\thinlines\line(1,0){198}} + \multiput(22,0)(22,0){8}{\thinlines\line(0,1){297}} + \multiput(244,0)(22,0){8}{\thinlines\line(0,1){297}} + % Beschriftung + \put(198,0){\color{white}\makebox(24,297)[c]{% + \rotatebox[origin=c]{-90}{Bindekorrektur}}} + \put(44,66){\color{white}\makebox(132,198)[c]{Satzspiegel links}} + \put(244,66){\color{white}\makebox(132,198)[c]{Satzspiegel rechts}} + % Kästchennummern + \makeatletter + \multiput(1,27)(0,33){9}{\footnotesize\makebox(0,0)[l]{\the\@multicnt}} + \multiput(177,291)(-22,0){9}{% + \footnotesize\makebox(0,0)[l]{\the\@multicnt}} + \multiput(419,27)(0,33){9}{% + \footnotesize\makebox(0,0)[r]{\the\@multicnt}} + \multiput(243,291)(22,0){8}{% + \footnotesize\makebox(0,0)[r]{\the\numexpr\@multicnt+1\relax}} + \makeatother + \end{picture} + \end{captionbeside} +% \caption{Doppelseite mit der Rasterkonstruktion für die klassische +% Neunerteilung nach Abzug einer Bindekorrektur} +% \label{fig:typearea.nineparts} + \end{figure} + + Bei {\KOMAScript} ist diese Art der Konstruktion im Paket \Package{typearea} + realisiert, wobei der untere Rand weniger als eine Textzeile kleiner + ausfallen kann, um die im vorherigen Abschnitt erwähnte Nebenbedingung für + die Satzspiegelhöhe einzuhalten und damit die dort erwähnte Problematik in + Bezug auf \DescRef{maincls.cmd.flushbottom} zu mindern. Dabei sind für + A4-Papier je nach Schriftgröße unterschiedliche Werte für \Var{DIV} + voreingestellt, die \autoref{tab:typearea.div}, + \autopageref{tab:typearea.div} zu entnehmen sind. Bei Verzicht auf + Bindekorrektur, wenn also \Var{BCOR} = 0\Unit{pt} gilt, ergeben sich in etwa + die Satzspiegelmaße aus \autoref{tab:typearea.typearea}, + \autopageref{tab:typearea.typearea}. + + Neben den voreingestellten Werten kann man \Var{BCOR} und \Var{DIV} direkt + beim Laden des Pakets als Option angeben (siehe + \autoref{sec:typearea.typearea} ab + \autopageref{sec:typearea.typearea}). Zusätzlich existiert ein Befehl, mit + dem man einen Satzspiegel explizit berechnen kann und dem man die beiden + Werte als Parameter übergibt (\iftrue% Umbruchoptimierung!!!! + siehe ebenfalls + \autoref{sec:typearea.typearea}, \fi\DescPageRef{typearea.cmd.typearea}). + + Das \Package{typearea}-Paket bietet außerdem die Möglichkeit, den optimalen + \Var{DIV}-Wert automatisch zu bestimmen. Dieser ist von der Schrift und dem + Durchschuss abhängig, der zum Zeitpunkt der Satzspiegelberechnung + eingestellt ist% + \iftrue% Umbruchoptimierung!!!! + . Siehe hierzu ebenfalls \autoref{sec:typearea.typearea}, \else\ + (\fi\DescPageRef{typearea.option.DIV.calc}\iftrue)\fi.% +\end{Explain}% + + +\section{Satzspiegelkonstruktion durch Kreisschlagen} +\seclabel{circleConstruction} + +\begin{Explain} + Neben der zuvor beschriebenen Satzspiegelkonstruktion\Index{Satzspiegel} + gibt es in der Literatur noch eine eher klassische oder sogar + mittelalterliche Methode. Bei diesem Verfahren will man die gleichen Werte + nicht nur in Form des Seitenverhältnisses wiederfinden; man geht außerdem + davon aus, dass das Optimum dann erreicht wird, wenn die Höhe des + Textbereichs der Breite der Seite entspricht. Das genaue Verfahren ist + beispielsweise in \cite{JTsch87} nachzulesen. + + Als Nachteil dieses spätmittelalterlichen Buchseitenkanons ergibt sich, dass + die Breite des Textbereichs nicht mehr von der Schriftart abhängt. Es wird + also nicht mehr der zur Schrift passende Textbereich gewählt, stattdessen + muss der Autor oder Setzer unbedingt die zum Textbereich passende Schrift + wählen. +% +\iftrue +% Umbruchkorrekturtext + Dies ist als zwingend zu betrachten. +\fi + + Im \Package{typearea}-Paket wird diese Konstruktion dahingehend abgewandelt, + dass durch Auswahl eines ausgezeichneten -- normalerweise unsinnigen -- + \Var{DIV}-Wertes oder einer speziellen, symbolischen Angabe derjenige + \Var{DIV}-Wert ermittelt wird, bei dem der resultierende Satzspiegel dem + spätmittelalterlichen Buchseitenkanon am nächsten kommt. Es wird also + wiederum auf die Satzspiegelkonstruktion durch Teilung zurückgegriffen. +% +\iffalse +% Umbruchkorrekturtext + Bei Wahl einer guten Schrift stimmt dieses Ergebnis nicht selten mit der + Suche nach dem optimalen \Var{DIV}-Wert überein. Siehe hierzu ebenfalls + \autoref{sec:typearea.typearea}, \DescPageRef{typearea.option.DIV.calc}. +% +\fi +\end{Explain} + +\LoadCommonFile{options} % \section{Frühe oder späte Optionenwahl} + +\LoadCommonFile{compatibility} % \section{Kompatibilität zu früheren Versionen von \KOMAScript} + +\section{Einstellung des Satzspiegels und der \texorpdfstring{Seitenauf"|teilung}{Seitenaufteilung}} +\seclabel{typearea} + +Das Paket \Package{typearea} bietet zwei unterschiedliche +Benutzerschnittstellen, um auf die Satzspiegelkonstruktion Einfluss zu +nehmen. Die wichtigste Möglichkeit ist die Angabe von Optionen. Wie +im vorherigen Abschnitt erwähnt, können die Optionen dabei auf +unterschiedlichen Wegen gesetzt werden. + +In\textnote{Hinweis!} diesem Abschnitt wird die Klasse \Class{protokol} +verwendet werden. Es handelt sich dabei nicht um eine \KOMAScript-Klasse, +sondern um eine hypothetische Klasse. Diese\iffree{ Anleitung}{s Buch} geht +von dem Idealfall aus, dass für jede Aufgabe eine dafür passende Klasse zur +Verfügung steht. + + +\begin{Declaration} + \OptionVName{BCOR}{Korrektur} +\end{Declaration}% +Mit Hilfe der Option +\OptionVName{BCOR}{Korrektur}\ChangedAt{v3.00}{\Package{typearea}} geben Sie +den absoluten Wert der +Bindekorrektur\Index{Bindekorrektur}\textnote{Bindekorrektur} an, also die +Breite des Bereichs, der durch die Bindung von der Papierbreite verloren +geht. Dieser Wert wird in der Satzspiegelkonstruktion automatisch +berücksichtigt und bei der Ausgabe wieder dem inneren beziehungsweise linken +Rand zugeschlagen. Als \PName{Korrektur} können Sie jede von \TeX{} +verstandene Maßeinheit angeben. + +\begin{Example} + Angenommen, Sie erstellen einen Finanzbericht. Das Ganze soll + einseitig in A4 gedruckt und anschließend in eine Klemmmappe + geheftet werden. Die Klemme der Mappe verdeckt 7,5\Unit{mm}. + Der Papierstapel ist sehr dünn, deshalb gehen beim Knicken und + Blättern durchschnittlich höchstens weitere 0,75\Unit{mm} + verloren. Sie schreiben dann also: +\begin{lstcode} + \documentclass[a4paper]{report} + \usepackage[BCOR=8.25mm]{typearea} +\end{lstcode} + mit \OptionValue{BCOR}{8.25mm} als Option für \Package{typearea} oder +\begin{lstcode} + \documentclass[a4paper,BCOR=8.25mm]{report} + \usepackage{typearea} +\end{lstcode} + zur Angabe von \OptionValue{BCOR}{8.25mm} als globale Option. + + Bei Verwendung einer \KOMAScript-Klasse kann das explizite Laden von + \Package{typearea} entfallen: +\begin{lstcode} + \documentclass[BCOR=8.25mm]{scrreprt} +\end{lstcode} + Die Option \Option{a4paper} konnte bei \Class{scrreprt} entfallen, da diese + der Voreinstellung bei allen \KOMAScript-Klassen entspricht. + + Setzt man die Option erst später auf einen neuen Wert, verwendet man also + beispielsweise +\begin{lstcode} + \documentclass{scrreprt} + \KOMAoptions{BCOR=8.25mm} +\end{lstcode} + so werden bereits beim Laden der Klasse \Class{scrreprt} + Standardeinstellungen vorgenommen. Beim Ändern der Einstellung mit Hilfe + einer der Anweisung \DescRef{\LabelBase.cmd.KOMAoptions} oder + \DescRef{\LabelBase.cmd.KOMAoption} wird dann automatisch ein neuer + Satzspiegel mit neuen Randeinstellungen berechnet. +\end{Example} + +Bitte beachten Sie unbedingt\textnote{Achtung!}, dass diese Option bei +Verwendung einer der \KOMAScript-Klassen wie im Beispiel als Klassenoption +oder per \DescRef{\LabelBase.cmd.KOMAoptions} beziehungsweise +\DescRef{\LabelBase.cmd.KOMAoption} nach dem Laden der Klasse übergeben werden +muss. Weder sollte das Paket \Package{typearea} bei Verwendung einer +\KOMAScript-Klasse explizit per \DescRef{\LabelBase.cmd.usepackage} geladen, +noch die Option dabei als optionales Argument angegeben +werden. Wird\textnote{automatische Neuberechnung} die Option per +\DescRef{\LabelBase.cmd.KOMAoptions} oder \DescRef{\LabelBase.cmd.KOMAoption} +nach dem Laden des Pakets geändert, so werden Satzspiegel und Ränder +automatisch neu berechnet.% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{DIV}{Faktor} +\end{Declaration}% +Mit Hilfe der Option +\OptionVName{DIV}{Faktor}\ChangedAt{v3.00}{\Package{typearea}} wird +festgelegt, in wie viele Streifen die Seite horizontal und vertikal bei der +Satzspiegelkonstruktion eingeteilt wird. Die genaue Konstruktion ist +\autoref{sec:typearea.divConstruction} zu entnehmen. Wichtig zu wissen ist, +dass gilt: Je größer der \PName{Faktor}, desto größer wird der Textbereich und +desto kleiner die Ränder. Als \PName{Faktor} kann jeder ganzzahlige Wert ab 4 +verwendet werden. Bitte beachten Sie jedoch, dass sehr große Werte dazu führen +können, dass Randbedingungen der Satzspiegelkonstruktion, je nach Wahl der +weiteren Optionen, verletzt werden. So kann die Kopfzeile im Extremfall auch +außerhalb der Seite liegen. Bei Verwendung der Option +\OptionVName{DIV}{Faktor} sind Sie für die Einhaltung der Randbedingungen +sowie eine nach typografischen Gesichtspunkten günstige Zeilenlänge selbst +verantwortlich. + +In \autoref{tab:typearea.typearea} finden Sie für das Seitenformat A4 +ohne Bindekorrektur die aus einigen \Var{DIV}-Faktoren +resultierenden Satzspiegelgrößen. Dabei werden die weiteren von der +Schriftgröße abhängigen Nebenbedingungen nicht berücksichtigt. + +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside} +% \caption + [{Satzspiegelma"se in Abh"angigkeit von \Var{DIV} bei A4}] + {\label{tab:typearea.typearea}Satzspiegelma"se in Abh"angigkeit von \Var{DIV} + bei A4 ohne Berücksichtigung von \Length{topskip} oder \Var{BCOR}} + [l] + \begin{tabular}[t]{ccccc} + \toprule + & + \multicolumn{2}{c}{Satzspiegel} & \multicolumn{2}{c}{R"ander}\\ + %\raisebox{1.5ex}[0pt]{ + \Var{DIV} + %} + & Breite & H"ohe & oben & innen \\ + \midrule + 6 & 105,00 & 148,50 & 49,50 & 35,00 \\ + 7 & 120,00 & 169,71 & 42,43 & 30,00 \\ + 8 & 131,25 & 185,63 & 37,13 & 26,25 \\ + 9 & 140,00 & 198,00 & 33,00 & 23,33 \\ + 10 & 147,00 & 207,90 & 29,70 & 21,00 \\ + 11 & 152,73 & 216,00 & 27,00 & 19,09 \\ + 12 & 157,50 & 222,75 & 24,75 & 17,50 \\ + 13 & 161,54 & 228,46 & 22,85 & 16,15 \\ + 14 & 165,00 & 233,36 & 21,21 & 15,00 \\ + 15 & 168,00 & 237,60 & 19,80 & 14,00 \\ + \bottomrule + \multicolumn{5}{r}{\small (alle Längen in mm)} + \end{tabular} + \end{captionbeside} +\end{table} + +\begin{Example} + Angenommen, Sie schreiben ein Sitzungsprotokoll. Sie verwenden dafür die + Klasse \Class{protokol}. Das Ganze soll doppelseitig werden. In Ihrer Firma + wird die Schriftart Bookman in 12\Unit{pt} verwendet. Diese Schriftart, die + zu den Standard-PostScript-Schriften gehört, wird in {\LaTeX} mit der + Anweisung \verb|\usepackage{bookman}| aktiviert. Die Schriftart Bookman + läuft sehr weit, das heißt, die einzelnen Zeichen sind im Verhältnis zur + Höhe relativ breit. Deshalb ist Ihnen die Voreinstellung für den + \Var{DIV}-Wert in \Package{typearea} zu gering. Statt einem Wert von 12 sind + Sie nach gründlichem Studium dieses Kapitels einschließlich der + weiterführenden Abschnitte überzeugt, dass der Wert 15 angebracht ist. Das + Protokoll wird nicht gebunden, sondern gelocht und in einen Ordner + abgeheftet. Eine Bindekorrektur ist deshalb nicht notwendig. Sie schreiben + also: +\begin{lstcode} + \documentclass[a4paper,twoside]{protokol} + \usepackage{bookman} + \usepackage[DIV=15]{typearea} +\end{lstcode} + Als Sie fertig sind, macht man Sie darauf aufmerksam, dass die + Protokolle neuerdings gesammelt und am Quartalsende alle zusammen + als Buch gebunden werden. Die Bindung erfolgt als + einfache Leimbindung, weil den Band ohnehin nie wieder jemand + anschaut und er nur wegen ISO\,9000 angefertigt wird. Für die Bindung + einschließlich Biegefalz werden durchschnittlich 12\Unit{mm} + benötigt. Sie ändern die Optionen von \Package{typearea} also + entsprechend ab und verwenden die Klasse für Protokolle nach + ISO\,9000: +\begin{lstcode} + \documentclass[a4paper,twoside]{iso9000p} + \usepackage{bookman} + \usepackage[DIV=15,BCOR=12mm]{typearea} +\end{lstcode} + Natürlich können Sie auch hier wieder eine \KOMAScript-Klasse + verwenden: +\begin{lstcode} + \documentclass[twoside,DIV=15,BCOR=12mm]{scrartcl} + \usepackage{bookman} +\end{lstcode} +\iftrue% Umbruchoptimierung!!!! + Option \Option{a4paper} entspricht der Voreinstellung und konnte daher + entfallen. +\else + Die Option \Option{a4paper} konnte bei der Klasse \Class{scrartcl} entfallen, + da diese der Voreinstellung bei allen \KOMAScript-Klassen entspricht. +\fi +\end{Example} + +Bitte beachten Sie unbedingt\textnote{Achtung!}, dass die Option \Option{DIV} +bei Verwendung einer der \KOMAScript-Klassen wie im Beispiel als Klassenoption +oder per \DescRef{\LabelBase.cmd.KOMAoptions} beziehungsweise +\DescRef{\LabelBase.cmd.KOMAoption} nach dem Laden der Klasse übergeben werden +muss. Weder sollte das Paket \Package{typearea} bei Verwendung einer +\KOMAScript-Klasse explizit per \DescRef{\LabelBase.cmd.usepackage} geladen, +noch die Option dabei als optionales Argument angegeben +werden. Wird\textnote{automatische Neuberechnung} die Option per +\DescRef{\LabelBase.cmd.KOMAoptions} oder \DescRef{\LabelBase.cmd.KOMAoption} +nach dem Laden des Pakets geändert, so werden Satzspiegel und Ränder +automatisch neu berechnet. + +\begin{Declaration} + \OptionValue{DIV}{calc} + \OptionValue{DIV}{classic} +\end{Declaration} +Wie\ChangedAt{v3.00}{\Package{typearea}} bereits in +\autoref{sec:typearea.divConstruction} erwähnt, gibt es nur für das +Papierformat A4 feste Voreinstellungen für den \Var{DIV}-Wert. Diese sind +\autoref{tab:typearea.div} zu entnehmen. Solche festen Werte haben allerdings +den Nachteil\textnote{Achtung!}, dass sie die Laufweite der verwendeten +Schrift nicht berücksichtigen. Das kann bei A4 und recht schmalen Schriften +sehr rasch zu unangenehm hoher Zeichenzahl je Zeile führen. Siehe hierzu die +Überlegungen in \autoref{sec:typearea.basics}. Wird ein anderes Papierformat +gewählt, so berechnet \Package{typearea} selbst einen guten \Var{DIV}-Wert. +Natürlich können Sie diese Berechnung auch für A4 wählen. Hierzu verwenden Sie +\OptionValue{DIV}{calc}\important{\OptionValue{DIV}{calc}} anstelle von +\OptionVNameRef{\LabelBase}{DIV}{Faktor}. Selbstverständlich können Sie +diese Option auch explizit bei allen anderen Papierformaten angeben. Wenn Sie +die automatische Berechnung wünschen, ist diese Angabe sogar sinnvoll, da die +Möglichkeit besteht, in einer Konfigurationsdatei andere Voreinstellungen zu +setzen (siehe \autoref{sec:typearea-experts.cfg}). Eine explizit angegebene +Option \OptionValue{DIV}{calc} überschreibt diese Vorkonfiguration aber. + +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + \begin{captionbeside} + %\caption + [{\PName{DIV}-Voreinstellungen f"ur A4}] + {\label{tab:typearea.div}\PName{DIV}-Voreinstellungen f"ur A4} + [l] + \begin{tabular}[t]{lccc} + \toprule + Grundschriftgr"o"se: & 10\Unit{pt} & 11\Unit{pt} & 12\Unit{pt} \\ + \Var{DIV}: & 8 & 10 & 12 \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} + +Die in \autoref{sec:typearea.circleConstruction} erwähnte klassische +Konstruktion, der mittelalterliche Buchseitenkanon, ist ebenfalls auswählbar. +Verwenden Sie in diesem Fall anstelle von +\OptionVNameRef{\LabelBase}{DIV}{Faktor} oder \OptionValue{DIV}{calc} einfach +\OptionValue{DIV}{classic}\important{\OptionValue{DIV}{classic}}. Es wird dann +ein \Var{DIV}-Wert ermittelt, der eine möglichst gute Näherung an den +mittelalterlichen Buchseitenkanon darstellt. + +\begin{Example} + In dem bei der Option \OptionVNameRef{\LabelBase}{DIV}{Faktor} aufgeführten + Beispiel mit der Schriftart Bookman gab es ja genau das Problem, dass man + einen zur Schriftart besser passenden \Var{DIV}-Wert haben wollte. Man + könnte also in Abwandlung des ersten Beispiels auch einfach die Ermittlung + dieses Wertes \Package{typearea} überlassen: +\begin{lstcode} + \documentclass[a4paper,twoside]{protokol} + \usepackage{bookman} + \usepackage[DIV=calc]{typearea} +\end{lstcode} +\end{Example} +\iffree{\par% + Bitte beachten Sie unbedingt\textnote{Achtung!}, dass diese Option bei + Verwendung einer der \KOMAScript-Klassen % + \iftrue wie im Beispiel \fi% + als Klassenoption oder per \DescRef{\LabelBase.cmd.KOMAoptions} + beziehungsweise \DescRef{\LabelBase.cmd.KOMAoption} nach dem Laden der + Klasse übergeben werden muss. Weder sollte das Paket \Package{typearea} bei + Verwendung einer \KOMAScript-Klasse explizit per + \DescRef{\LabelBase.cmd.usepackage} geladen, noch die Option dabei als + optionales Argument angegeben werden. Wird die Option per + \DescRef{\LabelBase.cmd.KOMAoptions} oder + \DescRef{\LabelBase.cmd.KOMAoption} nach dem Laden des Pakets geändert, so + werden Satzspiegel und Ränder automatisch neu berechnet.% +}{% + \vskip-\dp\strutbox% Wegen Code im Beispiel am Ende +}% +% +\EndIndexGroup + +\begin{Declaration} + \OptionValue{DIV}{current} + \OptionValue{DIV}{last} +\end{Declaration} +Wenn\ChangedAt{v3.00}{\Package{typearea}} Sie bis hier die Beispiele aufmerksam +verfolgt haben, wissen Sie eigentlich bereits, wie man die Berechnung eines +\Var{DIV}-Wertes in Abhängigkeit von der gewählten Schrift erreicht, wenn eine +\KOMAScript-Klasse zusammen mit einem Schriftpaket verwendet wird. + +\begin{Explain} + Das Problem dabei ist, dass die \KOMAScript-Klasse das Paket + \Package{typearea} bereits selbst lädt. Die Übergabe der Optionen als + optionale Argumente von \DescRef{\LabelBase.cmd.usepackage} ist also nicht + möglich. Es würde auch nichts nützen, die Option \OptionValue{DIV}{calc} als + optionales Argument von \DescRef{\LabelBase.cmd.documentclass} + anzugeben. Diese Option würde direkt beim Laden des Pakets + \Package{typearea} ausgewertet. Damit würden Satzspiegel und Ränder für die + \LaTeX-Standardschrift und nicht für die später geladene Schrift berechnet. + + Selbstverständlich ist es möglich, mit \DescRef{\LabelBase.cmd.KOMAoptions}% + \PParameter{\OptionValueRef{\LabelBase}{DIV}{calc}} oder + \DescRef{\LabelBase.cmd.KOMAoption}% + \PParameter{\DescRef{\LabelBase.option.DIV}}\PParameter{calc} nach dem Laden + des Schriftpakets Satzspiegel und Ränder neu berechnen zu lassen. Dabei wird + dann über den Wert \PValue{calc} direkt ein \Var{DIV}-Wert für eine gute + Zeilenlänge eingefordert. + + Da es aber häufig praktischer ist, die Einstellung für die Option + \Option{DIV} nicht erst nach dem Laden der Schrift vorzunehmen, sondern an + herausgehobener Stelle, beispielsweise beim Laden der Klasse, bietet + \Package{typearea} zwei weitere symbolische Werte für diese Option. +\end{Explain} + +Mit \OptionValue{DIV}{current}\ChangedAt{v3.00}{\Package{typearea}}% +\important{\OptionValue{DIV}{current}} wird eine Neuberechnung von Satzspiegel +und Rändern angestoßen, wobei genau der \Var{DIV}-Wert verwendet wird, der +aktuell eingestellt ist. Dies ist weniger für die Neuberechnung des +Satzspiegels nach Wahl einer anderen Grundschrift von Interesse. Vielmehr ist +das dann nützlich, wenn man etwa nach Änderung des Durchschusses bei +Beibehaltung des Teilers \Var{DIV} die Randbedingung sicherstellen will, dass +\Length{textheight} abzüglich \Length{topskip} ein Vielfaches von +\Length{baselineskip} sein sollte. + +Mit \OptionValue{DIV}{last}\ChangedAt{v3.00}{\Package{typearea}}% +\important{\OptionValue{DIV}{last}} wird eine Neuberechnung von Satzspiegel +und Rändern angestoßen, wobei genau dieselbe Einstellung wie bei der letzten +Berechnung verwendet wird. + +\begin{Example} + Gehen wir wieder davon aus, dass für die Schriftart Bookman ein Satzspiegel + mit guter Zeilenlänge berechnet werden soll. Gleichzeitig wird eine + \KOMAScript-Klasse verwendet. Dies ist mit dem symbolischen Wert + \PValue{last} und der Anweisung \DescRef{\LabelBase.cmd.KOMAoptions} sehr + einfach möglich: +\begin{lstcode} + \documentclass[BCOR=12mm,DIV=calc,twoside] + {scrartcl} + \usepackage{bookman} + \KOMAoptions{DIV=last} +\end{lstcode} + Wird später entschieden, dass ein anderer \Var{DIV}-Wert + verwendet werden soll, so muss nur die Einstellung im optionalen Argument + von \DescRef{\LabelBase.cmd.documentclass} geändert werden. +\end{Example} + +Eine Zusammenfassung aller möglichen symbolischen Werte für die Option +\Option{DIV} finden Sie in \autoref{tab:symbolicDIV}. Es wird an dieser Stelle +darauf hingewiesen, dass auch die Verwendung des Pakets +\Package{fontenc}\IndexPackage{fontenc} dazu führen kann, dass \LaTeX{} eine +andere Schrift lädt. + +\begin{table} + \caption[{% + Symbolische Werte für Option \DescRef{typearea.option.DIV} und das + \PName{DIV}-Argument von \DescRef{typearea.cmd.typearea}% + }]{% + Mögliche symbolische Werte für die Option \DescRef{typearea.option.DIV} + oder das \PName{DIV}-Argument der Anweisung + \DescRef{typearea.cmd.typearea}\OParameter{BCOR}\Parameter{DIV}% + } + \label{tab:symbolicDIV} + \begin{desctabular} + \pventry{areaset}{Satzspiegel neu + anordnen.\IndexOption{DIV~=\textKValue{areaset}}}% + \pventry{calc}{Satzspiegelberechnung einschließlich Ermittlung eines guten + \Var{DIV}-Wertes erneut + durchführen.\IndexOption{DIV~=\textKValue{calc}}}% + \pventry{classic}{Satzspiegelberechnung nach dem mittelalterlichen + Buchseitenkanon (Kreisberechnung) erneut + durchführen.\IndexOption{DIV~=\textKValue{classic}}}% + \pventry{current}{Satzspiegelberechnung mit dem aktuell gültigen + \Var{DIV}-Wert erneut + durchführen.\IndexOption{DIV~=\textKValue{current}}}% + \pventry{default}{Satzspiegelberechnung mit dem Standardwert für das + aktuelle Seitenformat und die aktuelle Schriftgröße erneut durchführen. + Falls kein Standardwert existiert, \PValue{calc} + anwenden.\IndexOption{DIV~=\textKValue{default}}}% + \pventry{last}{Satzspiegelberechnung mit demselben \PName{DIV}-Argument, + das beim letzten Aufruf angegeben wurde, erneut + durchführen.\IndexOption{DIV~=\textKValue{last}}}% + \end{desctabular} +\end{table} + +Häufig\textnote{Achtung!} wird die Satzspiegelneuberechnung im Zusammenhang +mit der Ver"-änderung des Zeilenabstandes +(\emph{Durchschuss})\Index{Durchschuss} benötigt. Da der Satzspiegel unbedingt +so berechnet werden sollte, dass eine ganze Anzahl an Zeilen in den +Textbereich passt, muss bei Verwendung eines anderen Durchschusses als des +normalen der Satzspiegel für diesen Zeilenabstand neu berechnet werden. + +\begin{Example} + Angenommen, für eine Diplomarbeit wird die Schriftgröße + 10\Unit{pt} bei eineinhalbzeiligem Satz zwingend gefordert. {\LaTeX} + setzt normalerweise bei 10\Unit{pt} mit 2\Unit{pt} Durchschuss, + also 1,2-zeilig. Deshalb muss als zusätzlicher Dehnfaktor der Wert + 1,25 verwendet werden. Gehen wir außerdem davon aus, dass eine + Bindekorrektur von 12\Unit{mm} benötigt wird. Dann könnte die Lösung + dieses Problems wie folgt aussehen: +\begin{lstcode} + \documentclass[10pt,twoside,BCOR=12mm,DIV=calc] + {scrreprt} + \linespread{1.25} + \KOMAoptions{DIV=last} +\end{lstcode}\IndexCmd{linespread} + Da \Package{typearea} selbst immer die Anweisung \Macro{normalsize} bei + Berechnung eines neuen Satzspiegels ausführt, ist es nicht zwingend + notwendig, nach \Macro{linespread} den gewählten Durchschuss mit + \Macro{selectfont} zu aktivieren, damit dieser % +\iftrue % Umbruchkorrektur + auch tatsächlich +\fi % + für die Neuberechnung verwendet wird. + + Das gleiche Beispiel sähe unter Verwendung des + \Package{setspace}-Pakets\IndexPackage{setspace}% + \important{\Package{setspace}} + (siehe \cite{package:setspace}) wie folgt aus: +\begin{lstcode} + \documentclass[10pt,twoside,BCOR=12mm,DIV=calc] + {scrreprt} + \usepackage[onehalfspacing]{setspace} + \KOMAoptions{DIV=last} +\end{lstcode} +\end{Example} + +Wie\textnote{Tipp!} man an dem Beispiel sieht, spart man sich mit dem +\Package{setspace}-Paket das Wissen um den korrekten Dehnungswert. Dies gilt +allerdings nur für die Standardschriftgrößen 10\Unit{pt}, 11\Unit{pt} und +12\Unit{pt}. Für alle anderen Schriftgrößen verwendet das Paket +% +\iftrue % Umbruchkorrektur +einen näherungsweise passenden Dehnungswert. +% +\else % +eine Näherung. +\fi + +An\textnote{Achtung!} dieser Stelle erscheint es mir angebracht, darauf +hinzuweisen, dass der Zeilenabstand für die Titelseite wieder auf den normalen +Wert zurückgesetzt werden sollte und außerdem auch die Verzeichnisse mit dem +normalen Zeilenabstand gesetzt werden sollten. +\begin{Example} + Ein\IndexPackage{setspace} vollständiges Beispiel wäre also: +\begin{lstcode} + \documentclass[10pt,twoside,BCOR=12mm,DIV=calc] + {scrreprt} + \usepackage[onehalfspacing]{setspace} + \AfterTOCHead{\singlespacing} + \KOMAoptions{DIV=last} + \begin{document} + \title{Titel} + \author{Markus Kohm} + \begin{spacing}{1} + \maketitle + \end{spacing} + \tableofcontents + \chapter{Ok} + \end{document} +\end{lstcode} + Siehe hierzu auch die Anmerkungen in \autoref{sec:typearea.tips}. Die + Anweisung \DescRef{tocbasic.cmd.AfterTOCHead}\IndexCmd{AfterTOCHead} wird in + \autoref{part:forExperts}, \autoref{cha:tocbasic} auf + \DescPageRef{tocbasic.cmd.AfterTOCHead} vorgestellt. +\end{Example} +Außerdem sei darauf hingewiesen, dass Änderungen am Zeilenabstand auch +Auswirkungen auf Kopf und Fuß der Seite haben können. Dies kann sich +beispielsweise bei Verwendung von \Package{scrlayer-scrpage} auswirken und man +muss dann selbst entscheiden, ob man dort lieber den normalen Durchschuss oder +den veränderten haben will. Siehe dazu auch Option +\DescRef{scrlayer.option.singlespacing} in \autoref{cha:scrlayer}% +\important{\hyperref[cha:scrlayer]{\Package{scrlayer}}}% +\IndexPackage{scrlayer}\IndexOption{singlespacing} auf +\DescPageRef{scrlayer.option.singlespacing}. + +Bitte beachten Sie unbedingt\textnote{Achtung!}, dass diese Optionen auch zur +Verwendung mit \DescRef{\LabelBase.cmd.KOMAoptions} oder +\DescRef{\LabelBase.cmd.KOMAoption} nach dem Laden des Pakets vorgesehen sind +und dann eine\textnote{automatische Neuberechnung} automatische Neuberechnung +von Satzspiegel und Rändern auslösen.% +% +\EndIndexGroup +\EndIndexGroup + + +\begin{Declaration} + \Macro{typearea}\OParameter{BCOR}\Parameter{DIV} + \Macro{recalctypearea} +\end{Declaration}% +\begin{Explain} + Wird die Option \DescRef{\LabelBase.option.DIV} oder die Option + \DescRef{\LabelBase.option.BCOR} nach dem Laden des Pakets + \Package{typearea} gesetzt, so wird intern die Anweisung \Macro{typearea} + aufgerufen. Dabei wird beim Setzen der Option + \DescRef{\LabelBase.option.DIV} für \PName{BCOR} intern der symbolische Wert + \PValue{current} verwendet, der aus Gründen der Vollständigkeit auch in + \autoref{tab:symbolicBCOR} zu finden ist. Beim Setzen der Option + \DescRef{\LabelBase.option.BCOR} wird für \PName{DIV} hingegen der + symbolische Wert \PValue{last} verwendet. Wollen Sie, dass Satzspiegel und + Ränder stattdessen mit dem symbolischen Wert \PValue{current} für + \PName{DIV} neu berechnet werden, so können Sie direkt + \Macro{typearea}\POParameter{current}\PParameter{current} verwenden. +\end{Explain} + +\begin{table} + \caption[{% + Symbolische \PName{BCOR}-Argumente für \DescRef{typearea.cmd.typearea}% + }]{% + Mögliche symbolische \PName{BCOR}-Argumente für + \Macro{typearea}\OParameter{BCOR}\Parameter{DIV}% + } + \label{tab:symbolicBCOR} + \begin{desctabular} + \pventry{current}{Satzspiegelberechnung mit dem aktuell gültigen + \Var{BCOR}-Wert erneut + durchführen.\IndexOption{BCOR~=\textKValue{current}}} + \end{desctabular} +\end{table} + +Sollen die Werte sowohl von \PName{BCOR} als auch \PName{DIV} geändert werden, +so ist die Verwendung von \Macro{typearea} zu empfehlen, da hierbei die Ränder +und der Satzspiegel nur einmal neu berechnet werden. Bei +\DescRef{\LabelBase.cmd.KOMAoptions}% +\PParameter{\OptionVNameRef{\LabelBase}{DIV}{Faktor},% + \OptionVNameRef{\LabelBase}{BCOR}{Korrektur}} werden hingegen Ränder und +Satzspiegel zunächst in Folge von Option \DescRef{\LabelBase.option.DIV} und +dann zusätzlich durch Option \DescRef{\LabelBase.option.BCOR} neu berechnet. + +\begin{Explain} + Der Befehl \Macro{typearea} ist derzeit so definiert, dass es auch möglich + ist, mitten in einem Dokument den Satzspiegel zu wechseln. Dabei werden + allerdings Annahmen über den Aufbau des \LaTeX-Kerns gemacht und interne + Definitionen und Größen des \LaTeX-Kerns verändert. Da am \LaTeX-Kern nur + noch zur Beseitigung von Fehlern notwendige Änderungen vorgenommen werden, + ist die Wahrscheinlichkeit hoch, dass dies in zukünftigen Versionen von + \LaTeXe{} noch funktionieren wird. Eine Garantie dafür gibt es jedoch + nicht. Die Verwendung innerhalb des Dokuments führt außerdem immer zu einem + Seitenumbruch. +\end{Explain} + +Da\important{\Macro{recalctypearea}} \DescRef{\LabelBase.cmd.KOMAoption}% +\PParameter{\hyperref[desc:\LabelBase.option.DIV.last]{\Option{DIV}}}% +\PParameter{\hyperref[desc:\LabelBase.option.DIV.last]{last}} oder +\DescRef{\LabelBase.cmd.KOMAoptions}% +\PParameter{\OptionValueRef{\LabelBase}{DIV}{last}} beziehungsweise +\Macro{typearea}\POParameter{current}\PParameter{last} für die Neuberechnung +des Satzspiegels und der Ränder recht häufig benötigt werden, gibt es dafür +die abkürzende Anweisung +\Macro{recalctypearea}\ChangedAt{v3.00}{\Package{typearea}}. +\begin{Example} + Wenn Ihnen die Schreibweisen +\begin{lstcode} + \KOMAoptions{DIV=last} +\end{lstcode} + oder +\begin{lstcode} + \typearea[current]{last} +\end{lstcode} + für die Neuberechnung von Satzspiegel und Rändern aufgrund der vielen + Sonderzeichen zu umständlich ist, können Sie einfach +\begin{lstcode} + \recalctypearea +\end{lstcode} + verwenden. +\end{Example}% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{twoside}{Ein-Aus-Wert} + \OptionValue{twoside}{semi} +\end{Declaration}% +Wie in \autoref{sec:typearea.basics} erklärt, hängt +die Randverteilung davon ab, ob ein Dokument ein- oder zweiseitig gesetzt +werden soll. Bei einseitigem Satz sind der linke und rechte Rand gleich +breit, während bei doppelseitigem Satz der innere Randanteil einer Seite nur +halb so groß ist wie der jeweilige äußere Rand. Um diese Unterscheidung +vornehmen zu können, muss \Package{typearea} mit Option \Option{twoside} +mitgeteilt werden, ob das Dokument doppelseitig gesetzt wird. Als +\iffree{\PName{Ein-Aus-Wert}}{\PName{Wert}} kann dabei einer der Standardwerte +für einfache Schalter aus \autoref{tab:truefalseswitch} verwendet werden. Wird +die Option ohne Wert-Angabe verwendet, so wird der Wert +\PValue{true}\important{\OptionValue{twoside}{true}} angenommen, also +doppelseitiger Satz verwendet. Deaktivieren der +Option\important{\OptionValue{twoside}{false}} führt zu einseitigem Satz. + +\begin{table} +% \centering +% \caption + \KOMAoptions{captions=topbeside}\setcapindent{0pt} + \begin{captionbeside}% + [{Standardwerte für einfache Schalter in \KOMAScript}]% + {\label{tab:truefalseswitch}Standardwerte für alle einfachen Schalter in + \KOMAScript}% + [l] + \begin{tabular}[t]{ll} + \toprule + Wert & Bedeutung \\ + \midrule + \PValue{true} & aktiviert die Option\\ + \PValue{on} & aktiviert die Option \\ + \PValue{yes} & aktiviert die Option \\ + \PValue{false}& deaktiviert die Option \\ + \PValue{off} & deaktiviert die Option \\ + \PValue{no} & deaktiviert die Option \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} + +Außer den Werten aus \autoref{tab:truefalseswitch} kann jedoch auch noch der +Wert \PValue{semi}\ChangedAt{v3.00}{\Package{typearea}}% +\important{\OptionValue{twoside}{semi}} angegeben werden. Dieser Wert +\PValue{semi} führt zu doppelseitigem Satz mit einseitigen Rändern und +einseitigen, also nicht alternierenden +Marginalien. Eine\ChangedAt{v3.12}{\Package{typearea}} eventuelle +Bindekorrektur (siehe Option \DescRef{\LabelBase.option.BCOR}, +\DescPageRef{typearea.option.BCOR}) wird jedoch ab \KOMAScript~Version 3.12 +wie beim doppelseitigen Satz auf Seiten mit ungerader Nummer dem linken Rand +und auf Seiten mit gerader Nummer dem rechten Rand zugeschlagen. Wird auf +Kompatibilität zu einer früheren +Version\important{\OptionValueRef{\LabelBase}{version}{3.12}} zurückgeschaltet +(siehe \autoref{sec:typearea.compatibilityOptions}, +\autopageref{sec:typearea.compatibilityOptions}), so ist die Bindekorrektur +jedoch auch bei \OptionValue{twoside}{semi} immer Teil des linken Randes. + +Die Option kann % +\iftrue % Umbruchkorrektur +wahlweise \fi % +als Klassenoption bei \DescRef{\LabelBase.cmd.documentclass}, als Paketoption +bei \DescRef{\LabelBase.cmd.usepackage} oder auch nach dem Laden von +\Package{typearea} per \DescRef{\LabelBase.cmd.KOMAoptions} oder +\DescRef{\LabelBase.cmd.KOMAoption} gesetzt werden. Eine Verwendung dieser +Option nach dem Laden von \Package{typearea} führt\textnote{automatische + Neuberechnung} automatisch zur Neuberechnung des Satzspiegels mit +\DescRef{\LabelBase.cmd.recalctypearea} (siehe +\DescPageRef{typearea.cmd.recalctypearea}). War vor der Option +doppelseitiger Satz aktiv, wird noch vor der Neuberechnung auf die nächste +ungerade Seite umbrochen.% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{twocolumn}{Ein-Aus-Wert} +\end{Declaration}% +Für die Berechnung eines guten Satzspiegels mit Hilfe von +\OptionValueRef{\LabelBase}{DIV}{calc} ist es erforderlich zu wissen, ob das +Dokument ein- oder zweispaltig gesetzt wird. Da die Betrachtungen zur +Zeilenlänge aus \autoref{sec:typearea.basics} dann für jede einzelne Spalte +gelten, darf der Satzspiegel in doppelspaltigen Dokumenten bis zu doppelt so +breit sein wie in einspaltigen Dokumenten. + +Um diese Unterscheidung vornehmen zu können, muss \Package{typearea} mit +Option \Option{twocolumn} mitgeteilt werden, ob das Dokument doppelspaltig +gesetzt wird. Als \PName{Ein-Aus-Wert} kann dabei einer der Standardwerte für +einfache Schalter aus \autoref{tab:truefalseswitch} verwendet werden. Wird die +Option ohne Wert-Angabe verwendet, so wird der Wert +\PValue{true}\important{\OptionValue{twocolumn}{true}} angenommen, also +doppelspaltiger Satz verwendet. Ein +Deaktivieren der Option führt wieder zum voreingestellten +einspaltigen Satz. + +Die Option kann als Klassenoption bei \DescRef{\LabelBase.cmd.documentclass}, +als Paketoption bei \DescRef{\LabelBase.cmd.usepackage} oder auch nach dem +Laden von \Package{typearea} per \DescRef{\LabelBase.cmd.KOMAoptions} oder +\DescRef{\LabelBase.cmd.KOMAoption} gesetzt werden. Eine Verwendung dieser +Option nach dem Laden von \Package{typearea} führt\textnote{automatische + Neuberechnung} automatisch zur Neuberechnung des Satzspiegels mittels +\DescRef{\LabelBase.cmd.recalctypearea} (siehe +\DescPageRef{typearea.cmd.recalctypearea}).% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{headinclude}{Ein-Aus-Wert} + \OptionVName{footinclude}{Ein-Aus-Wert} +\end{Declaration}% +\begin{Explain}% + Bisher wurde zwar erklärt, wie die + Satzspiegelkonstruktion\Index{Satzspiegel} funktioniert und in welchem + Verhältnis einerseits die Ränder\Index{Rand} zueinander stehen, andererseits + der Textkörper zur Seite steht, aber eine entscheidende Frage blieb + ausgeklammert: Was genau ist \emph{der Rand}? + + Auf den ersten Blick wirkt diese Frage trivial: Der Rand ist der Teil der + Seite, der oben, unten, links und rechts frei bleibt. Doch das ist nur die + halbe Wahrheit. Der äußere Rand ist keineswegs immer leer. Teilweise findet + man darin noch gesetzte Randnotizen (siehe den Befehl + \DescRef{maincls.cmd.marginpar} beispielsweise in \cite{l2kurz} + bzw. \autoref{sec:maincls.marginNotes}). + + Beim oberen und unteren Rand stellt sich die Frage, wie Kopf- und + Fußzeile\Index{Seiten>Kopf}\Index{Seiten>Fuss=Fuß} zu behandeln sind. + Gehören diese beiden zum Textkörper oder zum jeweiligen Rand? Die Frage ist + nicht einfach zu beantworten. Eindeutig ist, dass ein leerer Fuß und ein + leerer Kopf zum Rand zu rechnen sind. Schließlich können sie nicht vom + restlichen Rand unterschieden werden. Ein Fuß, der nur die + Paginierung\Index{Paginierung}\textnote{Paginierung} + \iffalse % Beseitigung von Fußnoten + \unskip\footnote{Unter der Paginierung versteht man die Angabe der + Seitenzahl, wahlweise innerhalb oder außerhalb des Satzspiegels, meist im + Kopf oder Fuß der Seite.} % + \fi enthält, wirkt optisch ebenfalls eher wie Rand und sollte deshalb zu + diesem gerechnet werden. Für die optische Wirkung ist dabei unwesentlich, ob + der Fuß beim Lesen oder Überfliegen leicht als Fuß erkannt werden kann oder + nicht. Entscheidend ist, wie eine wohlgefüllte Seite bei \emph{unscharfer + Betrachtung} wirkt. Dazu bedient man sich beispielsweise seiner + altersweitsichtigen Großeltern, denen man die Brille stibitzt und dann die + Seite etwa einen halben Meter von der Nasenspitze entfernt hält. In + Ermangelung erreichbarer Großeltern kann man sich auch damit behelfen, dass + man die eigenen Augen auf Fernsicht stellt, die Seite aber nur mit + ausgestreckten Armen hält. Brillenträger sind hier deutlich im Vorteil. Hat + man eine Fußzeile, die neben der Paginierung weitere weitschweifige Angaben + enthält, beispielsweise einen Copyright-Hinweis, so wirkt die Fußzeile eher + wie ein etwas abgesetzter Teil des Textkörpers. Bei der Berechnung des + Satzspiegels sollte das berücksichtigt werden. + + Bei der Kopfzeile sieht es noch schwieriger aus. In der Kopfzeile wird + häufig der Kolumnentitel\Index{Kolumnentitel}\textnote{Kolumnentitel} + \iffalse% Beseitigung von Fußnoten + \unskip\footnote{Unter dem Kolumnentitel versteht man in der Regel die + Wiederholung einer Überschrift mit Titelcharakter. Er steht häufig im + Seitenkopf, seltener im Seitenfuß.} % + \fi gesetzt. Arbeitet man mit einem lebenden Kolumnentitel, also der + Wiederholung der ersten bzw. zweiten Gliederungsebene in der Kopfzeile, und + hat gleichzeitig sehr lange Überschriften, so erhält man automatisch sehr + lange Kopfzeilen. In diesem Fall wirkt der Kopf wiederum wie ein abgesetzter + Teil des Textkörpers und weniger wie leerer Rand. Verstärkt wird dieser + Effekt noch, wenn neben dem Kolumnentitel auch die Paginierung im Kopf + erfolgt. Dadurch erhält man einen links und rechts abgeschlossenen Bereich, + der kaum noch als leerer Rand wirkt. Schwieriger ist es bei Paginierung im + Fuß und Überschriften, deren Länge sehr stark schwankt. Hier kann der Kopf + der einen Seite wie Textkörper wirken, der Kopf der anderen Seite aber + eher wie Rand. Keinesfalls sollte man die Seiten jedoch unterschiedlich + behandeln. Das würde zu vertikal springenden Köpfen führen und ist nicht + einmal für ein Daumenkino geeignet. Ich rate in diesem Fall dazu, den Kopf + zum Textkörper zu rechnen. + + Ganz einfach fällt die Entscheidung, wenn Kopf oder Fuß durch + eine Linie vom eigentlichen Textkörper abgetrennt sind. Dadurch + erhält man eine geschlossene Wirkung und der Kopf bzw. Fuß sollte + unbedingt zum Textkörper gerechnet werden. Wie gesagt: Die durch die + Trennlinie verbesserte Erkennung des Kopfes oder Fußes ist hier + unerheblich. Entscheidend ist die unscharfe Betrachtung.\par +\end{Explain} + +Das \Package{typearea}-Paket trifft die Entscheidung, ob ein Kopf oder Fuß zum +Textkörper gehört\important{\OptionValue{headinclude}{true} + \OptionValue{headinclude}{false} \OptionValue{footinclude}{true} + \OptionValue{footinclude}{false}} oder davon getrennt zum Rand gerechnet +werden muss, nicht selbst. Stattdessen kann mit den Optionen +\Option{headinclude} und \Option{footinclude} eingestellt werden, ob der Kopf +und der Fuß zum Textkörper gerechnet werden sollen. Die Optionen verstehen +dabei als \PName{Ein-Aus-Wert}\ChangedAt{v3.00}{\Package{typearea}} die +Standardwerte für einfache Schalter, die in \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} angegeben sind. Man kann die Optionen auch +ohne Wertzuweisung verwenden. In diesem Fall wird \PValue{true} als +\PName{Ein-Aus-Wert} verwendet, also der Kopf oder Fuß zum Satzspiegel +gerechnet. + +Wenn Sie unsicher sind, was die richtige Einstellung ist, lesen Sie bitte +obige Erläuterungen. Voreingestellt sind normalerweise +\OptionValue{headinclude}{false} und +\OptionValue{footinclude}{false}. Dies kann sich jedoch bei den +\KOMAScript-Klassen je nach Klassenoption oder bei Verwendung anderer +\KOMAScript-Pakete generell ändern (siehe \autoref{sec:maincls.options} und +\autoref{cha:scrlayer-scrpage}). + +Bitte beachten Sie unbedingt\textnote{Achtung!}, dass diese Optionen bei +Verwendung einer der \KOMAScript-Klassen als Klassenoptionen oder per +\DescRef{\LabelBase.cmd.KOMAoptions} beziehungsweise +\DescRef{\LabelBase.cmd.KOMAoption} nach dem Laden der Klasse übergeben werden +müssen. Eine Änderung dieser Optionen nach dem Laden von \Package{typearea} +führt dabei nicht\textnote{keine automatische Neuberechnung} zu einer +automatischen Neuberechnung des Satzspiegels. Vielmehr wirkt sich die Änderung +erst bei der nächsten Neuberechnung des Satzspiegels aus. Zur Neuberechnung +des Satzspiegels siehe Option +\hyperref[desc:\LabelBase.option.DIV.last]{\Option{DIV}} mit den Werten +\hyperref[desc:\LabelBase.option.DIV.last]{\PValue{last}} oder +\hyperref[desc:\LabelBase.option.DIV.current]{\PValue{current}} (siehe +\DescPageRef{typearea.option.DIV.last}) oder die Anweisung +\DescRef{\LabelBase.cmd.recalctypearea} (siehe +\DescPageRef{typearea.cmd.recalctypearea}).% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{mpinclude}{Ein-Aus-Wert} +\end{Declaration} +Neben\ChangedAt{v2.8q}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Dokumenten, bei denen der Kopf und der Fuß der Seite eher +zum Textbereich als zum Rand gehört, gibt es auch Dokumente, bei denen dies +für Randnotizen zutrifft. Mit der Option \Option{mpinclude} kann genau dies +erreicht werden. Die Option versteht dabei als +\PName{Ein-Aus-Wert}\ChangedAt{v3.00}{\Package{typearea}} die Standardwerte +für einfache Schalter, die in \autoref{tab:truefalseswitch}, +\autopageref{tab:truefalseswitch} angegeben sind. Man kann die Option auch +ohne Wertzuweisung verwenden. In diesem Fall wird \PValue{true} als +\PName{Ein-Aus-Wert} verwendet. + +Der Effekt von +\OptionValue{mpinclude}{true}\important{\OptionValue{mpinclude}{true}} ist, +dass eine Breiteneinheit vom Textbereich weggenommen und als Bereich für die +Randnotizen verwendet wird. Mit +\OptionValue{mpinclude}{false}, was +der Voreinstellung entspricht, wird hingegen ein Teil des Randes für +Randnotizen verwendet. Dies ist, je nachdem ob einseitig oder doppelseitig +gearbeitet wird, ebenfalls eine Breiteneinheit oder auch eineinhalb +Breiteneinheiten. In der Regel ist die Verwendung von +\OptionValue{mpinclude}{true} nicht anzuraten und sollte Experten vorbehalten +bleiben. + +\begin{Explain} + In den meisten Fällen, in denen die Option \Option{mpinclude} sinnvoll ist, + werden außerdem breitere Randnotizen benötigt. In sehr vielen Fällen sollte + dabei aber nicht die gesamte Breite, sondern nur ein Teil davon dem + Textbereich zugeordnet werden. Dies ist beispielsweise der Fall, wenn der + Rand für Zitate verwendet wird. Solche Zitate werden üblicherweise im + Flattersatz gesetzt, wobei die bündige Kante an den Textbereich + anschließt. Da sich kein geschlossener optischer Eindruck ergibt, dürfen die + flatternden Enden also durchaus teilweise in den Rand ragen. Man kann das + einfach erreichen, indem man zum einen die Option \Option{mpinclude} + verwendet. Zum anderen vergrößert man die Länge \Length{marginparwidth} nach + der Berechnung des Satzspiegels noch mit Hilfe der + \Macro{addtolength}-Anweisung. Um welchen Wert man vergrößern sollte, hängt + vom Einzelfall ab und erfordert einiges Fingerspitzengefühl. Auch deshalb + ist die Option \Option{mpinclude} eher etwas für Experten. Natürlich kann + man auch festlegen, dass die Randnotizen beispielsweise zu einem Drittel in + den Rand hineinragen sollen, und das wie folgt erreichen: +\begin{lstcode} + \setlength{\marginparwidth}{1.5\marginparwidth} +\end{lstcode} + + Da es derzeit keine Option gibt, um mehr Platz für die Randnotizen innerhalb + des Textbereichs vorzusehen, gibt es nur eine Möglichkeit, dies zu + erreichen: % +\iftrue % Umbruchkorrektur + Die Anpassung von \Length{textwidth}\IndexLength{textwidth} und + \Length{marginparwidth}\IndexLength{marginparwidth} nach der Berechnung des + Satzspiegels. Siehe dazu + \DescRef{typearea-experts.cmd.AfterCalculatingTypearea} in + \autoref{sec:typearea-experts.experts}, + \DescPageRef{typearea-experts.cmd.AfterCalculatingTypearea}. +% +\else +% + Man verzichtet auf die Option \Option{mpinclude} oder setzt + \Option{mpinclude} auf \PValue{false}, verringert nach der + Satzspiegelberechnung die Breite des Textbereichs \Macro{textwidth} und + setzt die Breite des Bereichs der Randnotizen auf den Wert, um den man die + Breite des Textbereichs verringert hat. Leider lässt sich dieses Vorgehen + nicht mit der automatischen Berechnung des \PName{DIV}-Wertes verbinden. + Demgegenüber wird \Option{mpinclude} bei + \OptionValueRef{\LabelBase}{DIV}{calc}\IndexOption{DIV=calc} (siehe + \DescPageRef{typearea.option.DIV.calc}) berücksichtigt. +% +\fi +\end{Explain} + +Bitte beachten Sie unbedingt\textnote{Achtung!}, dass diese Option bei +Verwendung einer der \KOMAScript-Klassen als Klassenoption oder per +\DescRef{\LabelBase.cmd.KOMAoptions} beziehungsweise oder +\DescRef{\LabelBase.cmd.KOMAoption} nach dem Laden der Klasse übergeben werden +muss. Eine Änderung dieser Option nach dem Laden von \Package{typearea} führt +nicht\textnote{keine automatische Neuberechnung} zu einer automatischen +Neuberechnung des Satzspiegels. Vielmehr wirkt sich die Änderung erst bei der +nächsten Neuberechnung des Satzspiegels aus. Zur Neuberechnung des +Satzspiegels siehe Option +\hyperref[desc:\LabelBase.option.DIV.last]{\Option{DIV}} mit den Werten +\hyperref[desc:\LabelBase.option.DIV.last]{\PValue{last}} oder +\hyperref[desc:\LabelBase.option.DIV.current]{\PValue{current}} (siehe +\DescPageRef{typearea.option.DIV.last}) oder die Anweisung +\DescRef{\LabelBase.cmd.recalctypearea} (siehe +\DescPageRef{typearea.cmd.recalctypearea}).% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{headlines}{Zeilenanzahl} + \OptionVName{headheight}{Höhe} +\end{Declaration}% +\BeginIndex{}{Kopf>Hoehe=Höhe}% +Es ist nun also bekannt, wie man Satzspiegel mit dem \Package{typearea}-Paket +berechnet und wie man dabei angibt, ob der Kopf oder Fuß zum Textkörper oder +zum Rand gehört. Insbesondere für den Kopf fehlt aber noch die Angabe, wie +hoch er denn eigentlich sein soll. Hierzu dienen die Optionen +\Option{headlines} und +\Option{headheight}\ChangedAt{v3.00}{\Package{typearea}}. + +Die Option \Option{headlines}\important{\Option{headlines}} setzt man dabei +auf die Anzahl der Kopfzeilen. Normalerweise arbeitet das +\Package{typearea}-Paket mit 1,25 Kopfzeilen. Dieser Wert stellt einen +Kompromiss dar. Zum einen ist er groß genug, um auch für eine unterstrichene +Kopfzeile (siehe \autoref{sec:maincls.pagestyle}) Platz zu bieten, zum anderen +ist er klein genug, um das Randgewicht nicht zu stark zu verändern, wenn mit +einer einfachen, nicht unterstrichenen Kopfzeile gearbeitet wird. Damit ist +der voreingestellte Wert in den meisten Standardfällen ein guter Wert. In +einigen Fällen will oder muss man aber die Kopfhöhe genauer den tatsächlichen +Erfordernissen anpassen. + +\begin{Example} + Angenommen, es soll ein Text mit einem zweizeiligen Kopf erstellt + werden. Normalerweise würde dies dazu führen, dass auf jeder Seite + eine Warnung »\texttt{overfull} \Macro{vbox}« von {\LaTeX} + ausgegeben würde. Um dies zu verhindern, wird das + \Package{typearea}-Paket angewiesen, einen entsprechenden Satzspiegel + zu berechnen: +\begin{lstcode} + \documentclass[a4paper]{article} + \usepackage[headlines=2.1]{typearea} +\end{lstcode} + Es ist auch wieder möglich und bei Verwendung einer \KOMAScript-Klasse + empfehlenswert, diese Option direkt an die Klasse zu übergeben: +\begin{lstcode} + \documentclass[headlines=2.1]{scrartcl} +\end{lstcode} + Befehle, mit denen dann der Inhalt der zweizeiligen Kopfzeile definiert + werden kann, sind in \autoref{cha:scrlayer-scrpage} zu finden. +\end{Example} + +In einigen Fällen ist es nützlich, wenn man die Kopfhöhe nicht in Zeilen, +sondern direkt als Längenwert angeben kann. Dies ist mit Hilfe der alternativ +verwendbaren Option \Option{headheight}\important{\Option{headheight}} +möglich. Als \PName{Höhe} sind alle Längen und Größen verwendbar, die \LaTeX{} +kennt. Es ist jedoch zu beachten, dass bei Verwendung einer \LaTeX-Länge wie +\Length{baselineskip} nicht deren Größe zum Zeitpunkt des Setzens der Option, +sondern zum Zeitpunkt der Berechnung des Satzspiegels und der Ränder +entscheidend ist. Außerdem\textnote{Achtung!} sollten \LaTeX-Längen wie +\Length{baselineskip} keinesfalls im optionalen Argument von +\DescRef{\LabelBase.cmd.documentclass} oder +\DescRef{\LabelBase.cmd.usepackage} verwendet werden. + +Bitte beachten Sie unbedingt\textnote{Achtung!}, dass diese Optionen bei +Verwendung einer der \KOMAScript-Klassen als Klassenoptionen oder per +\DescRef{\LabelBase.cmd.KOMAoptions} beziehungsweise +\DescRef{\LabelBase.cmd.KOMAoption} nach dem Laden der Klasse übergeben werden +müssen. Eine Änderung dieser Optionen nach dem Laden von \Package{typearea} +führt nicht\textnote{keine automatische Neuberechnung} zu einer automatischen +Neuberechnung des Satzspiegels. Vielmehr wirkt sich die Änderung erst bei der +nächsten Neuberechnung des Satzspiegels aus. Zur Neuberechnung des +Satzspiegels siehe Option +\hyperref[desc:\LabelBase.option.DIV.last]{\Option{DIV}} mit den Werten +\hyperref[desc:\LabelBase.option.DIV.last]{\PValue{last}} oder +\hyperref[desc:\LabelBase.option.DIV.current]{\PValue{current}} (siehe +\DescPageRef{typearea.option.DIV.last}) oder die Anweisung +\DescRef{\LabelBase.cmd.recalctypearea} (siehe +\DescPageRef{typearea.cmd.recalctypearea}).% +% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{footlines}{Zeilenanzahl}% + \OptionVName{footheight}{Höhe}% + \Length{footheight}% +\end{Declaration}% +\BeginIndex{}{Fuss=Fuß>Hoehe=Höhe}% +Wie schon für den Kopf fehlt aber noch die Angabe, wie hoch der Fuß sein +soll. Hierzu dienen die Optionen \Option{footlines} und +\Option{footheight}\ChangedAt{v3.12}{\Package{typearea}}. Allerdings ist die +Höhe des Fußes im Gegensatz zur Höhe des Kopfes keine Länge des \LaTeX-Kerns +selbst. Daher definiert \Package{typearea} zur Einführung eine neue Länge +\Length{footheight}\IndexLength[indexmain]{footheight}, falls diese noch nicht +existiert. Ob diese dann auch beispielsweise von Klassen und Paketen für die +Gestaltung von Kopf und Fuß verwendet wird, hängt von den verwendeten Klassen +und Paketen ab. Das \KOMAScript-Paket +\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% +\important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}}% +\IndexPackage{scrlayer-scrpage} berücksichtigt \Length{footheight} und +arbeitet somit aktiv mit \Package{typearea} zusammen. Die \KOMAScript-Klassen +berücksichtigen \Length{footheight} hingegen nicht, da sie ohne +Paketunterstützung nur Seitenstile mit einzeiligen Seitenfüßen anbieten. + +Die Option \Option{footlines}\important{\Option{footlines}} setzt man +vergleichbar zu \DescRef{\LabelBase.option.headlines} auf die Anzahl der +Fußzeilen. Normalerweise arbeitet das \Package{typearea}-Paket mit 1,25 +Fußzeilen. Dieser Wert stellt einen Kompromiss dar. Zum einen ist er groß +genug, um auch für eine über- und unterstrichene Fußzeile (siehe +\autoref{sec:maincls.pagestyle}) Platz zu bieten, zum anderen ist er klein +genug, um das Randgewicht nicht zu stark zu verändern, wenn mit einer +einfachen Fußzeile ohne Trennlinien gearbeitet wird. Damit ist der +voreingestellte Wert in den meisten Standardfällen ein guter Wert. In einigen +Fällen will oder muss man aber die Fußhöhe genauer den tatsächlichen +Erfordernissen anpassen. + +\begin{Example} + Angenommen, im Fuß soll eine zweizeilige Copyright-Angabe gesetzt + werden. Zwar gibt es in \LaTeX{} selbst keinen Test, ob der für den Fuß + vorgesehene Platz dafür genügend Raum bietet, die Überschreitung der + vorgesehenen Höhe resultiert aber wahrscheinlich in einer unausgeglichenen + Verteilung von Satzspiegeln und Rändern. Außerdem führt beispielsweise das + Paket \hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}% + \important{\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}}% + \IndexPackage{scrlayer-scrpage}, mit dem ein solcher Fuß\-in\-halt gesetzt + werden könnte, durchaus eine entsprechende Überprüfung durch und meldet + gegebenenfalls auch Überschreitungen. Daher ist es sinnvoll, die benötigte + größere Fußhöhe bereits bei der Berechnung des Satzspiegels anzugeben: +\begin{lstcode} + \documentclass[a4paper]{article} + \usepackage[footlines=2.1]{typearea} +\end{lstcode} + Es ist auch wieder möglich und bei Verwendung einer \KOMAScript-Klasse + empfehlenswert, diese Option direkt an die Klasse zu übergeben: +\begin{lstcode} + \documentclass[footlines=2.1]{scrartcl} +\end{lstcode} + Befehle, mit denen dann der Inhalt der zweizeiligen Fußzeile + definiert werden kann, sind in \autoref{cha:scrlayer-scrpage} zu finden. +\end{Example} + +In einigen Fällen ist es nützlich, wenn man die Fußhöhe nicht in Zeilen, +sondern direkt als Längenwert angeben kann. Dies ist mit Hilfe der alternativ +verwendbaren Option \Option{footheight}\important{\Option{footheight}} +möglich. Als \PName{Höhe} sind alle Längen und Größen verwendbar, die \LaTeX{} +kennt. Es ist jedoch zu beachten, dass bei Verwendung einer \LaTeX-Länge wie +\Length{baselineskip} nicht deren Größe zum Zeitpunkt des Setzens der Option, +sondern zum Zeitpunkt der Berechnung des Satzspiegels und der Ränder +entscheidend ist. Außerdem\textnote{Achtung!} sollten \LaTeX-Längen wie +\Length{baselineskip} keinesfalls im optionalen Argument von +\DescRef{\LabelBase.cmd.documentclass} oder +\DescRef{\LabelBase.cmd.usepackage} verwendet werden. + +Bitte beachten Sie unbedingt\textnote{Achtung!}, dass diese Optionen bei +Verwendung einer der \KOMAScript-Klassen als Klassenoptionen oder per +\DescRef{\LabelBase.cmd.KOMAoptions} beziehungsweise +\DescRef{\LabelBase.cmd.KOMAoption} nach dem Laden der Klasse übergeben werden +müssen. Eine Änderung dieser Optionen nach dem Laden von \Package{typearea} +führt nicht\textnote{keine automatische Neuberechnung} zu einer automatischen +Neuberechnung des Satzspiegels. Vielmehr wirkt sich die Änderung erst bei der +nächsten Neuberechnung des Satzspiegels aus. Zur Neuberechnung des +Satzspiegels siehe Option +\hyperref[desc:\LabelBase.option.DIV.last]{\Option{DIV}} mit den Werten +\hyperref[desc:\LabelBase.option.DIV.last]{\PValue{last}} oder +\hyperref[desc:\LabelBase.option.DIV.current]{\PValue{current}} (siehe +\DescPageRef{typearea.option.DIV.last}) oder die Anweisung +\DescRef{\LabelBase.cmd.recalctypearea} (siehe +\DescPageRef{typearea.cmd.recalctypearea}).% +\EndIndexGroup + + +\begin{Declaration} + \Macro{areaset}\OParameter{BCOR}\Parameter{Breite}\Parameter{Höhe} +\end{Declaration}% +Bis hier wurde nun eine Menge darüber erzählt, wie man einen guten +Satzspiegel\Index{Satzspiegel} für Standardanwendungen erstellt und wie das +\Package{typearea}-Paket dem Anwender diese Arbeit erleichtert, ihm aber +gleichzeitig Möglichkeiten der Einflussnahme bietet. Es gibt jedoch auch +Fälle, in denen der Textkörper eine bestimmte Größe exakt einhalten soll, ohne +dass dabei auf gute Satzspiegelkonstruktion oder auf weitere Nebenbedingungen +zu achten ist. Trotzdem sollen die Ränder so gut wie möglich verteilt und +dabei gegebenenfalls auch eine Bindekorrektur berücksichtigt werden. Das +\Package{typearea}-Paket bietet hierfür den Befehl \Macro{areaset}, dem man +neben der optionalen Bindekorrektur als Parameter die Breite und Höhe des +Textbereichs übergibt. Die Ränder und deren Verteilung werden dann automatisch +berechnet, wobei gegebenenfalls auch die Einstellungen der Paketoptionen +\DescRef{\LabelBase.option.headinclude} und +\DescRef{\LabelBase.option.footinclude} berücksichtigt werden. Die Optionen +\DescRef{\LabelBase.option.headlines}\IndexOption{headlines}\textnote{Achtung!}, +\DescRef{\LabelBase.option.headheight}\IndexOption{headheight}, +\DescRef{\LabelBase.option.footlines}\IndexOption{footlines} und +\DescRef{\LabelBase.option.footheight}\IndexOption{footheight} bleiben in +diesem Fall jedoch unberücksichtigt! Siehe dazu die weiterführenden +Informationen zu \DescRef{typearea-experts.cmd.areaset} auf +\DescPageRef{typearea-experts.cmd.areaset} in +\autoref{sec:typearea-experts.experimental}. + +Die Voreinstellung für \PName{BCOR} ist 0\Unit{pt}. Soll hingegen die aktuelle, +beispielsweise per Option \DescRef{\LabelBase.option.BCOR}\IndexOption{BCOR} +eingestellte Bindekorrektur erhalten bleiben, sollte man den symbolischen Wert +\PValue{current} als optionales Argument verwenden. + +\begin{Example} + Angenommen, ein Text auf A4-Papier soll genau die Breite von 60 + Zeichen in der Typewriter-Schrift haben und exakt 30 Zeilen je Seite + besitzen. Dann könnte mit folgender Präambel gearbeitet werden: +\begin{lstcode} + \documentclass[a4paper,11pt]{article} + \usepackage{typearea} + \newlength{\CharsLX}% Breite von 60 Zeichen + \newlength{\LinesXXX}% Hoehe von 30 Zeilen + \settowidth{\CharsLX}{\texttt{1234567890}} + \setlength{\CharsLX}{6\CharsLX} + \setlength{\LinesXXX}{\topskip} + \addtolength{\LinesXXX}{29\baselineskip} + \areaset{\CharsLX}{\LinesXXX} +\end{lstcode} + Der Faktor von 29 statt 30 ist damit begründet, dass die Grundlinie der + obersten Zeile bereits am obersten Rand des um \Macro{topskip} verringerten + Satzspiegels liegt, solange die Höhe der obersten Zeile kleiner als + \Macro{topskip} ist. Die oberste Zeile benötigt damit keine Höhe. Die + Unterlängen der untersten Zeile ragen dafür unter den Satzspiegel. + +\iffalse % Umbruchkorrekturtext + Soll stattdessen ein Gedichtband gesetzt werden, bei dem es nur + darauf ankommt, dass der Textbereich genau quadratisch mit einer + Seitenlänge von 15\Unit{cm} ist, wobei ein Binderand von + 1\Unit{cm} zu berücksichtigen ist, so kann dies wie folgt + erreicht werden: +% +\else % + Soll stattdessen ein Gedichtband mit quadratischem Textbereich der + Seitenlänge 15\Unit{cm} und einem Binderand von 1\Unit{cm} gesetzt + werden, so ist Folgendes möglich: +% +\fi +\begin{lstcode} + \documentclass{gedichte} + \usepackage{typearea} + \areaset[1cm]{15cm}{15cm} +\end{lstcode}% +\end{Example}% +\EndIndexGroup + + +\begin{Declaration} + \OptionValue{DIV}{areaset} +\end{Declaration}% +In\ChangedAt{v3.00}{\Package{typearea}} seltenen Fällen ist es nützlich, wenn +man den aktuell eingestellten Satzspiegel neu ausrichten lassen kann. Dies ist +mit der Option +\OptionValue{DIV}{areaset}\important{\OptionValue{DIV}{areaset}} möglich, +wobei \DescRef{\LabelBase.cmd.KOMAoptions}\PParameter{DIV=areaset} der +Anweisung +\begin{lstcode} + \areaset[current]{\textwidth}{\textheight} +\end{lstcode} +entspricht. Dasselbe Ergebnis erhält man auch, wenn +\OptionValueRef{\LabelBase}{DIV}{last} verwendet wird und der Satzspiegel +zuletzt per \DescRef{\LabelBase.cmd.areaset} eingestellt wurde.% +% +\EndIndexGroup + +\iftrue% Umbruchkorrekturtext: Alternativen +Wenn Sie konkrete Vorgaben bezüglich der Ränder zu erfüllen haben, ist +\Package{typearea} nicht geeignet. In diesem Fall ist die Verwendung des +Pakets +\Package{geometry}\IndexPackage{geometry}\important{\Package{geometry}} (siehe +\cite{package:geometry}) empfehlenswert. +% +\fi +\iffalse +% +Das Paket \Package{typearea} ist nicht dafür gedacht, bestimmte Randbreiten +einzustellen. Dafür ist das Paket \Package{geometry}\IndexPackage{geometry} +(siehe \cite{package:geometry}) empfehlenswert. +% +\fi + + +\section{Einstellung des Papierformats}% +\seclabel{paperTypes}% +\BeginIndexGroup + +Das Papierformat ist ein entscheidendes Grundmerkmal eines Dokuments. Wie +bereits bei der Vorstellung der unterstützten Satzspiegelkonstruktionen (siehe +\autoref{sec:typearea.basics} bis \autoref{sec:typearea.circleConstruction} ab +\autopageref{sec:typearea.basics}) +aufgezeigt, steht und fällt die Auf"|teilung der Seite und damit das gesamte +Dokumentlayout mit der Wahl des Papierformats. Während die +\LaTeX-Standardklassen auf einige wenige Formate festgelegt sind, unterstützt +\KOMAScript{} mit dem Paket \Package{typearea} selbst ausgefallene +Seitengrößen. + + +\begin{Declaration} + \OptionVName{paper}{Format} + \OptionVName{paper}{Ausrichtung} +\end{Declaration}% +Die Option \Option{paper}\ChangedAt{v3.00}{\Package{typearea}} ist das +zentrale Element der Formatauswahl\important[i]{% + \begin{tabular}[t]{@{}l@{}l@{}} + \KOption{paper} & \PValue{letter}, \\ + & \PValue{legal}, \\ + & \PValue{executive}, \\ + & \PValue{A0}, \PValue{A1}, \PValue{A2} \dots\\ + & \PValue{B0}, \PValue{B1}, \PValue{B2} \dots\\ + & \PValue{C0}, \PValue{C1}, \PValue{C2} \dots\\ + & \PValue{D0}, \PValue{D1}, \PValue{D2} \dots\end{tabular}} % +bei \KOMAScript. Als \PName{Format} wird dabei zunächst das amerikanische +\Option{letter}, \Option{legal} und \Option{executive} unterstützt. Darüber +hinaus sind die ISO-Formate der Reihen A, B, C und D möglich, also +beispielsweise \PValue{A4} oder -- klein geschrieben -- \PValue{a4}. + +Querformate\important{% + \begin{tabular}[t]{@{}l@{}l@{}} + \KOption{paper} & \PValue{landscape}, \\ + & \PValue{seascape} + \end{tabular}% +} werden dadurch unterstützt, dass man die Option ein weiteres Mal mit dem +Wert \PValue{landscape}\Index{Papier>Ausrichtung} oder +\PValue{seascape}\ChangedAt{v3.02c}{\Package{typearea}} angibt. Dabei +unterscheiden sich \PValue{landscape} und \PValue{seascape} nur darin, dass +das Programm \File{dvips} bei \PValue{landscape} um -90\Unit{\textdegree} +dreht, während bei \PValue{seascape} um +90\Unit{\textdegree} gedreht +wird. Hilfreich ist \PValue{seascape} also vor allem dann, wenn ein +PostScript-Anzeigeprogramm die Seiten im Querformat auf dem Kopf stellt. +Damit der Unterschied eine Rolle spielt, darf auch die nachfolgend +beschriebene Option \DescRef{\LabelBase.option.pagesize}% +\IndexOption{pagesize}\important{\DescRef{\LabelBase.option.pagesize}} nicht +deaktiviert sein. + +Zusätzlich kann das \PName{Format} auch in der Form +\PName{Breite}\texttt{:}\PName{Höhe}\ChangedAt{v3.01b}{\Package{typearea}}% +\important{\OptionVName{paper}{Breite\textup{:}Höhe}} beziehungsweise +\PName{Höhe}\texttt{:}\PName{Breite}\ChangedAt{v3.22}{\Package{typearea}}% +\important{\OptionVName{paper}{Höhe\textup{:}Breite}} angegeben +werden. Welcher Wert die \PName{Höhe} und welcher die \PName{Breite} ist, +richtet sich nach der Ausrichtung des Papiers. Mit +\OptionValue{paper}{landscape} oder \OptionValue{paper}{seascape} ist der +kleinere Wert die \PName{Höhe} und der größere Wert die \PName{Breite}. Mit +\OptionValue{paper}{portrait}\important{\OptionValue{paper}{portrait}} ist +dagegen der kleinere Wert die \PName{Breite} und der größere Wert die +\PName{Höhe}. + +Es\textnote{Achtung!} wird darauf hingewiesen, dass bis Version~3.01a der +erste Wert immer die \PName{Höhe} und der zweite Wert die \PName{Breite} +war. Dagegen war von Version~3.01b bis Version~3.21a der erste Wert immer die +\PName{Breite} und der zweite Wert immer die \PName{Höhe}. Dies ist +insbesondere dann zu beachten, wenn mit einer entsprechenden +Kompatibilitätseinstellung (siehe Option \DescRef{\LabelBase.option.version}% +\IndexOption{version}\important{\DescRef{\LabelBase.option.version}}, +\autoref{sec:typearea.compatibilityOptions}, +\DescPageRef{typearea.option.version}) gearbeitet wird. + +\begin{Example} + Angenommen, es soll eine Karteikarte im Format ISO-A8 quer bedruckt + werden. Dabei sollen die Ränder sehr klein gewählt werden. Außerdem + wird auf eine Kopf- und eine Fußzeile verzichtet. +\begin{lstcode} + \documentclass{article} + \usepackage[headinclude=false,footinclude=false,% + paper=A8,paper=landscape]{typearea} + \areaset{7cm}{5cm} + \pagestyle{empty} + \begin{document} + \section*{Definierte Papierformate} + letter, legal, executive, a0, a1 \dots\ % + b0, b1 \dots\ c0, c1 \dots\ d0, d1 \dots + \end{document} +\end{lstcode} + Haben die Karteikarten das Sonderformat (Breite:Höhe) + 5\Unit{cm}\,:\,3\Unit{cm}, so ist dies mit +\begin{lstcode} + \documentclass{article} + \usepackage[headinclude=false,footinclude=false, + paper=landscape,paper=5cm:3cm]{typearea} + \areaset{4cm}{2.4cm} + \pagestyle{empty} + \begin{document} + \section*{Definierte Papierformate} + letter, legal, executive, a0, a1 \dots\ % + b0, b1 \dots\ c0, c1 \dots\ d0, d1 \dots + \end{document} +\end{lstcode} + möglich. +\end{Example} + +In der Voreinstellung wird bei \KOMAScript{} mit A4-Papier in der Ausrichtung +portrait gearbeitet. Dies ist ein Unterschied\textnote{\KOMAScript{} + vs. Standardklassen} zu den Standardklassen, bei denen in der Voreinstellung +das amerikanische Format letter verwendet wird. + +Bitte beachten Sie unbedingt\textnote{Achtung!}, dass diese Option bei +Verwendung einer der \KOMAScript-Klassen als Klassenoption oder per +\DescRef{\LabelBase.cmd.KOMAoptions} beziehungsweise +\DescRef{\LabelBase.cmd.KOMAoption} nach dem Laden der Klasse übergeben werden +muss. Eine Änderung des Papierformats oder der Papierausrichtung mit Hilfe +der Anweisung \DescRef{\LabelBase.cmd.KOMAoptions}\textnote{keine automatische + Neuberechnung} oder \DescRef{\LabelBase.cmd.KOMAoption} nach dem Laden von +\Package{typearea} führt nicht zu einer automatischen Neuberechnung des +Satzspiegels. Vielmehr wirkt sich die Änderung erst bei der nächsten +Neuberechnung des Satzspiegels aus. Zur Neuberechnung des Satzspiegels siehe +Option \hyperref[desc:\LabelBase.option.DIV.last]{\Option{DIV}} mit den Werten +\hyperref[desc:\LabelBase.option.DIV.last]{\PValue{last}} oder +\hyperref[desc:\LabelBase.option.DIV.current]{\PValue{current}} (siehe +\DescPageRef{typearea.option.DIV.last}) oder die Anweisung +\DescRef{\LabelBase.cmd.recalctypearea} (siehe +\DescPageRef{typearea.cmd.recalctypearea}).% +\EndIndexGroup + + +\begin{Declaration} + \OptionVName{pagesize}{Ausgabetreiber} +\end{Declaration}% +\begin{Explain}% + Die oben genannten Mechanismen zur Auswahl des Papierformats haben nur + insofern einen Einfluss auf die Ausgabe, als interne {\LaTeX}-Maße gesetzt + werden. Das Paket \Package{typearea} verwendet diese dann bei der + Auf"|teilung der Seite in Ränder und Textbereich. Die Spezifikation des + DVI-Formats\Index{DVI} sieht aber an keiner Stelle Angaben zum Papierformat + vor. % + \iffree{% + Wird direkt aus dem DVI-Format in eine Low-Level-Druckersprache wie PCL% + \iftrue% Umbruchkorrektur + \footnote{PCL ist eine Familie von Druckersprachen, die HP für seine + Tinten- und Laserdrucker verwendet.}% + \fi \ oder ESC/P2% + \iftrue% Umbruchkorrektur + \footnote{ESC/P2 ist die Druckersprache, die EPSON für seine 24-Nadel- und + ältere Tinten- oder Laserdrucker benutzt.}% + \fi \ beziehungsweise ESC/P-R% + \iftrue% Umbruchkorrektur + \footnote{ESC/P-R ist die Druckersprache, die EPSON aktuell für Tinten- + und Laserdrucker benutzt.}% + \fi \ ausgegeben, spielt dies normalerweise keine Rolle% + }{% + In früheren Zeiten, als DVI zum Ausruck noch direkt in + Low-Level-Druckersprachen übertragen wurde, spielte dies keine Rolle% + }, da auch bei diesen Ausgaben der 0-Bezugspunkt wie bei DVI links oben + liegt. \iffree{Wird aber}{Heutzutage wird aber meist} in Sprachen wie + PostScript\Index{PostScript} oder PDF\Index{PDF} übersetzt, bei denen der + 0-Bezugspunkt an anderer Stelle liegt und außerdem das Papierformat in der + Ausgabedatei angegeben werden sollte\iffree{, so}{. Dabei} fehlt diese + Information. Als Lösung des Problems verwendet der entsprechende Treiber + eine voreingestellte Papiergröße, die der Anwender entweder per Option oder + durch entsprechende Angabe in der {\TeX}-Quelldatei verändern kann. Bei + Verwendung des DVI-Treibers \File{dvips} oder \File{dvipdfm} kann diese + Angabe in Form einer \Macro{special}-Anweisung erfolgen. Bei Verwendung von + {pdf\TeX}, {lua\TeX}, {\XeTeX} oder {V\TeX} werden deren + Papierformat-Längen entsprechend gesetzt.% +\end{Explain} +Mit der Option \Option{pagesize} kann eingestellt werden, für welchen +Ausgabetreiber die Papiergröße in das Ausgabedokument geschrieben wird. Die +unterstützten Ausgabetreiber sind \autoref{tab:typearea.outputdriver} \iffalse +auf \autopageref{tab:typearea.outputdriver}\fi zu +entnehmen. Voreingestellt\ChangedAt{v3.17}{\Package{typearea}} ist +\Option{pagesize}. Diese Verwendung der Option ohne Angabe eines Wertes +entspricht \OptionValue{pagesize}{auto}. +% +\begin{table} + \caption{Ausgabetreiber für Option \OptionVName{pagesize}{Ausgabetreiber}} + \begin{desctabular} + \pventry{auto}{Falls die pdf\TeX-spezifischen Register + \Macro{pdfpagewidth}\IndexLength{pdfpagewidth} und + \Macro{pdfpageheight}\IndexLength{pdfpageheight} oder die + lua\TeX-spezifischen Register \Macro{pagewidth}\IndexLength{pagewidth} + und \Macro{pageheight}\IndexLength{pageheight} vorhanden sind, wird + der Ausgabetreiber \PValue{pdftex} aktiviert. Zusätzlich wird auch der + Ausgabetreiber \PValue{dvips} + verwendet. Diese Einstellung ist grundsätzlich auch für \XeTeX{} + geeignet.% + \IndexOption{pagesize~=\textKValue{auto}}}% + \pventry{automedia}{Dies entspricht dem Ausgabetreiber + \PValue{auto}. Allerdings werden zusätzlich auch noch die + \mbox{V\TeX}-spezifischen Register + \Macro{mediawidth}\IndexLength{mediawidth} und + \Macro{mediaheight}\IndexLength{mediaheight} gesetzt, falls diese + definiert sind.% + \IndexOption{pagesize~=\textKValue{automedia}}}% + \entry{\PValue{false}, \PValue{no}, \PValue{off}}{% + Die Papiergröße wird nicht an den Ausgabetreiber + gemeldet.% + \IndexOption{pagesize~=\textKValue{false}}}% + \pventry{dvipdfmx}{\ChangedAt{v3.05a}{\Package{typearea}}Die Papiergröße + wird als + \Macro{special}\PParameter{pagesize=\PName{Breite},\PName{Höhe}} in die + DVI-Datei geschrieben. Der Name des Ausgabetreibers kommt daher, dass + das Programm \File{dvipdfmx} eine Pa\-pier\-for\-mat\-um\-schal\-tung + über diese Anweisung auch innerhalb des Dokuments erlaubt.% + \IndexOption{pagesize~=\textKValue{dvipdfmx}}}% + \pventry{dvips}{Bei Verwendung innerhalb der Dokumentpräambel wird die + Papiergröße über + \Macro{special}\PParameter{pagesize=\PName{Breite},\PName{Höhe}} in das + Dokument geschrieben. Da das Programm \File{dvips} keine + Pa\-pier\-for\-mat\-um\-schal\-tung innerhalb des Dokuments unterstützt, + wird bei Bedarf im Dokument ein recht unsauberer Hack verwendet, um die + Umschaltung nach Möglichkeit dennoch zu + erreichen. Pa\-pier\-for\-mat\-um\-schal\-tung nach der Dokumentprämbel + bei gleichzeitiger Verwendung des Ausgabetreibers \PValue{dvips} + erfolgen daher auf eigene Gefahr!% + \IndexOption{pagesize~=\textKValue{dvips}}}% + \entry{\PValue{pdftex}, \PValue{luatex}}{% + \ChangedAt{v3.20}{\Package{typearea}}Die Papiergröße + wird über die pdf\TeX-spezifischen Register + \Macro{pdfpagewidth}\IndexLength{pdfpagewidth} und + \Macro{pdfpageheight}\IndexLength{pdfpageheight} oder die + lua\TeX-spezifischen Register \Macro{pagewidth}\IndexLength{pagewidth} + und \Macro{pageheight}\IndexLength{pageheight} gesetzt. Dies ist + auch jederzeit innerhalb des Dokuments problemlos + möglich.% + \IndexOption{pagesize~=\textKValue{pdftex}}% + \IndexOption{pagesize~=\textKValue{luatex}}}% + \end{desctabular} + \label{tab:typearea.outputdriver} +\end{table} + +\begin{Example} + Angenommen, es soll ein Dokument sowohl als DVI-Datei verwendet + werden, als auch eine Online-Version im PDF-Format erstellt + werden. Dann könnte die Präambel beispielsweise so beginnen: + \begin{lstcode}[% + aboveskip=.5\baselineskip plus .1\baselineskip minus .1\baselineskip,% + belowskip=.4\baselineskip plus .1\baselineskip minus .1\baselineskip] + \documentclass{article} + \usepackage[paper=A4,pagesize]{typearea} +\end{lstcode} + Wird nun für die Bearbeitung {pdf\TeX} verwendet \emph{und} die + PDF-Ausgabe aktiviert, so werden die beiden Spezialgrößen + \Macro{pdfpagewidth} und \Macro{pdfpageheight} entsprechend gesetzt. + Wird jedoch eine DVI-Datei erzeugt -- egal ob mit {\LaTeX} oder + {pdf\LaTeX} --, so wird ein \Macro{special} an den Anfang dieser + Datei geschrieben. +\end{Example}% +\iffree{% Die Empfehlung ist eigentlich überholt. Wer derart alte Versionen + % von typearea verwendet, ist selbst schuld. +Es wird empfohlen\textnote{Achtung!}, die Option \Option{pagesize} immer +anzugeben, weil frühere Versionen von \Package{typearea} sie noch nicht als +Voreinstellung gesetzt haben. In der Regel ist dabei die Methode ohne +\PName{Ausgabetreiber} oder mit \PValue{auto} oder \PValue{automedia} +günstig.% +}{% + \vskip-1\ht\strutbox plus .75\ht\strutbox% Wegen Beispiel am Ende der Erklärung +} +\EndIndexGroup +% +\EndIndexGroup + +% Umbruchverbesserung: +%\iffree{}{\clearpage} +\section{Tipps} +\seclabel{tips} + +Insbesondere für die Erstellung von schriftlichen Arbeiten während des +Studiums findet man häufig Vorschriften\textnote{Satzvorschriften + vs. gute~Typografie}, die einer typografischen Begutachtung nicht nur in +keiner Weise standhalten, sondern massiv gegen alle Regeln der Typografie +verstoßen. Ursache für solche Regeln ist oft typografische Inkompetenz +derjenigen, die sie herausgeben. Manchmal ist die Ursache auch im +Ausgangspunkt begründet, nämlich der Schreibmaschine. Mit einer +Schreibmaschine oder einer Textverarbeitung von 1980 ist es +ohne +erheblichen Aufwand kaum möglich, typografisch perfekte Ergebnisse zu +erzielen. Also wurden einst Vorschriften erlassen, die leicht erfüllbar +schienen und dem Korrektor trotzdem entgegenkommen. Dazu zählen dann +Randeinstellungen, die für einseitigen Druck mit einer Schreibmaschine zu +brauchbaren Zeilenlängen führen. Um nicht extrem kurze Zeilen zu erhalten, die +durch Flattersatz zudem verschlimmert werden, werden die Ränder schmal +gehalten und für Korrekturen stattdessen ein großer Durchschuss in Form von +eineinhalbzeiligem Satz vorgeschrieben. Bevor moderne +Textverarbeitungssysteme verfügbar wurden, wäre -- außer mit {\TeX} -- +einzeiliger Satz die einzige Alternative gewesen. Dabei wäre dann selbst das +Anbringen von Korrekturzeichen schwierig geworden. Als die Verwendung von +Computern für die Erstellung schriftlicher Arbeiten üblicher wurde, hat sich +manches Mal auch der Spieltrieb des einen oder anderen Studenten gezeigt, der +durch Verwendung einer Schmuckschrift seine Arbeit aufpeppen und so eine +bessere Note mit weniger Einsatz herausschinden wollte. Nicht bedacht hat er +dabei, dass solche Schriften schlechter zu lesen und deshalb für den Zweck +ungeeignet sind. Damit hielten zwei Brotschriften Einzug in die Vorschriften, +die weder zusammenpassen noch im Falle von Times wirklich gut geeignet +sind. Times ist eine relativ enge Schrift, die Anfang des 20.~Jahrhunderts +speziell für schmale Spalten im englischen Zeitungssatz entworfen wurde. In +modernen Schnitten ist dies etwas entschärft. Dennoch passt die häufig +vorgeschriebene Times meist nicht zu den gleichzeitig gegebenen Randvorgaben. + +{\LaTeX} setzt bereits von sich aus mit ausreichendem Durchschuss. +Gleichzeitig sind die Ränder bei sinnvollen Zeilenlängen groß genug, um Platz +für Korrekturen zu bieten. Dabei wirkt die Seite trotz einer Fülle von Text +großzügig angelegt. + +Oft sind die typografisch mehr als fragwürdigen Satzvorschriften mit {\LaTeX} +auch außerordentlich schwierig umzusetzen. So kann eine feste Anzahl von +»Anschlägen« nur dann eingehalten werden, wenn keine proportionale Schrift +verwendet wird. Es gibt nur wenige gute nichtproportionale Schriften. +\iffalse % Umbruchkorrektur +Kaum ein Text, der mit einer derartigen Schrift gesetzt ist, wirkt wirklich +gut. So wird häufig % +\else +Häufig wird % +\fi % +versucht, durch ausladende Serifen beispielsweise beim kleinen +»i« oder »l« die unterschiedliche Breite der Zeichen auszugleichen. Dies kann +nicht funktionieren. Im Ergebnis wirkt der Text unruhig und +zerrissen. Außerdem verträgt sich eine solche Schrift kaum mit dem im +deutschen Sprachraum üblichen und allgemein vorzuziehenden Blocksatz. Gewisse +Vorgaben können daher bei Verwendung von {\LaTeX} nur ignoriert oder großzügig +ausgelegt werden, etwa indem man »60~Anschläge pro Zeile« nicht als feste, +sondern als durchschnittliche oder maximale Angabe interpretiert. + +Wie ausgeführt, sind Satzvorschriften meist dazu gedacht, ein brauchbares +Ergebnis zu erhalten, auch wenn der Ausführende selbst nicht weiß, was dabei +zu beachten ist. Brauchbar bedeutet häufig: lesbar und korrigierbar. Nach +meiner Auf"|fassung wird ein mit {\LaTeX} und dem \Package{typearea}-Paket +gesetzter Text bezüglich des Satzspiegels diesen Anforderungen von vornherein +gerecht. Wenn Sie also mit Vorschriften konfrontiert sind, die offensichtlich +erheblich davon abweichen, so empfehle ich, dem Betreuer einen Textauszug +vorzulegen und nachzufragen, ob es gestattet ist, die Arbeit trotz der +Abweichungen in dieser Form zu liefern. Gegebenenfalls kann durch Veränderung +der Option +\DescRef{\LabelBase.option.DIV}\important{\DescRef{\LabelBase.option.DIV}} der +Satzspiegel moderat angepasst werden. Von der Verwendung von +\DescRef{\LabelBase.cmd.areaset} zu diesem Zweck rate ich jedoch +ab. Schlimmstenfalls verwenden Sie das nicht zu {\KOMAScript} gehörende +\Package{geometry}-Paket\important{\Package{geometry}}\IndexPackage{geometry} +(siehe \cite{package:geometry}) oder verändern Sie die Satzspiegelparameter +von {\LaTeX} selbst. Die von \Package{typearea} ermittelten Werte finden Sie +in der \File{log}-Datei Ihres Dokuments. Mit Hilfe von Option +\DescRef{typearea-experts.option.usegeometry}% +\important{\DescRef{typearea-experts.option.usegeometry}}, die Sie in +\autoref{part:forExperts} finden, kann außerdem die Zusammenarbeit von +\Package{typearea} und \Package{geometry} verbessert werden. Damit sollten +moderate Anpassungen möglich sein. Achten Sie jedoch unbedingt darauf, dass +die Proportionen des Textbereichs mit denen der Seite unter Berücksichtigung +der Bindekorrektur annähernd übereinstimmen. + +Sollte es unbedingt erforderlich sein, den Text eineinhalbzeilig zu setzen, so +definieren Sie keinesfalls \Macro{baselinestretch} um. Dieses Vorgehen wird +zwar allzu häufig empfohlen, ist aber seit der Einführung von {\LaTeXe} im +Jahre 1994 obsolet. Verwenden Sie schlimmstenfalls den Befehl +\Macro{linespread}. Ich empfehle das Paket +\Package{setspace}\important{\Package{setspace}}\IndexPackage{setspace}, das +nicht zu {\KOMAScript} gehört (siehe \cite{package:setspace}). Auch sollten +Sie \Package{typearea} nach der Umstellung des Zeilenabstandes den Satzspiegel +für diesen Abstand berechnen lassen, jedoch für den Titel, besser auch für die +Verzeichnisse -- sowie das Literaturverzeichnis und den Index -- wieder auf +normalen Satz umschalten. Näheres dazu finden Sie bei der Erklärung zu +\OptionValueRef{\LabelBase}{DIV}{current}% +\important{\OptionValueRef{\LabelBase}{DIV}{current}}. + +Das \Package{typearea}-Paket berechnet auch bei der Option +\OptionValueRef{\LabelBase}{DIV}{calc}% +\important{\OptionValueRef{\LabelBase}{DIV}{calc}} einen sehr großzügigen +Textbereich. Viele konservative Typografen werden feststellen, dass die +resultierende Zeilenlänge noch zu groß ist. Der berechnete \Var{DIV}-Wert ist +ebenfalls in der \File{log}-Datei zum jeweiligen Dokument zu finden. Sie +können also leicht nach dem ersten \LaTeX-Lauf einen kleineren Wert wählen. + +Nicht\textnote{Was ist besser?} selten wird mir die Frage gestellt, warum ich +eigentlich kapitelweise auf einer Satzspiegelberechnung herumreite, während es +sehr viel einfacher wäre, nur ein Paket zur Verfügung zu stellen, mit dem man +die Ränder wie bei einer Textverarbeitung einstellen kann. Oft wird auch +behauptet, ein solches Paket wäre ohnehin die bessere Lösung, da jeder selbst +wisse, wie gute Ränder zu wählen seien, und die Ränder von {\KOMAScript} wären +ohnehin nicht gut. Ich erlaube mir zum Abschluss dieses Kapitels ein passendes +Zitat von Hans Peter Willberg und Friedrich Forssmann, zwei der angesehensten +Typografen der Gegenwart (siehe \cite{TYPO:ErsteHilfe}): +\begin{quote} + \phantomsection\label{sec:typearea.tips.cite}% + \textit{Das\textnote{Zitat!} Selbermachen ist längst üblich, die Ergebnisse + oft fragwürdig, weil Laien-Typografen nicht sehen, was nicht stimmt und + nicht wissen können, worauf es ankommt. So gewöhnt man sich an falsche und + schlechte Typografie.} [\dots] \textit{Jetzt könnte der Einwand kommen, + Typografie sei doch Geschmackssache. Wenn es um Dekoration ginge, könnte + man das Argument vielleicht gelten lassen, da es aber bei Typografie in + erster Linie um Information geht, können Fehler nicht nur stören, sondern + sogar Schaden anrichten.} +\end{quote} +% +\EndIndexGroup + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "../guide" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/plength.dtx b/macros/latex/contrib/koma-script/source-doc/plength.dtx new file mode 100644 index 0000000000..f0006db25f --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/plength.dtx @@ -0,0 +1,1325 @@ +% \CheckSum{0} +% \iffalse +% ====================================================================== +% plength.dtx +% Copyright (c) Markus Kohm, 2005-2017 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% plength.dtx +% Copyright (c) Markus Kohm, 2005-2017 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Generation of plength figures at scrlttr2 chapter of the KOMA-Script guide +% Maintained by Markus Kohm +% Original source by Stephan Hennig +% +% --------------------------------------------------------------------------- +% +% Erzeugung der plength Abbildungen im scrlttr2-Kapitel der +% KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% Originalquellen von Stephan Hennig +% +% ============================================================================ +%<*ins> +\def\batchfile{plength.dtx} +\input docstrip.tex + +\ifx\askonceonly\undefined\else\askonceonly\fi + +\preamble +\endpreamble + +\postamble +\endpostamble + +\keepsilent +\askforoverwritefalse + +\generate{% + \file{plength.drv}{\from{plength.dtx}{driver}}% + \file{plenDIN.mp}{\from{plength.dtx}{main,DIN,length,terms,\languagename}}% + \file{varDIN.mp}{\from{plength.dtx}{main,DIN,variables,\languagename}}% +% Ebenfalls enthalten, derzeit aber nicht verwendet: +% \file{plenSN.mp}{\from{plength.dtx}{main,SN,length,\languagename}}% +% \file{varSN.mp}{\from{plength.dtx}{main,SN,variables,\languagename}}% + \file{plinc.mp}{\from{plength.dtx}{include}}% + \file{pltex-vars.mp}{\from{plength.dtx}{tex}}% + \file{pltex-terms.mp}{\from{plength.dtx}{tex,terms}}% + \file{pllcoDIN.mp}{\from{plength.dtx}{DIN,values}}% +% Ebenfalls enthalten, derzeit aber nicht verwendet: +% \file{pllcoSN.mp}{\from{plength.dtx}{SN,values}}% +} + +\csname endinput\endcsname +%</ins> +% +%<*driver> +% \begin{macrocode} +\ProvidesFile{plength.drv}[2014/02/28 plength MetaPost graphics] +\documentclass{ltxdoc} +\usepackage[ngerman]{babel} +\usepackage[latin1]{inputenc} +\begin{document} + \DocInput{plength.dtx} +\end{document} +% \end{macrocode} +%</driver> +% \fi +% +% \title{MetaPost-Grafiken für das Briefkapitel} +% \author{Stephan Hennig und Markus Kohm} +% \date{2010-02-09} +% \maketitle +% +% Es werden diverse Dateien erzeugt: \texttt{plenDINde.mp}, +% \texttt{varDINde.mp}, \texttt{plenSNde.mp}, \texttt{varSNde.mp}, \dots Diese +% mit +% \begin{flushleft} +% \texttt{mpost --tex=latex} \meta{mp-file} +% \end{flushleft} +% bearbeitet ergibt \texttt{1}-Dateien. Diese können als EPS-Dateien +% geladen werden. Es kann aber auch mit +% \begin{flushleft} +% \texttt{mptopdf} \meta{1-Datei} +% \end{flushleft} +% eine PDF-Datei erzeugt werden. +% +% Anpassungen werden ausschließlich in der \texttt{dtx}-Datei vorgenommen! +% Wesentlich ist dabei der Abschnitt \texttt{main}. +% +%<*main> +% \section{Der Abschnitt \texttt{main}} +% Diese Abschnitt erzeugt die Haupttreiberdateien, die dann mit \texttt{mpost} +% bearbeitet werden. +% +% Hinweise zu den Variablen: +% \begin{itemize} +% \item \texttt{input pllcoDIN} oder \texttt{input pllcoSN}\hfill\\ +% legt fest, ob die Maße für Briefe nach DIN oder SN +% geladen werden. Damit kann gewählt werden, welches Layout +% verdeutlicht werden soll. Sollen die Längen eingezeichnet werden, +% ist pllcoDIN zu verwenden. +% \item \texttt{grafikhoehe}\hfill\\ +% legt die Höhe der Ausgabedatei fest. +% \item \texttt{strichstaerke}\hfill\\ +% bestimmt die Stiftbreite, die zum Zeichnen des +% Briefbogens, der Faltmarken und der From-Rule benutzt wird. +% \item \texttt{framestrichstaerke}\hfill\\ +% bestimmt die Stiftbreite zum Zeichnen der +% Element-Rahmen (nicht der Hilfsrahmen). +% \item \texttt{hilfsstrichstaerke}\hfill\\ +% bestimmt die Stiftbreite zum Zeichnen der +% Bemaßung und der Hilfsrahmen. +% \item \texttt{tickhoehe}\hfill\\ +% legt die Höhe der vertikalen Linien horizontaler +% Bemaßung fest (Makro hmeasure). Die Maßlinie wird auf halber Höhe +% von tickhoehe gezeichnet. Für die Makros vmeasure und dmeasure gilt +% ähnliches. In dmeasure wird jedoch ein Vielfaches von tickhoehe +% verwendet. +% \item \texttt{framed} und \texttt{filled}\hfill\\ +% legen fest, ob die Elemente mit einem Rahmen +% versehen bzw. gefüllt werden sollen. +% \item \texttt{drawcolor}\hfill\\ +% legt die Farbe von Linien und Text fest. +% \item \texttt{fillcolor}\hfill\\ +% legt die Füllfarbe fest, falls filled=true ist. +% \item \texttt{latexlengths}\hfill\\ +% legt fest, ob die unveränderlichen LaTeX-Längen +% angezeigt werden sollen. +% \item \texttt{latexlengthcolor}\hfill\\ +% legt die Farbe fest, mit der LaTeX-Längen +% gezeichnet werden. +% \item \texttt{language}\hfill\\ +% legt die Sprache der Beschreibung fest. +% \item \texttt{ahlength}\hfill\\ +% Da foldmarkhpos sehr klein ist, können sich bei kleinen Grafiken +% die Pfeilspitzen der Bemaßung berühren. Um das zu verhindern, kann +% mit der MetaPost-internen Variablen ahlength die Pfeillänge +% verringert werden. +% \end{itemize} +% +% \begin{macrocode} +prologues:=1; +%<DIN>input pllcoDIN +%<SN>input pllcoSN +input plinc +%<!terms>input pltex-vars +%<terms>input pltex-terms +beginfig(1); + numeric grafikhoehe; + numeric tickhoehe; + numeric strichstaerke, framestrichstaerke, hilfsstrichstaerke; + boolean framed, filled, latexlengths; + color drawcolor, fillcolor, latexlengthcolor; + string language; + grafikhoehe := 167mm; + strichstaerke := 0.6pt; + framestrichstaerke := 0.2pt; + hilfsstrichstaerke := 0.2pt; + tickhoehe := 10pt; + framed := true; + filled := true; + drawcolor := black; + fillcolor := .8white; + latexlengths := true; + latexlengthcolor := .4white; +%<ngerman> language := "de"; +%<english> language := "en"; + ahlength := 0.7mm; + picture description[], plength[], latexlength[]; + transform T; + T = identity reflectedabout ((0pt,.5*paperheight), + (paperwidth,.5*paperheight)) scaled (grafikhoehe/paperheight); +%<length> lengths; writedescription(language); +%<variables> describe(language); +endfig +end +% \end{macrocode} +%</main> +% +%<*tex> +% \section{Der Abschnitt \texttt{tex}} +% +% Dieser Abschnitt enthält sozusagen den \TeX{}-Part der Grafiken. +% Hier werden beispielsweise die Fonts festgelegt. +% +% \begin{macrocode} +verbatimtex +%<<LATEX +%&latex +%LATEX +\documentclass[fontsize=8pt]{scrartcl} +\usepackage[latin1]{inputenc} +\usepackage[ngerman]{babel} +\usepackage[T1]{fontenc} +\IfFileExists{scrnonfree.tex}{% + \usepackage{charter}% + \usepackage[scaled=0.87]{luximono}% + \usepackage[scaled=0.92]{frutiger}% +}{% + \usepackage{lmodern}% +} +\newcommand*{\plength}{\fontsize{7}{8}\sffamily} +\newcommand*{\descr}{\fontsize{7}{8}\itshape} +\newcommand*{\latexlength}{\fontsize{7}{8}\ttfamily} +\newcommand*{\Macro}[1]{{\fontsize{7}{8}\ttfamily + \expandafter\string\csname #1\endcsname}} +\newcommand*{\Parameter}[1]{{\fontsize{7}{8}\ttfamily\itshape\{#1\}}} +\newcommand*{\PParameter}[1]{{\fontsize{7}{8}\ttfamily\{#1\}}} +\newcommand*{\Variable}[1]{{\fontsize{7}{8}\ttfamily\bfseries #1}} +\newcommand*{\Multi}[1]{% + {\def\and{, }% + \begin{tabular}{@{}l@{}} + #1 + \end{tabular} + }% +} +\begin{document} +etex + +def deflengths = +begingroup + plength[1]=btex \plength{}backaddrheight etex; + plength[2]=btex \plength{}bfoldmarkvpos etex; + plength[3]=btex \plength{}firstfootvpos etex; + plength[4]=btex \plength{}firstfootwidth etex; + plength[5]=btex \plength{}firstheadvpos etex; + plength[6]=btex \plength{}firstheadwidth etex; + plength[7]=btex \plength{}foldmarkhpos etex; + plength[8]=btex \plength{}locwidth\strut etex; + plength[9]=btex \plength{}refaftervskip etex; + plength[10]=btex \plength{}refvpos etex; + plength[11]=btex \plength{}refwidth etex; + plength[12]=btex \plength{}sigbeforevskip etex; + plength[13]=btex \plength{}sigindent etex; + plength[14]=btex \plength{}specialmailindent etex; + plength[15]=btex \plength{}specialmailrightindent etex; + plength[16]=btex \plength{}tfoldmarkvpos etex; + plength[17]=btex \plength{}toaddrhpos\strut etex; + plength[18]=btex \plength{}toaddrindent\strut etex; + plength[19]=btex \plength{}toaddrvpos etex; + plength[20]=btex \plength{}toaddrwidth\strut etex; + plength[21]=btex \plength{}toaddrheight etex; + plength[22]=btex \plength{}refhpos etex; + plength[23]=btex \plength{}fromrulewidth etex; + plength[24]=btex \plength{}-toaddrhpos\strut etex; + plength[25]=btex \plength{}lochpos etex; + plength[26]=btex \plength{}-lochpos etex; + plength[27]=btex \plength{}locvpos etex; + plength[28]=btex \plength{}locheight etex; + plength[29]=btex \plength{}subjectaftervskip etex; + plength[30]=btex \plength{}+subjectbeforevskip etex; + plength[31]=btex \plength{}firstfoothpos etex; + plength[32]=btex \plength{}-firstfoothpos etex; + plength[33]=btex \plength{}firstheadhpos etex; + plength[34]=btex \plength{}-firstheadhpos etex; +endgroup +enddef; + +def deflatexlengths = +begingroup + latexlength[1] = btex \latexlength{}\string\baselineskip etex; + latexlength[2] = btex \latexlength{}2\string\baselineskip etex; + latexlength[3] = btex \latexlength{}\string\textwidth etex; + latexlength[4] = btex \latexlength{}$\geq$\string\footskip etex; +endgroup +enddef; + + +def defdescriptionde = +begingroup +%<*terms> + description[1]=btex \descr{}Briefkopf etex; + description[2]=btex \descr{}Brief"|fuß{} etex; + description[3]=btex \descr{}Rücksendeadresse etex; + description[4]=btex \descr{}Versandart etex; + description[5]=btex \descr{}Empfängeradresse etex; + description[6]=btex \descr{}Geschäftszeile etex; + description[7]=btex \descr{}Titel etex; + description[8]=btex \descr{}Betreff etex; + description[9]=btex \descr{}Anrede etex; + description[10]=btex \descr{}Brieftext etex; + description[11]=btex \descr{}Grußfloskel etex; + description[12]=btex \descr{}Signatur etex; + description[13]=btex \descr{}\begin{tabular}{@{}c@{}}Absender-\\ergänzung\end{tabular} etex; +%</terms> +%<*!terms> + description[1]=btex \Multi{\Variable{firsthead}\\ + \Variable{fromname}\and + \Variable{fromaddress}\and + \Variable{fromphone}\and + \Variable{fromfax}\and + \Variable{fromemail}\and + \Variable{fromurl}} etex; + description[2]=btex \Variable{firstfoot} etex; + description[3]=btex \Variable{backaddress} etex; + description[4]=btex \Variable{specialmail} etex; + description[5]=btex \Macro{begin}\PParameter{letter}\Parameter{Name und Adresse} etex; + description[6]=btex \Multi{\Variable{yourref}\and + \Variable{yourmail}\and + \Variable{myref}\and + \Variable{customer}\and + \Variable{invoice}\and + \Variable{place}\and + \Variable{date}} etex; + description[7]=btex \Variable{title} etex; + description[8]=btex \Variable{subject} etex; + description[9]=btex \Macro{opening}\Parameter{Anrede} etex; + description[10]=btex \descr{}Brieftext etex; + description[11]=btex \Macro{closing}\Parameter{Floskel} etex; + description[12]=btex \Variable{signature} etex; + description[13]=btex \Variable{location} etex; +%</!terms> +endgroup +enddef; + +def defdescriptionen = +begingroup +%<*terms> + description[1]=btex \descr{}letterhead etex; + description[2]=btex \descr{}letter footer etex; + description[3]=btex \descr{}return address etex; + description[4]=btex \descr{}mode of dispatch etex; + description[5]=btex \descr{}addressee etex; + description[6]=btex \descr{}reference fields line etex; + description[7]=btex \descr{}title etex; + description[8]=btex \descr{}subject etex; + description[9]=btex \descr{}opening etex; + description[10]=btex \descr{}letter body etex; + description[11]=btex \descr{}closing etex; + description[12]=btex \descr{}signature etex; + description[13]=btex \descr{}\begin{tabular}{@{}c@{}}supplemental\\data\end{tabular} etex; +%</terms> +%<*!terms> + description[1]=btex \Multi{\Variable{firsthead}\\ + \Variable{fromname}\and + \Variable{fromaddress}\and + \Variable{fromphone}\and + \Variable{fromfax}\and + \Variable{fromemail}\and + \Variable{fromurl}} etex; + description[2]=btex \Variable{firstfoot} etex; + description[3]=btex \Variable{backaddress} etex; + description[4]=btex \Variable{specialmail} etex; + description[5]=btex \Macro{begin}\PParameter{letter}\Parameter{addressee} etex; + description[6]=btex \Multi{\Variable{yourref}\and + \Variable{yourmail}\and + \Variable{myref}\and + \Variable{customer}\and + \Variable{invoice}\and + \Variable{place}\and + \Variable{date}} etex; + description[7]=btex \Variable{title} etex; + description[8]=btex \Variable{subject} etex; + description[9]=btex \Macro{opening}\Parameter{opening term} etex; + description[10]=btex \descr{}letter body etex; + description[11]=btex \Macro{closing}\Parameter{closing term} etex; + description[12]=btex \Variable{signature} etex; + description[13]=btex \Variable{location} etex; +%</!terms> +endgroup +enddef; +% \end{macrocode} +%</tex> +% +%<*values> +% \section{Der Abschnitt \texttt{values}} +% In diesem Abschnitt finden sich Maße für die unterschiedlichen Briefe +% ausgehend von \texttt{11pt}, \texttt{a4paper}. +% +%<*DIN> +% \section{Maße für DIN-Briefe} +% +%\begin{macrocode} +numeric paperwidth; +numeric paperheight; +numeric textwidth; +numeric textheight; +numeric evensidemargin; +numeric oddsidemargin; +numeric topmargin; +numeric headheight; +numeric headsep; +numeric topskip; +numeric footskip; +numeric baselineskip; + +paperwidth = 597.50793pt; +paperheight = 845.04694pt; +textwidth = 418.25555pt; +textheight = 595.80026pt; +evensidemargin = 17.3562pt; +oddsidemargin = 17.3562pt; +topmargin = -25.16531pt; +headheight = 17.0pt; +headsep = 20.40001pt; +topskip = 11.0pt; +footskip = 47.60002pt; +baselineskip = 13.6pt; + + + +numeric foldmarkhpos; +numeric tfoldmarkvpos; +numeric bfoldmarkvpos; +numeric tfoldmarklength; +numeric pfoldmarklength; +numeric bfoldmarklength; +numeric toaddrvpos; +numeric refvpos; +numeric refaftervskip; +numeric toaddrhpos; +numeric toaddrwidth; +numeric toaddrheight; +numeric toaddrindent; +numeric specialmailindent; +numeric specialmailrightindent; +numeric locwidth; +numeric backaddrheight; +numeric firstheadvpos; +numeric firstheadwidth; +numeric firstfootwidth; +numeric firstfootvpos; +numeric refwidth; +numeric sigindent; +numeric sigbeforevskip; + + +foldmarkhpos = 3.5mm; +tfoldmarkvpos = 105mm; +bfoldmarkvpos = 210mm; +tfoldmarklength = 2mm; +pfoldmarklength = 4mm; +bfoldmarklength = 2mm; +toaddrvpos = 45mm; +refvpos = 98.5mm; +refaftervskip = baselineskip; +toaddrhpos = 20mm; +toaddrwidth = 85mm; +toaddrheight = 40mm; +toaddrindent = 0mm; +%specialmailindent = \fill; +specialmailrightindent = 11pt; +locwidth = 3.75cm; +backaddrheight = 5mm; +firstheadvpos = 8mm; +firstheadwidth = paperwidth - 2*abs(toaddrhpos); +firstfootwidth = firstheadwidth; +firstfootvpos = 1in + topmargin + headheight + headsep + textheight + footskip; +refwidth = 0pt; +sigindent = 0mm; +sigbeforevskip = 2*baselineskip; + +% \end{macrocode} +% weitere Hilfsvariablen +% \begin{macrocode} +numeric firstheadhpos; +numeric firstheadheight; +numeric firstfoothpos; +numeric firstfootheight; +numeric fromrulewidth; +numeric fromrulehpos; +numeric specialmailwidth; +numeric specialmailheight; +numeric lochpos; +numeric refhpos; +numeric refheight; +numeric titlevpos; +numeric titlewidth; +numeric titleheight; +numeric subjectvpos; +numeric subjectwidth; +numeric subjectheight; +numeric openingvpos; +numeric openingwidth; +numeric openingheight; +numeric bodyvpos; +numeric bodywidth; +numeric bodyheight; +numeric typeareabottom; +numeric sigvpos; +numeric sigwidth; +numeric sigheight; +firstheadhpos = 0.5*(paperwidth-firstheadwidth); +firstheadheight = 5*baselineskip; +firstfoothpos = 0.5*(paperwidth-firstfootwidth); +firstfootheight = 3*baselineskip; +fromrulewidth = 0.5*firstheadwidth; +fromrulehpos = firstheadhpos+0.5*(firstheadwidth-fromrulewidth); +specialmailwidth = 5cm; +specialmailheight = baselineskip; +specialmailindent = toaddrwidth-specialmailrightindent-specialmailwidth; +lochpos = paperwidth-toaddrhpos-locwidth; +refhpos = 1in+oddsidemargin; +refheight = 2*baselineskip; +refwidth := textwidth; +titlevpos = refvpos+refheight+refaftervskip; +titlewidth = 9cm; +titleheight = 1.2*baselineskip; +subjectvpos = titlevpos+titleheight+1*baselineskip; +subjectwidth = 8cm; +subjectheight = baselineskip; +openingvpos = subjectvpos+subjectheight+2*baselineskip; +openingwidth = 6cm; +openingheight = baselineskip; +bodyvpos = openingvpos+openingheight+baselineskip; +bodywidth = textwidth; +bodyheight = 8*baselineskip; +typeareabottom = firstfootvpos-footskip; +sigvpos = bodyvpos+bodyheight+baselineskip; +sigwidth = 5cm; +sigheight = baselineskip; +% \end{macrocode} +%</DIN> +% +%<*SN> +% \section{Maße für SN-Briefe} +% \begin{macrocode} +numeric paperwidth; +numeric paperheight; +numeric textwidth; +numeric textheight; +numeric evensidemargin; +numeric oddsidemargin; +numeric topmargin; +numeric headheight; +numeric headsep; +numeric topskip; +numeric footskip; +numeric baselineskip; + +paperwidth = 597.50793pt; +paperheight = 845.04694pt; +textwidth = 418.25555pt; +textheight = 595.80026pt; +evensidemargin = 17.3562pt; +oddsidemargin = 17.3562pt; +topmargin = -25.16531pt; +headheight = 17.0pt; +headsep = 20.40001pt; +topskip = 11.0pt; +footskip = 47.60002pt; +baselineskip = 13.6pt; + + + +numeric foldmarkhpos; +numeric tfoldmarkvpos; +numeric bfoldmarkvpos; +numeric tfoldmarklength; +numeric pfoldmarklength; +numeric bfoldmarklength; +numeric toaddrvpos; +numeric refvpos; +numeric refaftervskip; +numeric toaddrhpos; +numeric toaddrwidth; +numeric toaddrheight; +numeric toaddrindent; +numeric specialmailindent; +numeric specialmailrightindent; +numeric locwidth; +numeric backaddrheight; +numeric firstheadvpos; +numeric firstheadwidth; +numeric firstfootwidth; +numeric firstfootvpos; +numeric refwidth; +numeric sigindent; +numeric sigbeforevskip; + + +foldmarkhpos = 3.5mm; +tfoldmarkvpos = 105mm; +bfoldmarkvpos = 210mm; +tfoldmarklength = 2mm; +pfoldmarklength = 4mm; +bfoldmarklength = 2mm; +toaddrvpos = 45mm; +refvpos = 98.5mm; +refaftervskip = baselineskip; +toaddrhpos = -8mm; +toaddrwidth = 90mm; +toaddrheight = 40mm; +toaddrindent = 0mm; +%specialmailindent = \fill; +specialmailrightindent = 11pt; +locwidth = (paperwidth-2*abs(toaddrhpos)-toaddrwidth)/2; +backaddrheight = 5mm; +firstheadvpos = 8mm; +firstheadwidth = paperwidth - 2*abs(toaddrhpos); +firstfootwidth = firstheadwidth; +firstfootvpos = 1in + topmargin + headheight + headsep + textheight + footskip; +show firstfootvpos; +refwidth = 0pt; +sigindent = 0mm; +sigbeforevskip = 2*baselineskip; + + +% \end{macrocode} +% weitere Hilfsvariablen +% \begin{macrocode} +numeric firstheadhpos; +numeric firstheadheight; +numeric firstfoothpos; +numeric firstfootheight; +numeric fromrulewidth; +numeric fromrulehpos; +numeric specialmailwidth; +numeric specialmailheight; +numeric lochpos; +numeric refhpos; +numeric refheight; +numeric titlevpos; +numeric titlewidth; +numeric titleheight; +numeric subjectvpos; +numeric subjectwidth; +numeric subjectheight; +numeric openingvpos; +numeric openingwidth; +numeric openingheight; +numeric bodyvpos; +numeric bodywidth; +numeric bodyheight; +numeric typeareabottom; +numeric sigvpos; +numeric sigwidth; +numeric sigheight; +firstheadhpos = 0.5*(paperwidth-firstheadwidth); +firstheadheight = 4*baselineskip; +firstfoothpos = 0.5*(paperwidth-firstfootwidth); +firstfootheight = 3*baselineskip; +fromrulewidth = 0.5*firstheadwidth; +fromrulehpos = firstheadhpos+0.5*(firstheadwidth-fromrulewidth); +specialmailwidth = 5cm; +specialmailheight = baselineskip; +specialmailindent = toaddrwidth-specialmailrightindent-specialmailwidth; +lochpos = -toaddrhpos; +refhpos = 1in+oddsidemargin; +refheight = 2*baselineskip; +refwidth := textwidth; +titlevpos = refvpos+refheight+refaftervskip; +titlewidth = 9cm; +titleheight = 1.2*baselineskip; +subjectvpos = titlevpos+titleheight+1*baselineskip; +subjectwidth = 8cm; +subjectheight = baselineskip; +openingvpos = subjectvpos+subjectheight+2*baselineskip; +openingwidth = 6cm; +openingheight = baselineskip; +bodyvpos = openingvpos+openingheight+baselineskip; +bodywidth = textwidth; +bodyheight = 8*baselineskip; +typeareabottom = firstfootvpos-footskip; +sigvpos = bodyvpos+bodyheight+baselineskip; +sigwidth = 5cm; +sigheight = baselineskip; +% \end{macrocode} +%</SN> +%</values> +% +%<*include> +% \section{Der Abschnitt \texttt{include}} +% \changes{}{2005-08-30}{Korrektur der Stiftstärken} +% +% Dieser Abschnitt erzeugt die Datei \texttt{plinc.mp} mit den wesentlichen +% Definitionen für die Erzeugung eines Elements. Eine Element ist +% beispielsweise eine Pseudolänge, eine Beschreibung (Variable), ein Feld, +% \dots). +% +% \begin{macrocode} +def lengths = + toaddrindent := 0.7cm; +% \end{macrocode} +% Die Breite des \texttt{location}-Feldes wird später berechnet und deshalb +% hier nicht mehr mit +% \begin{verbatim} +% locwidth := 3.7cm; +% \end{verbatim} +% gesetzt. +% \begin{macrocode} + firstheadheight := firstheadheight-3pt; + firstheadvpos := firstheadvpos+3pt; + sigindent := 1cm; + if (latexlengths=true): + writelatexlengths; + fi + if (filled=true): + drawfilledelements; + fi + if (framed=true): + drawframedelements; + fi + drawpaperandfoldmarks; + drawboxes; +% \end{macrocode} +% From-Rule: +% \begin{macrocode} + draw ((fromrulehpos,firstheadvpos+firstheadheight-strichstaerke)-- + (fromrulehpos+fromrulewidth,firstheadvpos+firstheadheight-strichstaerke)) + transformed T withpen pencircle scaled strichstaerke; + writelengths; +enddef; + +def describe(expr lang) = + drawpaperandfoldmarks; + if (filled=true): + drawfilledelements; + fi + if (framed=true): + drawframedelements; + fi + writedescription(lang); +enddef; + +def drawframedelements = + if toaddrhpos < 0 : + istoaddrhpos := paperwidth-abs(toaddrhpos)-toaddrwidth; + else : + istoaddrhpos := toaddrhpos; + fi + pickup pencircle scaled framestrichstaerke; + drawoptions(withcolor drawcolor); +% \end{macrocode} +% Kopf und Fuß +% \begin{macrocode} + draw unitsquare xscaled firstheadwidth yscaled firstheadheight + shifted (firstheadhpos, firstheadvpos) transformed T; + draw unitsquare xscaled firstfootwidth yscaled firstfootheight + shifted (firstfoothpos, firstfootvpos) transformed T; +% \end{macrocode} +% Adressfeld +% \begin{macrocode} + draw unitsquare xscaled toaddrwidth yscaled backaddrheight + shifted (istoaddrhpos, toaddrvpos) transformed T; + draw unitsquare xscaled specialmailwidth yscaled specialmailheight + shifted (istoaddrhpos+toaddrwidth-specialmailwidth-specialmailrightindent, + toaddrvpos+backaddrheight) transformed T; + draw unitsquare xscaled (toaddrwidth-2*toaddrindent) + yscaled (toaddrheight-backaddrheight-specialmailheight) + shifted (istoaddrhpos+toaddrindent, + toaddrvpos+backaddrheight+specialmailheight) transformed T; +% \end{macrocode} +% Absenderergänzung: +% \begin{macrocode} + draw unitsquare xscaled locwidth yscaled toaddrheight + shifted (lochpos, toaddrvpos) transformed T; +% \end{macrocode} +% Geschäftszeile: +% \begin{macrocode} + draw unitsquare xscaled refwidth yscaled refheight + shifted (1in+oddsidemargin, refvpos) transformed T; +% \end{macrocode} +% Titel: +% \begin{macrocode} + draw unitsquare xscaled titlewidth yscaled titleheight + shifted (1in+oddsidemargin+0.5(textwidth-titlewidth), titlevpos) + transformed T; +% \end{macrocode} +% Betreff: +% \begin{macrocode} + draw unitsquare xscaled subjectwidth yscaled subjectheight + shifted (1in+oddsidemargin, subjectvpos) transformed T; +% \end{macrocode} +% Anrede: +% \begin{macrocode} + draw unitsquare xscaled openingwidth yscaled openingheight + shifted (1in+oddsidemargin, openingvpos) transformed T; +% \end{macrocode} +% Brieftext: +% \begin{macrocode} + draw unitsquare xscaled bodywidth yscaled bodyheight + shifted (1in+oddsidemargin, bodyvpos) transformed T; +% \end{macrocode} +% Signatur: +% \begin{macrocode} + draw unitsquare xscaled sigwidth yscaled sigheight + shifted (1in+oddsidemargin+sigindent, sigvpos) transformed T; + draw unitsquare xscaled (0.8*sigwidth) yscaled sigheight + shifted (1in+oddsidemargin+sigindent+.1*sigwidth, + sigvpos+sigheight+sigbeforevskip) transformed T; +enddef; + +def drawfilledelements = + if toaddrhpos < 0 : + istoaddrhpos := paperwidth-abs(toaddrhpos)-toaddrwidth; + else : + istoaddrhpos := toaddrhpos; + fi + drawoptions (withcolor fillcolor); +% \end{macrocode} +% Kopf und Fuß: +% \begin{macrocode} + fill unitsquare xscaled firstheadwidth yscaled firstheadheight + shifted (firstheadhpos, firstheadvpos) transformed T; + fill unitsquare xscaled firstfootwidth yscaled firstfootheight + shifted (firstfoothpos, firstfootvpos) transformed T; +% \end{macrocode} +% Adressfeld: +% \begin{macrocode} + fill unitsquare xscaled toaddrwidth yscaled backaddrheight + shifted (istoaddrhpos, toaddrvpos) transformed T; + fill unitsquare xscaled specialmailwidth yscaled specialmailheight + shifted (istoaddrhpos+toaddrwidth-specialmailwidth-specialmailrightindent, + toaddrvpos+backaddrheight) transformed T; + fill unitsquare xscaled (toaddrwidth-2*toaddrindent) + yscaled (toaddrheight-backaddrheight-specialmailheight) + shifted (istoaddrhpos+toaddrindent, + toaddrvpos+backaddrheight+specialmailheight) transformed T; +% \end{macrocode} +% Absenderergänzung: +% \begin{macrocode} + fill unitsquare xscaled locwidth yscaled toaddrheight + shifted (lochpos, toaddrvpos) transformed T; +% \end{macrocode} +% Geschäftszeile: +% \begin{macrocode} + fill unitsquare xscaled refwidth yscaled refheight + shifted (refhpos, refvpos) transformed T; +% \end{macrocode} +% Titel: +% \begin{macrocode} + fill unitsquare xscaled titlewidth yscaled titleheight + shifted (1in+oddsidemargin+0.5(textwidth-titlewidth), titlevpos) + transformed T; +% \end{macrocode} +% Betreff: +% \begin{macrocode} + fill unitsquare xscaled subjectwidth yscaled subjectheight + shifted (1in+oddsidemargin, subjectvpos) transformed T; +% \end{macrocode} +% Anrede: +% \begin{macrocode} + fill unitsquare xscaled openingwidth yscaled openingheight + shifted (1in+oddsidemargin, openingvpos) transformed T; +% \end{macrocode} +% Brieftext: +% \begin{macrocode} + fill unitsquare xscaled bodywidth yscaled bodyheight + shifted (1in+oddsidemargin, bodyvpos) transformed T; +% \end{macrocode} +% Signatur: +% \begin{macrocode} + fill unitsquare xscaled sigwidth yscaled sigheight + shifted (1in+oddsidemargin+sigindent, sigvpos) transformed T; + fill unitsquare xscaled (0.8*sigwidth) yscaled sigheight + shifted (1in+oddsidemargin+sigindent+.1*sigwidth, + sigvpos+sigheight+sigbeforevskip) transformed T; +enddef; + +def drawpaperandfoldmarks = + pickup pencircle scaled strichstaerke; + drawoptions(withcolor drawcolor); +% \end{macrocode} +% Briefbogen: +% \begin{macrocode} + draw unitsquare xscaled paperwidth yscaled paperheight transformed T; +% \end{macrocode} +% Falzmarken: +% \begin{macrocode} + draw ((foldmarkhpos,tfoldmarkvpos)-- + (foldmarkhpos+tfoldmarklength,tfoldmarkvpos)) transformed T; + draw ((foldmarkhpos,0.5*paperheight)-- + (foldmarkhpos+pfoldmarklength,0.5*paperheight)) transformed T; + draw ((foldmarkhpos,bfoldmarkvpos)-- + (foldmarkhpos+bfoldmarklength,bfoldmarkvpos)) transformed T; +enddef; + +def drawboxes = + if toaddrhpos < 0 : + istoaddrhpos := paperwidth-abs(toaddrhpos)-toaddrwidth; + else : + istoaddrhpos := toaddrhpos; + fi + pickup pencircle scaled hilfsstrichstaerke; + drawoptions(withcolor drawcolor); +% \end{macrocode} +% Kasten Adressfeld: +% \begin{macrocode} + draw unitsquare xscaled toaddrwidth yscaled toaddrheight + shifted (istoaddrhpos, toaddrvpos) transformed T; +% \end{macrocode} +% ^^A auskommentiert: +% ^^A Kasten Adresszeile +% ^^A draw unitsquare xscaled (paperwidth-2*toaddrhpos) +% ^^A yscaled toaddrheight shifted (toaddrhpos, toaddrvpos) transformed T; +% Kasten Signatur: +% \begin{macrocode} + draw unitsquare xscaled sigwidth yscaled (2*sigheight+sigbeforevskip) + shifted (1in+oddsidemargin+sigindent,sigvpos) transformed T; +% \end{macrocode} +% Kasten Satzspiegel: +% \begin{macrocode} + draw unitsquare xscaled textwidth yscaled (typeareabottom-titlevpos) + shifted (1in+oddsidemargin,titlevpos) transformed T; +enddef; + +def writelengths = +begingroup + if toaddrhpos < 0 : + istoaddrhpos := paperwidth-abs(toaddrhpos)-toaddrwidth; + else : + istoaddrhpos := toaddrhpos; + fi + deflengths; + pickup pencircle scaled hilfsstrichstaerke; + drawoptions(withcolor drawcolor); +% \end{macrocode} +% \texttt{firstheadhpos}: +% \begin{macrocode} + if firstheadhpos > 0 : + hmeasure((0,firstheadvpos), firstheadhpos, plength[33], (12pt,0pt), top); + else : + hmeasure((0,firstheadvpos), -firstheadhpos, plength[34], (12pt,0pt), top); + fi +% \end{macrocode} +% \texttt{firstheadwidth}: +% \begin{macrocode} + hmeasure((firstheadhpos,firstheadvpos), firstheadwidth, plength[6], origin, + top); +% \end{macrocode} +% \texttt{fromrulewidth}: +% \begin{macrocode} + hmeasure((fromrulehpos,firstheadvpos+firstheadheight-strichstaerke), + fromrulewidth, plength[23], origin, top); +% \end{macrocode} +% \texttt{toaddrwidth}: +% \begin{macrocode} + hmeasure((istoaddrhpos,toaddrvpos), toaddrwidth, plength[20], origin, top); +% \end{macrocode} +% \texttt{locwidth}: +% \begin{macrocode} + hmeasure((lochpos,toaddrvpos), locwidth, plength[8], origin, top); +% \end{macrocode} +% \texttt{specialmailindent}: +% \begin{macrocode} + hmeasure((istoaddrhpos, + toaddrvpos+backaddrheight+0.5*(specialmailheight+tickhoehe)), + specialmailindent, plength[14], (-0.5*specialmailindent+toaddrindent,+14pt), rt); +% \end{macrocode} +% \texttt{specialmailrightindent}: +% \begin{macrocode} + hmeasure((istoaddrhpos+toaddrwidth-specialmailrightindent, + toaddrvpos+backaddrheight+0.5*(specialmailheight+tickhoehe)), + specialmailrightindent, plength[15], + (0.5*specialmailrightindent-3pt,0pt), rt); +% \end{macrocode} +% \texttt{toaddrhpos}: +% \begin{macrocode} + if toaddrhpos > 0 : + hmeasure((0,toaddrvpos), toaddrhpos, plength[17], (6pt,0pt), top); + else : + hmeasure((0,toaddrvpos), -toaddrhpos, plength[24], (6pt,0pt), top); + fi +% \end{macrocode} +% \texttt{lochpos}: +% \begin{macrocode} + if toaddrhpos > 0 : + hmeasure((lochpos+locwidth,toaddrvpos), toaddrhpos, plength[25], (-6pt,0pt), + top); + else : + hmeasure((paperwidth+toaddrhpos,toaddrvpos), -toaddrhpos, plength[26], + (-6pt,0pt), top); + fi +% \end{macrocode} +% \texttt{toaddrindent}: +% \begin{macrocode} + hmeasure((istoaddrhpos, + toaddrvpos+0.75*(toaddrheight+backaddrheight+specialmailheight+tickhoehe)), + toaddrindent, plength[18], (0.5*toaddrindent,0pt), rt); + hmeasure((istoaddrhpos+toaddrwidth-toaddrindent, + toaddrvpos+0.75*(toaddrheight+backaddrheight+specialmailheight+tickhoehe)), + toaddrindent, plength[18], (-0.5*toaddrindent,0pt), lft); +% \end{macrocode} +% \texttt{refwidth}: +% \begin{macrocode} + hmeasure((1in+oddsidemargin,refvpos), refwidth, plength[11], origin, top); +% \end{macrocode} +% \texttt{refhpos}: +% \begin{macrocode} + hmeasure((0,refvpos), refhpos, plength[22], origin, top); +% \end{macrocode} +% \texttt{foldmarkhpos}: +% \begin{macrocode} + hmeasure((0,bfoldmarkvpos+tickhoehe), foldmarkhpos, plength[7], + (-6pt,0.5*tickhoehe), lrt); +% \end{macrocode} +% \texttt{sigindent}: +% \begin{macrocode} + hmeasure((1in+oddsidemargin,sigvpos+0.5*(sigheight+tickhoehe)), sigindent, + plength[13], (-0.5*sigindent,0pt), lft); +% \end{macrocode} +% \texttt{firstfoothpos}: +% \begin{macrocode} + if firstfoothpos > 0 : + hmeasure((0,firstfootvpos+firstfootheight+tickhoehe), firstfoothpos, plength[31], (12pt,0pt), bot); + else : + hmeasure((firstfootwidth-firstfoothpos,firstfootvpos+firstfootheight+tickhoehe), -firstfoothpos, plength[32], (12pt,0pt), bot); + fi +% \end{macrocode} +% \texttt{firstfootwidth}: +% \begin{macrocode} + hmeasure((firstfoothpos,firstfootvpos), firstfootwidth, plength[4], origin, + top); +% \end{macrocode} +% \texttt{toaddrheight}: +% \begin{macrocode} + vmeasure((istoaddrhpos-tickhoehe,toaddrvpos), toaddrheight, + plength[21] rotated 90, origin, lft); +% \end{macrocode} +% \texttt{locheight}: +% \begin{macrocode} + vmeasure((lochpos+locwidth,toaddrvpos), toaddrheight, + plength[28] rotated 90, origin, rt); +% \end{macrocode} +% \texttt{subjectbeforevskip} +% \begin{macrocode} + label(plength[30], + (1in+oddsidemargin+openingwidth+152pt, subjectvpos-.5*baselineskip) + transformed T); +% \end{macrocode} +% \texttt{subjectaftervskip} +% \begin{macrocode} + vmeasure((1in+oddsidemargin+openingwidth,subjectvpos+baselineskip), + 2*baselineskip, plength[29], origin, rt); +% \end{macrocode} +% \texttt{backaddrheight}: +% \begin{macrocode} + vmeasure((istoaddrhpos+toaddrwidth,toaddrvpos), backaddrheight, plength[1], + origin, rt); +% \end{macrocode} +% \texttt{refaftervskip}: +% ^^A auskommentiert: +% ^^A vmeasure((1in+oddsidemargin+0.5*(textwidth+titlewidth), +% ^^A refvpos+refheight), refaftervskip, plength[9], origin, rt); +% \begin{macrocode} + vmeasure((1in+oddsidemargin+textwidth,refvpos+refheight), refaftervskip, + plength[9], origin, rt); +% \end{macrocode} +% \texttt{sigbeforvskip}: +% \begin{macrocode} + vmeasure((1in+oddsidemargin+sigindent+0.1*sigwidth-tickhoehe, + sigvpos+sigheight), sigbeforevskip, plength[12], origin, rt); +% \end{macrocode} +% \texttt{firstheadvpos}: +% \begin{macrocode} + if firstheadhpos < 0 : + dmeasure((-firstheadhpos-2*tickhoehe,firstheadvpos), plength[5], origin, rt); + else : + dmeasure((firstheadhpos+firstheadwidth,firstheadvpos), plength[5], origin, lft); + fi +% \end{macrocode} +% \texttt{toaddrvpos}: +% \begin{macrocode} + if toaddrhpos > 0 : + dmeasure((istoaddrhpos+toaddrwidth,toaddrvpos), plength[19], origin, top); + else : + dmeasure((istoaddrhpos-2*tickhoehe,toaddrvpos), plength[19], origin, top); + fi +% \end{macrocode} +% \texttt{locvpos}: +% \begin{macrocode} + if toaddrhpos > 0 : + dmeasure((lochpos-2*tickhoehe,toaddrvpos), plength[27], origin, top); + else : + dmeasure((lochpos+locwidth,toaddrvpos), plength[27], origin, top); + fi +% \end{macrocode} +% \texttt{refvpos}: +% \begin{macrocode} + dmeasure((refhpos+refwidth,refvpos), plength[10], (0pt,0pt), top); +% \end{macrocode} +% \texttt{tfoldmarkvpos}: +% \begin{macrocode} + dmeasure((foldmarkhpos+tfoldmarklength,tfoldmarkvpos), plength[16], + (18pt,1.5*tickhoehe), bot); +% \end{macrocode} +% \texttt{bfoldmarkvpos}: +% \begin{macrocode} + dmeasure((foldmarkhpos+bfoldmarklength,bfoldmarkvpos), plength[2], + (18pt,0pt), top); +% \end{macrocode} +% \texttt{firstfootvpos}: +% \begin{macrocode} + dmeasure((firstfoothpos-2*tickhoehe,firstfootvpos), plength[3], origin, top); +endgroup +enddef; + +def writelatexlengths = +begingroup + color temp; + deflatexlengths; + temp := drawcolor; + drawcolor := latexlengthcolor; + pickup pencircle scaled hilfsstrichstaerke; +% \end{macrocode} +% \LaTeX-Längen: +% \begin{macrocode} + vmeasure((1in+oddsidemargin+openingwidth,subjectvpos-baselineskip), + baselineskip, latexlength[1], origin, rt); + vmeasure((1in+oddsidemargin+openingwidth,openingvpos+baselineskip), + baselineskip, latexlength[1], origin, rt); + vmeasure((1in+oddsidemargin+sigindent+sigwidth,sigvpos-baselineskip), + baselineskip, latexlength[1], origin, rt); + hmeasure((1in+oddsidemargin,typeareabottom+tickhoehe), + textwidth, latexlength[3], (0pt,-3pt), bot); + draw ((1in+oddsidemargin+textwidth,typeareabottom)-- + (firstfoothpos+firstfootwidth,typeareabottom)) transformed T; + vmeasure((firstfoothpos+firstfootwidth,typeareabottom), + firstfootvpos-typeareabottom, latexlength[4] rotated 90, origin, + rt); + drawcolor := temp; +endgroup +enddef; +% \end{macrocode} +% Anker ist links unten. +% \begin{macrocode} +def hmeasure(expr p, breite, pic, s)(suffix alig) = +begingroup + save pleft, pright; + pair pleft, pright; + drawoptions(withcolor drawcolor); +% \end{macrocode} +% linker Tick: +% \begin{macrocode} + draw (p--p shifted (0,-tickhoehe)) transformed T; +% \end{macrocode} +% rechter Tick: +% \begin{macrocode} + draw (p--p shifted (0,-tickhoehe)) shifted (breite,0) transformed T; +% \end{macrocode} +% Messlinie; +% die Korrektur der Stiftstärke muss nach der Transformation +% in Zeichenkoordinaten erfolgen: +% \begin{macrocode} + pleft = p shifted (0,-0.5*tickhoehe) + transformed T shifted (hilfsstrichstaerke,0); + pright = p shifted (0,-0.5*tickhoehe) shifted (breite,0) + transformed T shifted (-hilfsstrichstaerke,0); + drawdblarrow pleft--pright; + label.alig(pic, (p shifted (0.5*breite, -0.5*tickhoehe) shifted s) + transformed T); +endgroup +enddef; + + +% \end{macrocode} +% Anker ist links oben. +% \begin{macrocode} +def vmeasure(expr p, breite, pic, s)(suffix alig) = +begingroup + save ptop, pbottom; + pair ptop, pbottom; + drawoptions(withcolor drawcolor); +% \end{macrocode} +% oberer Tick: +% \begin{macrocode} + draw (p--p shifted (tickhoehe,0)) transformed T; +% \end{macrocode} +% unterer Tick: +% \begin{macrocode} + draw (p--p shifted (tickhoehe,0)) shifted (0,breite) transformed T; +% \end{macrocode} +% Messlinie; +% die Korrektur der Stiftstärke muss nach der Transformation +% in Zeichenkoordinaten erfolgen: +% \begin{macrocode} + ptop = p shifted (0.5*tickhoehe,0) + transformed T shifted (0,-hilfsstrichstaerke); + pbottom = p shifted (0.5*tickhoehe,0) shifted (0,breite) + transformed T shifted (0,hilfsstrichstaerke); + drawdblarrow ptop--pbottom; + label.alig(pic, (p shifted (0.5*tickhoehe, 0.5*breite) shifted s) + transformed T); +endgroup +enddef; + + +% \end{macrocode} +% Anker ist links unten. +% \begin{macrocode} +def dmeasure(expr p, pic, s)(suffix alig) = +begingroup + save ptop, pbottom; + pair ptop, pbottom; + drawoptions(withcolor drawcolor); +% \end{macrocode} +% horizontale Linie: +% \begin{macrocode} + draw (p--p shifted (2*tickhoehe,0)) transformed T; +% \end{macrocode} +% Messlinie: +% \begin{macrocode} + ptop = p shifted (0,-1.5*tickhoehe) shifted (tickhoehe,0) + transformed T; +% \end{macrocode} +% Die Korrektur der Stiftstärke muss nach der Transformation +% in Zeichenkoordinaten erfolgen. +% \begin{macrocode} + pbottom = p shifted (tickhoehe,0) + transformed T shifted (0,hilfsstrichstaerke); + drawarrow ptop--pbottom; + label.alig(pic, (p shifted (tickhoehe, -1.5*tickhoehe) shifted s) + transformed T); +endgroup +enddef; + + +def writedescription(expr lang) = + if toaddrhpos < 0 : + istoaddrhpos := paperwidth-abs(toaddrhpos)-toaddrwidth; + else : + istoaddrhpos := toaddrhpos; + fi + if (lang="de"): defdescriptionde; + else: defdescriptionen; + fi + drawoptions(withcolor drawcolor); +% \end{macrocode} +% Kopf und Fuß: +% \begin{macrocode} + label(description[1], + (firstheadhpos+0.5*firstheadwidth, firstheadvpos+0.5*firstheadheight) + transformed T); + label(description[2], + (firstfoothpos+0.5*firstfootwidth, firstfootvpos+0.5*firstfootheight) + transformed T); +% \end{macrocode} +% Adressfeld: +% \begin{macrocode} + label(description[3], + (istoaddrhpos+0.5*toaddrwidth, toaddrvpos+0.5*backaddrheight) + transformed T); + label(description[4], + (istoaddrhpos+toaddrwidth-specialmailrightindent-0.5*specialmailwidth, + toaddrvpos+backaddrheight+0.5*specialmailheight) transformed T); + label(description[5], + (istoaddrhpos+0.5*toaddrwidth, + toaddrvpos+backaddrheight+specialmailheight+0.5*(toaddrheight-backaddrheight-specialmailheight)) + transformed T); +% \end{macrocode} +% Absenderergänzung: +% \begin{macrocode} + label(description[13], (lochpos+0.5*locwidth, toaddrvpos+0.5*toaddrheight) + transformed T); +% \end{macrocode} +% Geschäftszeile: +% \begin{macrocode} + label(description[6], (1in+oddsidemargin+0.5*refwidth, + refvpos+0.5*refheight) + transformed T); +% \end{macrocode} +% Titel: +% \begin{macrocode} + label(description[7], + (1in+oddsidemargin+0.5textwidth, titlevpos+0.5*titleheight) + transformed T); +% \end{macrocode} +% Betreff: +% \begin{macrocode} + label(description[8], + (1in+oddsidemargin+0.5*subjectwidth, subjectvpos+0.5*subjectheight) + transformed T); +% \end{macrocode} +% Anrede: +% \begin{macrocode} + label(description[9], + (1in+oddsidemargin+0.5*openingwidth, openingvpos+0.5*openingheight) + transformed T); +% \end{macrocode} +% Brieftext: +% \begin{macrocode} + label(description[10], + (1in+oddsidemargin+0.5*bodywidth, bodyvpos+0.5*bodyheight) + transformed T); +% \end{macrocode} +% Signatur: +% \begin{macrocode} + label(description[11], + (1in+oddsidemargin+sigindent+0.5*sigwidth, sigvpos+0.5*sigheight) + transformed T); + label(description[12], + (1in+oddsidemargin+sigindent+0.5*sigwidth, + sigvpos+sigheight+sigbeforevskip+0.5*sigheight) transformed T); +enddef; +% \end{macrocode} +%</include> +% +% \iffalse +\endinput +%%% Local Variables: +%%% mode: doctex +%%% coding: iso-latin-1 +%%% TeX-master: t +%%% End: +% \fi diff --git a/macros/latex/contrib/koma-script/source-doc/scrguide.cls b/macros/latex/contrib/koma-script/source-doc/scrguide.cls new file mode 100644 index 0000000000..cee1ba89c7 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/scrguide.cls @@ -0,0 +1,2782 @@ +% ====================================================================== +% scrguide.cls +% Copyright (c) Markus Kohm, 2005-2019 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrguide.cls +% Copyright (c) Markus Kohm, 2005-2019 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% \section{Identification} +% +% \begin{macrocode} +\ProvidesClass{scrguide}[2019/02/01 v1.13d internal KOMA-Script guide class] +% \end{macrocode} +% +% +% \section{Options on my own} +% +% This class also has options. +% +% \begin{option}{pagereftolabel} +% |\autopageref| should reference the label not the page. +% \begin{option}{pagereftopage} +% |\autopageref| should reference the page not the label. +% \begin{macro}{\if@pagereftolabel} +% \begin{macrocode} +\newif\if@pagereftolabel\@pagereftolabeltrue +\DeclareOption{pagereftolabel}{\@pagereftolabeltrue} +\DeclareOption{pagereftopage}{\@pagereftolabelfalse} +% \end{macrocode} +% \end{macro} +% \end{option} +% \end{option} +% +% \begin{option}{moreindexnotes} +% Show more notes at the index. +% \begin{option}{lessindexnotes} +% Show less notes at the index. +% \begin{macro}{\if@moreindexnotes} +% \begin{macrocode} +\newif\if@moreindexnotes\@moreindexnotesfalse +\DeclareOption{moreindexnotes}{\@moreindexnotestrue} +\DeclareOption{lessindexnotes}{\@moreindexnotesfalse} +% \end{macrocode} +% \end{macro} +% \end{option} +% \end{option} +% +% Note: You have to pass options to class \textsf{scrguide}, because only +% these options will be processed by |\LoadClassWithOptions| below. +% \begin{macrocode} +\ExecuteOptions{pagereftolabel,lessindexnotes} +\PassOptionsToClass{% + bibliography=totoc, + index=totoc, + captions=tableabove, + headings=small, + headings=optiontoheadandtoc, + version=last, +}{scrguide} +\ProcessOptions\relax +% \end{macrocode} +% +% +% \section{Load the Base Class and Packages} +% +% \begin{macro}{\KOMAProvidesFile} +% \begin{macro}{\@KOMAProvidesFile} +% Extended version of |\ProvidesFile|, that uses the date from the +% repository. +% \begin{macrocode} +\newcommand*{\KOMAProvidesFile}{} +\def\KOMAProvidesFile#1{% + \@ifnextchar [%] + {\@KOMAProvidesFile{#1}}{\ProvidesFile{#1}\relax}% +} +\newcommand*{\@KOMAProvidesFile}{} +\def\@KOMAProvidesFile#1[$#2: #3-#4-#5 #6$#7]{% + \ifstr{#2}{Date}{% + \ProvidesFile{#1}[#3/#4/#5 \detokenize{#6 #7}]\relax + }{% + \ClassError{scrguide}{missmatch repository date string}{% + It seams, that you haven't used $% + Date: YYYY-MM-DD $ for the date of \string\KOMAProvidesFile.}% + \ProvidesFile{#1}[$#2: #3/#4/#5 \detokenize{#6}$\detokenize{#7}]\relax + }% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% NOTE: I use \texttt{latin1} instead of the prefered \texttt{utf8} because of +% problems of early versions of package \textsf{listings}. +% \begin{macrocode} +\LoadClassWithOptions{scrbook} +\RequirePackage[latin1]{inputenc} +\RequirePackage[TS1,T1]{fontenc} +\newcommand*{\strngerman}{ngerman} +\newcommand*{\strenglish}{english} +\edef\languages{\ifx\languagename\strngerman main=\fi ngerman,% + \ifx\languagename\strenglish main=\fi english} +\edef\uselanguage{\languagename} +\expandafter\RequirePackage\expandafter[\languages]{babel}% +\AtBeginDocument{% + \typeout{TRACE: Current language is `\languagename`.}}% +\RequirePackage[fixlanguage]{babelbib} +\expandafter\selectbiblanguage\expandafter{\uselanguage} +\RequirePackage{afterpage} +\RequirePackage{makeidx} +\RequirePackage{scrdate} +\RequirePackage{scrtime} +\RequirePackage{picture} +\RequirePackage{graphicx} +\RequirePackage{booktabs} +\RequirePackage{longtable} +\RequirePackage{amsmath} +\RequirePackage{listings} +\RequirePackage{multicol} +\RequirePackage{marginnote} +\RequirePackage{tabularx} +\RequirePackage{scrhack}% +\RequirePackage{mparhack}% +% \end{macrocode} +% +% \section{Dependence from \KOMAScript{} Version} +% +% \begin{macro}{currentversionlt} +\newcommand*{\currentversionlt}[1]{% + \expandafter\ifx\csname scr@v@#1\endcsname\relax \maxdimen + \else\csname scr@v@#1\endcsname\fi >\scr@compatibility\relax +} +% \end{macrocode} +% \end{macro} +% +% \section{Free or Non-Free Version} +% +% \begin{macrocode} +\newif\ifshortversion\shortversionfalse +\InputIfFileExists{scrnonfree.tex}{}{% + \RequirePackage[svgnames]{xcolor}% + \RequirePackage{tocstyle}% hyperref needs xcolor with tocstyle + \RequirePackage{tikz}% + \usetikzlibrary{calc}% + \RequirePackage[\uselanguage]{hyperref}% + \RequirePackage[open,openlevel=0]{bookmark}% improved pdf bookmarks + \typeout{^^J + ----------------------------------------------------------------------^^J + FREE VERSION OF THE KOMA-SCRIPT GUIDE.^^J + NOTE THAT THIS VERSION MAY BE FULL OF UGLY PARAGRAPH AND PAGE BREAKS.^^J + THIS IS BECAUSE THIS VERSION OF THE KOMA-SCRIPT GUIDE IS UNDER^^J + CONSTRUCTION FOREVER.^^J + ----------------------------------------------------------------------^^J + ^^J% + }% + \newcommand*{\iffree}{\@firstoftwo}% + \newcommand*{\important}[2][]{}% + \newcommand*{\textnote}[2][]{}% + \shortversiontrue + \newcommand*{\LoadNonFree}[2]{\par\GuideLoadNonFree\par}% + \AtBeginDocument{\InputIfFileExists{linkalias.tex}{}{}}% + \usepackage{lmodern}% + \@twosidefalse\@openrightfalse\@mparswitchfalse + \RequirePackage{geometry}% + \geometry{papersize={180mm,210mm},% + includehead,includemp,reversemp,marginparwidth=4em,% + vmargin={1.5mm,3mm},hmargin=1.75mm}% + \RequirePackage{scrlayer-scrpage}% + \clearpairofpagestyles + \ihead{% + \smash{% + \hspace*{.5em}\rule[-\dp\strutbox]{0pt}{\headheight}\headmark + }% + }% + \ohead*{\smash{\pagemark\hspace{2mm}}}% + \colorlet{headbackground}{DarkBlue}% + \colorlet{headline}{white}% + \setkomafont{pageheadfoot}{\small\sffamily\bfseries\color{headline}}% + \setkomafont{pagenumber}{}% + \DeclareNewLayer[head,background, + hoffset=0pt, + width=\paperwidth, + addheight=\dimexpr \topmargin+1in+\dp\strutbox\relax, + addvoffset=2\dp\strutbox, + contents={% + \color{headbackground}\rule{\layerwidth}{\layerheight}}] + {headbackground}% + \AddLayersAtBeginOfPageStyle{scrheadings}{headbackground}% + \renewcommand*{\chaptermark}[1]{% + \@mkdouble{\ifnumbered{chapter}{\chaptermarkformat}{}##1}% + }% + \renewcommand*{\chaptermarkformat}{% + \makebox[\dimexpr \oddsidemargin+1in-.5em][r]{% + \chapapp~\thechapter:~% + }% + }% + \renewcommand*{\chapterformat}{}% + \renewcommand*{\chapterpagestyle}{scrheadings}% + \setlength{\@tempdimc}{\oddsidemargin}% + \addtolength{\@tempdimc}{1in}% + \setheadwidth[-\@tempdimc]{paper}% + % Entweder: + \hypersetup{colorlinks,citecolor=Green,linkcolor=Crimson,urlcolor=Blue}% + % oder: +% \hypersetup{pdfborderstyle={/S/U/W 1}}% + \let\orig@maketitle\maketitle + \def\maketitle{% + \begingroup + \@twosidetrue + \let\cleardoublepage\clearpage + \addtolength{\oddsidemargin}{\evensidemargin}% + \setlength{\evensidemargin}{.5\oddsidemargin}% + \setlength{\oddsidemargin}{\evensidemargin}% + \orig@maketitle\relax + \endgroup + }% + \renewcommand*{\chapterheadstartvskip}{}% + \raggedbottom + \sloppy + \lstset{breaklines,prebreak=\mbox{$\hookleftarrow$}}% +}% +% \end{macrocode} +% +% Now loading the last package (better do it late than never): +% \begin{macrocode} +\RequirePackage{textcomp} +% \end{macrocode} +% +% \section{Load common paragraphs} +% +% \begin{macrocode} +\newcommand*{\ThisCommonFile}{}% +\newcommand*{\ThisCommonLabelBase}{} +\newcommand*{\IfThisCommonLabelBase}[1]{% + \expandafter\ifstr\expandafter{\ThisCommonLabelBase}{#1}% + \@firstoftwo\@secondoftwo +} +\newcommand*{\IfThisCommonLabelBaseOneOf}[1]{% + \begingroup + \@tempswafalse + \@for \reserved@a:=#1\do{% + \expandafter\IfThisCommonLabelBase\expandafter{\reserved@a}% + {\@tempswatrue}{}% + }% + \if@tempswa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup +} +\newcommand*{\IfThisCommonLabelBaseNotOneOf}[1]{% + \begingroup + \@tempswafalse + \@for \reserved@a:=#1\do{% + \expandafter\IfThisCommonLabelBase\expandafter{\reserved@a}% + {\@tempswatrue}{}% + }% + \if@tempswa + \aftergroup\@secondoftwo + \else + \aftergroup\@firstoftwo + \fi + \endgroup +} +\newcommand*{\ThisCommonFirstLabelBase}{% + \@nameuse{CommonFile@\ThisCommonFile @LabelBase}% +} +\newif\ifthiscommonfirst +\newcommand*{\IfThisCommonFirstRun}{% + \ifthiscommonfirst \expandafter\@firstoftwo + \else \expandafter\@secondoftwo \fi +} +\newcommand*{\LoadCommonFile}[1]{% + \ifstr{\ThisCommonFile}{}{% + \def\ThisCommonFile{#1}% + \let\ThisCommonLabelBase\label@base + \@ifundefined{CommonFile@\ThisCommonFile @LabelBase}{% + \expandafter\let\csname CommonFile@\ThisCommonFile @LabelBase\endcsname + \ThisCommonLabelBase + \thiscommonfirsttrue + }{\thiscommonfirstfalse}% + \input{common-\ThisCommonFile.tex}% + \thiscommonfirstfalse + \let\ThisCommonLabelBase\@empty + \let\ThisCommonFile\@empty + }{% + \ClassError{scrguide}{recursive \string\LoadCommon}{% + You can not use \string\LoadCommon\space inside another + common file.% + }% + }% +} +\newcommand*{\InternalCommonFileUsageError}{% + \GenericError{% + (common-\ThisCommonFile.tex)\@spaces + }{% + Common File common-\ThisCommonFile.tex Error: Unprepared usage% + }{% + You have to prepare the file for the label base \ThisCommonLabelBase.% + }{}% +} +% \end{macrocode} +% +% \section{Language Dependencies} +% +% We load the language dependency file at |\begin{document}| and add some +% of the extensions to the language. +% \begin{macrocode} +\AtBeginDocument{% + \InputIfFileExists{\jobname-\uselanguage.tex}{% + \ClassInfo{scrguide}{Loading language dependencies for \uselanguage}% + }{% + \ClassError{scrguide}{\uselanguage\space not supported}{% + You've tried to generate a guide for language `\uselanguage' but + language\MessageBreak + dependency file `\jobname-\uselanguage.tex' was not found.\MessageBreak + This may result in a lot of errors and warnings, if you'll continue}% + }% + \expandafter\addto\csname extras\uselanguage\endcsname + \GuideLanguageExtensions\GuideLanguageExtensions +} +% \end{macrocode} +% +% +% \section{Breaking of Paragraphs and Pages} +% +% There are several parameters to configure the breaking. I've tried to find +% good values. First of all the placement of floats and text. +% \begin{macrocode} +\renewcommand*{\floatpagefraction}{.75}% was .6 +\renewcommand*{\textfraction}{.2}% original +\renewcommand*{\topfraction}{.75}% was .7 +\renewcommand*{\bottomfraction}{.33}% was .3 +\setcounter{topnumber}{1}% was 2 +\setcounter{bottomnumber}{1}% original +\setcounter{totalnumber}{3}% original +% \end{macrocode} +% +% +% \section{Find the Date of the Newest Documentation File} +% +% \begin{macro}{\newestfiledate} +% The latex date of the newest used file. +% \begin{macrocode} +\newcommand*{\newestfiledate}{0001-01-01} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@notonlypreamble} +% Remove commands from to be \@onlypreamble commands. +% \begin{macrocode} +\newcommand*{\@notonlypreamble}[1]{% + \begingroup + \let\new@preamblecmds\@empty% + \def\do##1{\ifx ##1#1\else + \expandafter\def\expandafter\new@preamblecmds\expandafter{% + \new@preamblecmds\do##1}\fi}% + \@preamblecmds + \global\let\@preamblecmds\new@preamblecmds + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@ifl@t@r} +% Not longer a |\@onlypreamble| command. +% \begin{macrocode} +\@notonlypreamble\@ifl@t@r +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@parse@version} +% Not longer a |\@onlypreamble| command. +% \begin{macrocode} +\@notonlypreamble\@parse@version +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@latex@version} +% Like |\@parse@version| but returns a \LaTeX{} date. +% \begin{macrocode} +\newcommand*{\@latex@version}{} +\def\@latex@version#1/#2/#3#4#5\@nil{#1/#2/#3#4} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@iso@version} +% Like |\@parse@version| but returns an iso date. +% \begin{macrocode} +\newcommand*{\@iso@version}{} +\def\@iso@version#1/#2/#3#4#5\@nil{#1-#2-#3#4} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\IsoDate} +% Converts \LaTeX{} date #1 into an iso date. +% \begin{macrocode} +\newcommand*{\IsoDate}[1]{\expandafter\@iso@version#1//00\@nil} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@CheckDate} +% Check if the provided date of file #1.tex is newer than +% \@newestfiledate. If so, write the new date to the aux file. +% \begin{macrocode} +\newcommand*{\@CheckDate}[1]{% + \begingroup + \expandafter\ifx\csname ver@#1.tex\endcsname\relax\else + \typeout{\csname ver@#1.tex\endcsname}% + \expandafter\@ifl@t@r\csname ver@#1.tex\endcsname\newestfiledate{% + \xdef\newestfiledate{% + \expandafter\expandafter\expandafter\@latex@version + \csname ver@#1.tex\endcsname//00\@nil% + }% + \write\@auxout{\noexpand\gdef\noexpand\newestfiledate{% + \newestfiledate}\@percentchar\space #1.tex}% + }{}% + \fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% Check the date of the jobfile: +% \begin{macrocode} +\@CheckDate\jobname +% \end{macrocode} +% +% \begin{macro}{\@providesfile} +% \begin{macro}{\SCR@providesfile} +% Redefine |\ProvidesFile| to also check the date. +% \begin{macrocode} +\newcommand*{\SCR@providesfile}{} +\AtBeginDocument{% + \let\SCR@providesfile\@providesfile + \def\@providesfile#1[#2]{% + \SCR@providesfile#1[#2]% + \expandafter\@CheckDate\expandafter{\expandafter\@BaseFileName#1.\@nil}% + }% +} +% \end{macrocode} +% \begin{macro}{\@BaseFileName} +% Split of extension of the file name. +% \begin{macrocode} +\newcommand*{\@BaseFileName}{} +\def\@BaseFileName#1.#2\@nil{#1} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Predefine current date: +% \begin{macrocode} +\AtBeginDocument{\date{\IsoDate\newestfiledate}} +% \end{macrocode} +% +% +% \section{Collect All Translators} +% +% At the translated guides, the translators should also be shown somewhere at +% the title. +% +% \begin{macro}{\translator} +% \changes{v0.9d}{2007/09/18}{new} +% This macro is used, so save one or more translators into the aux file. +% \begin{macrocode} +\newcommand*{\translator}[1]{% + \protected@write\@auxout{\def\and{,}}{% + \protect\@addtranslators{#1}% + }% +} +% \end{macrocode} +% \begin{macro}{\@translator} +% \begin{macro}{\@addtranslator} +% And we need macros so store the translators +% \begin{macrocode} +\newcommand*{\@translator}{} +% \end{macrocode} +% and to read the translators from the aux file. +% \begin{macrocode} +\newcommand*{\@addtranslators}[1]{% + \ifx\@translator\@empty\else\g@addto@macro\@translator{,}\fi + \g@addto@macro\@translator{#1}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\settranslator} +% \changes{v0.9d}{2007/09/18}{new} +% Last but not least, we need a macro to set the list of translators. +% \begin{macrocode} +\newcommand{\settranslator}[2]{% + \ifx\@translator\@empty\else + #1% + \begingroup +% \end{macrocode} +% Run through all translators, but store each once only. +% \begin{macrocode} + \let\@tempb\@empty + \@tempcnta=\z@ + \expandafter\@for \expandafter\@tempa\expandafter:\expandafter=% + \@translator\do {% + \ifx\@tempa\@empty\else +%<trace> \typeout{Test: `,\@tempa,' at `,\@tempb,'}% + \@expandtwoargs\in@{,\@tempa,}{,\@tempb,}% + \ifin@\else + \edef\@tempb{\@tempb\@tempa,}% + \advance\@tempcnta by 1\relax + \fi + \fi + }% +% \end{macrocode} +% Set each of the stored translators. +% \begin{macrocode} + \@tempcntb=\z@ + \expandafter\@for \expandafter\@tempa\expandafter:\expandafter=% + \@tempb\do {% + \ifx\@tempa\@empty\else + \advance\@tempcntb by 1\relax + \typeout{Translator \the\@tempcntb: \@tempa}% + \ifnum\@tempcntb >\@ne\relax + \ifnum\@tempcntb=\@tempcnta\relax + \ifnum\@tempcntb=\tw@\relax + \GuideAnd + \else + \GuideListAnd + \fi + \else + , + \fi + \fi + \@tempa + \fi + }% + \endgroup + #2% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \section{Emphasization and Fonts} +% +% The \KOMAScript{} guide uses a lot of emphasizations. Most of them are +% declared robustly to avoid problems at index, change log etc. +% +% We need some colors for emphasizing in images: +% \begin{macrocode} +\colorlet{ImageRed}{Crimson}% +\colorlet{ImageBlue}{Blue}% +\colorlet{ImageGreen}{Green}% +\colorlet{ImageYellow}{Yellow}% +% \end{macrocode} +% +% \begin{macro}{\textsfrm} +% Something like |\emph| using |\textsf| and |\textrm| instead of |\textit| +% and |\textup|. +% \begin{macrocode} +\newcommand*{\textsfrm}[1]{% + \begingroup + \edef\@tempa{\sfdefault}% + \ifx\@tempa\f@family\textrm{#1}\else\textsf{#1}\fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\File} +% \begin{macro}{\Class} +% \begin{macro}{\Package} +% Some markup macros for files with special meanings. +\DeclareRobustCommand*{\File}[1]{\mbox{\texttt{#1}}} +\DeclareRobustCommand*{\Class}[1]{\mbox{\textsfrm{#1}}} +\DeclareRobustCommand*{\Package}[1]{\mbox{\textsfrm{#1}}} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\DeclareSpecialMarkup} +% Command to declare special markup commands, that behave different in- and +% outside |Description| environment. Parameters are: +% \begin{declaration} +% \item[\arg{command}:] The the markup command, that should be defined. +% \item[\arg{outside definition}:] Definition of the markup command +% outside |Description| environment. +% \item[\arg{inside definition}:] Definition of the markup command inside +% |Description| environment. +% \item{\oarg{inside end definition}:] Definition of the \cs{end} command, +% if inside |Description| an markup environment instead of an markup +% command would be used. +% \end{declaration} +% At the end color \meta{command name} will be black and \cs{\meta{command +% name}}, \cs{text\meta{command name}, \cs{Desc\meta{command name}}, and +% optionally \cs{endDesc\meta{command name} will be defined, with +% \cs{\meta{command name}} is \meta{command}. +% \begin{macrocode} +\newcommand\DeclareSpecialMarkup[3]{% + \newcommand*#1{}% + \expandafter\colorlet\expandafter{\expandafter\@gobble\string#1}{black}% + \expandafter\newcommand\expandafter*% + \csname text\expandafter\@gobble\string #1\endcsname[1]{#2}% + \expandafter\DeclareRobustCommand\expandafter*\expandafter#1\expandafter{% + \csname text\expandafter\@gobble\string #1\endcsname}% + \expandafter\newcommand\expandafter*% + \csname Desc\expandafter\@gobble\string #1\endcsname[1]{#3}% + \kernel@ifnextchar [% + {\expandafter\@optdef + \csname endDesc\expandafter\@gobble\string #1\endcsname}% + {}%] +} +% \end{macrocode} +% \begin{macro}{\@optdef} +% Helper to define a macro via optional instead of mandatory argument +\newcommand*{\@optdef}{} +\long\def\@optdef#1[#2]{\def#1{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\Macro} +% \begin{macro}{\Option} +% \begin{macro}{\KOption} +% \begin{macro}{\OptionValue} +% \begin{macro}{\Environment} +% \begin{macro}{\Counter} +% \begin{macro}{\Length} +% \begin{macro}{\PLength} +% \begin{macro}{\FloatStyle} +% \begin{macro}{\PageStyle} +% \begin{macro}{\Variable} +% \begin{macro}{\FontElement} +% \begin{macro}{\PName} +% \begin{macro}{\PValue} +% \begin{macro}{\Parameter} +% \begin{macro}{\OParameter} +% \begin{macro}{\AParameter} +% \begin{macro}{\PParameter} +% \begin{macro}{\POParameter} +% \begin{description} +% \item[\cs{Macro}] \LaTeX{} or \TeX{} macro +% \item[\cs{Option}] class or package option +% \item[\cs{KOption}] |\KOMAoptions| option +% \item[\cs{Environment}] \LaTeX{} environment +% \item[\cs{Counter}] \LaTeX{} counter +% \item[\cs{Length}] \LaTeX{} length +% \item[\cs{PLength}] \KOMAScript{} pseudo length +% \item[\cs{Variable}] \KOMAScript{} variable +% \item[\cs{FontElement}] \KOMAScript{} element that has its own font +% selection +% \item[\cs{PName}] name of a parameter of a macro or environment +% \item[\cs{PValue}] value of a parameter of a macro or environment +% \item[\cs{Parameter}] the mandatory parameter of a macro or environment +% \item[\cs{OParameter}] the optional parameter of a macro or environment +% \item[\cs{AParameter}] the alternativ parameter of a macro or environment +% \item[\cs{PParameter}] the part-of-command parameter of a macro or +% environment +% \end{description} +% \begin{macrocode} +\newcommand*{\LabelMacro}[2][\label@suffix]{% + \begingroup + \protected@edef\@currentlabel{\Macro{#2}}% + \label@sanitize + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.cmd.#2#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \label{\label@desc@prefix\label@base.cmd.#2#1}% + \endgroup +} +\DeclareRobustCommand*{\DescRef}{% + \kernel@ifstar {\@DescRef*}{\@DescRef\@empty}% +} +\newcommand*{\@DescRef}[2]{\expandafter\ref#1{\label@desc@prefix#2}} +\DeclareRobustCommand*{\DescPageRef}{% + \kernel@ifstar {\@DescPageRef*}{\@DescPageRef\space}% +} +\newcommand*{\@DescPageRef}[2]{\expandafter\autopageref#1{\label@desc@prefix#2}} +\DeclareSpecialMarkup{\Macro}{\mbox{\texttt{\char`\\#1}}}{% + \par + \settowidth{\leftskip}{\textMacro{#1}}% indent from left + \hskip-\leftskip + \BeginIndex{Cmd}{#1}% index entry + \LabelMacro{#1}% + \textMacro{#1}% +} +\newcommand*{\LabelOption}[2][\label@suffix]{% + \begingroup + \protected@edef\@currentlabel{\Option{#2}}% + \label@sanitize + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.option.#2#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \expandafter\gdef + \csname \label@desc@prefix\label@base.option.#2#1\endcsname{}% + \label{\label@desc@prefix\label@base.option.#2#1}% + \endgroup +} +\DeclareSpecialMarkup{\Option}{\mbox{\texttt{#1}}}{% + \par + \leftskip\z@ + \BeginIndex{Option}{#1}% index entry + \LabelOption{#1}% + \textOption{#1}% +} +\DeclareSpecialMarkup{\KOption}{% + \mbox{\textOption{#1=}}\linebreak[0]% +}{% + \ClassWarning{scrguide}{You should replace + \string\KOption{#1}\string\PName{...}\MessageBreak + by \string\OptionVName{#1}{...}}% + \par + \leftskip\z@ + \BeginIndex{Option}{#1}% index entry + \begingroup + \@nameuse{phantomsection}% + \label@sanitize + \expandafter\gdef + \csname \label@desc@prefix\label@base.option.#1\label@suffix\endcsname{}% + \label{\label@desc@prefix\label@base.option.#1\label@suffix}% + \endgroup + \textOption{#1=}% +} +\newcommand*{\maybelinebreak}{% + \ifvmode\else + \ifnum\lastpenalty<\z@\else + \ifnum\lastpenalty<\@medpenalty + \hskip\z@skip + \fi + \fi + \fi +} +\DeclareRobustCommand*{\textKValue}[1]{\maybelinebreak\mbox{\texttt{#1}}} +\newcommand*{\KValue}{} +\let\KValue\textKValue +\newcommand*{\textOptionValue}[2]{% + \textKOption{#1}\textKValue{#2}% +} +\DeclareRobustCommand*{\OptionValue}{\textOptionValue}% +\newcommand*{\LabelOptionValue}[3][\label@suffix]{% + \begingroup + \protected@edef\@currentlabellong{\OptionValue{#2}{#3}}% + \protected@edef\@currentlabelshort{\Option{#2}}% + \label@sanitize + \scr@ifundefinedorrelax{% + \label@desc@prefix\label@base.option.#2\label@suffix + }{% + \expandafter\gdef + \csname \label@desc@prefix\label@base.option.#2\label@suffix\endcsname{}% + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.option.#2#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \let\@currentlabel\@currentlabelshort + \label{\label@desc@prefix\label@base.option.#2#1}% + }{}% + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.option.#2.#3#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \let\@currentlabel\@currentlabellong + \label{\label@desc@prefix\label@base.option.#2.#3#1}% + \endgroup +} +% \end{macrocode} +% \begin{macro}{\OptionValueRef} +% \cs{OptionValue} by reference. Use it like +% |\OptionValueRef[suffix]{maincls}{version}{3.20}|. +% \begin{macrocode} +\newcommand*{\OptionValueRef}{% + \kernel@ifstar {\@RefOptionValue0}{\@RefOptionValue1}% +} +\newcommand*{\@RefOptionValue}[1]{% + \kernel@ifnextchar [%] + {\@@RefOptionValue#1}{\@@RefOptionValue#1[]}% +} +\newcommand*{\@@RefOptionValue}{} +\def\@@RefOptionValue#1[#2]#3#4#5{% + \scr@ifundefinedorrelax{r@\label@desc@prefix#3.option.#4.#5#2}{% + \ifcase #1 + \expandafter\scr@no@hyperref + \else + \expandafter\hyperref + \fi + [\label@desc@prefix#3.option.#4#2]% + {\OptionValue{\ref*{\label@desc@prefix#3.option.#4#2}}{#5}}% + }{% + \expandafter\ref\ifcase #1 *\fi{\label@desc@prefix#3.option.#4.#5#2}% + }% +} +\newcommand*{\scr@no@hyperref}[2][]{#2} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\newcommand*{\DescOptionValue}[2]{% + \par + \leftskip\z@ + \BeginIndex{Option}{#1}% + \BeginIndex{Option}{#1~=\KValue{#2}}% + \LabelOptionValue{#1}{#2}% + \textOptionValue{#1}{#2}% +} +\newcommand*{\textOptionVName}[2]{% + \textKOption{#1}\PName{#2}% +} +\DeclareRobustCommand*{\OptionVName}{\textOptionVName}% +\newcommand*{\LabelOptionVName}[3][\label@suffix]{% + \begingroup + \protected@edef\@currentlabellong{\OptionVName{#2}{#3}}% + \protected@edef\@currentlabelshort{\Option{#2}}% + \label@sanitize + \scr@ifundefinedorrelax{% + \label@desc@prefix\label@base.option.#2\label@suffix + }{% + \expandafter\gdef + \csname \label@desc@prefix\label@base.option.#2\label@suffix\endcsname{}% + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.option.#2#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \let\@currentlabel\@currentlabelshort + \label{\label@desc@prefix\label@base.option.#2#1}% + }{}% + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.option.#2=#3#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \let\@currentlabel\@currentlabellong + \label{\label@desc@prefix\label@base.option.#2=#3#1}% + \endgroup +} +% \end{macrocode} +% \begin{macro}{\OptionVNameRef} +% \cs{OptionVName} by reference. Use it like +% |\OptionVNameRef[suffix]{maincls}{version}{value}|. +% \begin{macrocode} +\newcommand*{\OptionVNameRef}{% + \kernel@ifstar {\@RefOptionVName0}{\@RefOptionVName1}% +} +\newcommand*{\@RefOptionVName}[1]{% + \kernel@ifnextchar [%] + {\@@RefOptionVName#1}{\@@RefOptionVName#1[]}% +} +\newcommand*{\@@RefOptionVName}{} +\def\@@RefOptionVName#1[#2]#3#4#5{% + \scr@ifundefinedorrelax{r@\label@desc@prefix#3.option.#4=#5#2}{% + \ifcase #1 + \expandafter\scr@no@hyperref + \else + \expandafter\hyperref + \fi + [\label@desc@prefix#3.option.#4#2]% + {\OptionVName{\ref*{\label@desc@prefix#3.option.#4#2}}{#5}}% + }{% + \expandafter\ref\ifcase #1 *\fi{\label@desc@prefix#3.option.#4=#5#2}% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\newcommand*{\DescOptionVName}[2]{% + \par + \leftskip\z@ +% \BeginIndex{Option}{#1}% + \BeginIndex{Option}{#1~=\PName{#2}}% + \LabelOptionVName{#1}{#2}% + \textOptionVName{#1}{#2}% +} +\newcommand*{\LabelFloatStyle}[2][\label@suffix]{% + \begingroup + \protected@edef\@currentlabel{\FloatStyle{#2}}% + \label@sanitize + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.floatstyle.#2#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \label{\label@desc@prefix\label@base.floatstyle.#2#1}% + \endgroup +} +\DeclareSpecialMarkup{\FloatStyle}{\mbox{\texttt{#1}}}{% + \par + \leftskip\z@ + \BeginIndex{Floatstyle}{#1}% + \LabelFloatStyle{#1}% + \textFloatStyle{#1}% +} +\newcommand*{\LabelPageStyle}[2][\label@suffix]{% + \begingroup + \protected@edef\@currentlabel{\PageStyle{#2}}% + \label@sanitize + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.pagestyle.#2#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \label{\label@desc@prefix\label@base.pagestyle.#2#1}% + \endgroup +} +\DeclareSpecialMarkup{\PageStyle}{\mbox{\texttt{#1}}}{% + \par + \leftskip\z@ + \BeginIndex{Pagestyle}{#1}% + \LabelPageStyle{#1}% + \scr@ifundefinedorrelax{r@\label@desc@prefix maincls.cmd.pagestyle}{% + \textMacro{pagestyle}% + }{% + \begingroup + \let\Macro\textMacro + \DescRef{maincls.cmd.pagestyle}% + \endgroup + }\PParameter{#1}% +} +\newcommand*{\LabelEnvironment}[2][\label@suffix]{% + \begingroup + \protected@edef\@currentlabel{\Environment{#2}}% + \label@sanitize + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.env.#2#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \label{\label@desc@prefix\label@base.env.#2#1}% + \endgroup +} +\DeclareSpecialMarkup{\Environment}{\mbox{\texttt{#1}}}{% + \par + \settowidth{\leftskip}{\textMacro{begin}\PParameter{#1}}% siehe Macro + \hskip-\leftskip + \BeginIndex{Env}{#1}% + \LabelEnvironment{#1}% + \textMacro{begin}\PParameter{#1}% + \def\d@EnvironmentName{#1}% Umgebungsnamen merken für das Ende +}[{% + \ifvmode\hskip-\leftskip\else \unskip\,\dots\fi% \begin{…}…\end{…} + \textMacro{end}\expandafter\PParameter\expandafter{\d@EnvironmentName}\par +}]% +\newcommand*{\LabelCounter}[2][\label@suffix]{% + \begingroup + \protected@edef\@currentlabel{\Counter{#2}}% + \label@sanitize + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.counter.#2#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \label{\label@desc@prefix\label@base.counter.#2#1}% + \endgroup +} +\DeclareSpecialMarkup{\Counter}{\mbox{\texttt{#1}}}{% + \par + \leftskip\z@ + \BeginIndex{Counter}{#1}% + \LabelCounter{#1}% + \textCounter{#1}% +} +\newcommand*{\LabelLength}[2][\label@suffix]{% + \begingroup + \protected@edef\@currentlabel{\Length{#2}}% + \label@sanitize + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.length.#2#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \label{\label@desc@prefix\label@base.length.#2#1}% + \endgroup +} +\DeclareSpecialMarkup{\Length}{\mbox{\texttt{\char`\\#1}}}{% + \par + \leftskip\z@ + \BeginIndex{Length}{#1}% index entry + \LabelLength{#1}% + \textLength{#1}% +} +\newcommand*{\LabelPLength}[2][\label@suffix]{% + \begingroup + \protected@edef\@currentlabel{\PLength{#2}}% + \label@sanitize + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.plength.#2#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \label{\label@desc@prefix\label@base.plength.#2#1}% + \endgroup +} +\DeclareSpecialMarkup{\PLength}{\mbox{\texttt{#1}}}{% + \par + \leftskip\z@ + \BeginIndex{PLength}{#1}% + \LabelPLength{#1}% + \scr@ifundefinedorrelax{% + r@\label@desc@prefix scrlttr2-experts.cmd.@setplength}{% + \textMacro{@setplength}% + }{% + \begingroup + \let\Macro\textMacro + \DescRef{scrlttr2-experts.cmd.@setplength}% + \endgroup + }% + \PParameter{#1}\Parameter{\lengthname}% +} +\newcommand*{\LabelVariable}[2][\label@suffix]{% + \begingroup + \protected@edef\@currentlabel{\Variable{#2}}% + \label@sanitize + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.variable.#2#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \label{\label@desc@prefix\label@base.variable.#2#1}% + \endgroup +} +\DeclareSpecialMarkup{\Variable}{\mbox{\texttt{#1}}}{% + \par + \leftskip\z@ + \BeginIndex{Variable}{#1}% + \LabelVariable{#1}% + \scr@ifundefinedorrelax{r@\label@desc@prefix scrlttr2.cmd.setkomavar}{% + \textMacro{setkomavar}% + }{% + \begingroup + \let\Macro\textMacro + \DescRef{scrlttr2.cmd.setkomavar}% + \endgroup + }% + \PParameter{#1}\OParameter{\descriptionname}% + \Parameter{\contentname}% +} +\newcommand*{\LabelFontElement}[2][\label@suffix]{% + \begingroup + \protected@edef\@currentlabel{\FontElement{#2}}% + \label@sanitize + \Hy@MakeCurrentHref{\label@desc@prefix\label@base.fontelement.#2#1}% + \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + \label{\label@desc@prefix\label@base.fontelement.#2#1}% + \endgroup +} +\DeclareSpecialMarkup{\FontElement}{\mbox{\texttt{#1}}}{% + \par + \leftskip\z@ + \BeginIndex{FontElement}{#1}% + \LabelFontElement{#1}% + \scr@ifundefinedorrelax{r@\label@desc@prefix\LabelBase.cmd.setkomafont}{% + \scr@ifundefinedorrelax{r@\label@desc@prefix maincls.cmd.setkomafont}{% + \textMacro{setkomafont}% + }{% + \begingroup + \let\Macro\textMacro + \DescRef{maincls.cmd.setkomafont}% + \endgroup + }% + }{% + \begingroup + \let\Macro\textMacro + \DescRef{\LabelBase.cmd.setkomafont}% + \endgroup + }% + \PParameter{#1}\OParameter{\fontsettingname}% +} +\DeclareRobustCommand*{\PName}[1]{\texttt{\textit{#1}}} +\DeclareRobustCommand*{\PValue}[1]{\texttt{#1}} +\DeclareRobustCommand*{\Parameter}[1]{% + \maybelinebreak\texttt{\{}\PName{#1}\texttt{\}}} +\DeclareRobustCommand*{\OParameter}[1]{% + \maybelinebreak\texttt{[%] + }\PName{#1}\texttt{%[ + ]}} +\DeclareRobustCommand*{\AParameter}[1]{% + \maybelinebreak\texttt{(%) + }\PName{#1}\texttt{%( + )}} +\DeclareRobustCommand*{\PParameter}[1]{\maybelinebreak\texttt{\{#1\}}} +\DeclareRobustCommand*{\POParameter}[1]{\maybelinebreak\texttt{[#1]}} +\newcommand\label@sanitize{% + \renewcommand*{\"}[1]{##1e}% + \renewcommand*{\IeC}[1]{\expandafter\@gobble\string##1}% + \renewcommand*{\textup}[1]{##1}% + \renewcommand*{\PName}[1]{/##1/}% +} +\newcommand*{\label@desc@prefix}{desc:} +\newcommand*{\label@suffix}{} +\newcommand*{\labelsuffix}[1][]{% Werden Dinge mehrfach dokumentiert benötigen + % sie ein zusätzliches Unterscheidungsmerkmal + % beim gesetzten Label. + \IfArgIsEmpty{#1}{\let\label@suffix\@empty}{\edef\label@suffix{.#1}}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\EMail} +% An email adress. +% \begin{macrocode} +\DeclareRobustCommand*{\EMail}[1]{\textless #1\textgreater} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\TextEMail} +% EMail address at the text. +% \begin{macrocode} +\DeclareRobustCommand*{\TextEMail}[1]{{\small\EMail{#1}}} +% \end{macrocode} +% \end{macro} +% +% Setup fonts for table and figure captions: +% \begin{macrocode} +\setkomafont{caption}{\normalcolor\small} +% \end{macrocode} +% +% +% \section{Footnotes} +% +% \begin{macro}{\thempfootnote} +% \begin{macrocode} +\renewcommand*{\thempfootnote}{\textit{\@arabic{\c@mpfootnote}}} +% \end{macrocode} +% \end{macro} +% +% \section{Math} +% +% I will not use real math. But there will be some »pseudo math code«. So I +% need some macros for this. +% +% \begin{macro}{\Var} +% Variables (in real math simply |$a$| will be |\Var{a}| in my math: +% \begin{macrocode} +\newcommand*{\Var}[1]{\ensuremath{\textit{#1}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Unit} +% The unit of a length. +% \begin{macrocode} +\newcommand*{\Unit}[1]{\,\ifmmode \textrm{#1}\else #1\fi} +% \end{macrocode} +% \end{macro} +% +% Wie allow page breaks at display math. +% \begin{macrocode} +\allowdisplaybreaks[1] +% \end{macrocode} +% +% +% \section{Acronyms} +% +% \begin{macro}{\Script} +% \begin{macro}{\ScriptII} +% \begin{macrocode} +\DeclareRobustCommand{\Script}{\Package{Script}} +\DeclareRobustCommand{\ScriptII}{\Package{Script-2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\eTeX} +% This may already be defined. +% \begin{macrocode} +\providecommand*{\eTeX}{\ensuremath{\varepsilon}-\TeX} +\providecommand*{\NTS}{% + \leavevmode\hbox{$\cal N\kern-0.35em\lower0.5ex\hbox{$\cal T$}% + \kern-0.2emS$}} +% \end{macrocode} +% \end{macro} +% +% +% \section{Identification} +% +% \begin{macro}{\LabelBase} +% \begin{macro}{\labelbase} +% \begin{macrocode} +\newcommand*{\labelbase}[1]{% + \ifstr{\label@base@sec}{unknown}{}{% + \labelofbase[sec]{\label@base@sec.next}% + \gdef\label@base@sec{}% + }% + \renewcommand*{\label@base}{#1}% + \label{cha:#1}% +} +% \end{macrocode} +% \begin{macro}{\label@base} +% \begin{macro}{\label@base.sec} +% \begin{macrocode} +\newcommand*{\label@base}{unknown} +\newcommand*{\label@base@sec}{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\labelofbase} +% Sets a label depending on \cs{label@base}. First optional argument is the +% label prefix, second is the the label postfix. +% \begin{macrocode} +\newcommand*{\labelofbase}[2][lab]{% + \label{#1:\label@base.#2}% +} +% \end{macrocode} +% \begin{macro}{\prefix@ref} +% Internal command to set a \cs{ref}, \cs{pageref}, or \cs{autoref} to an +% label with prefix. Use it, e.g., like +% |\label@base@ref{\autoref}{sec}{maincls.cmd.foo}|. +% \begin{macrocode} +\newcommand*{\prefix@ref}[3]{% + #1{#2:#3}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\seclabel} +% Sets a label of type section. +% \begin{macrocode} +\newcommand*{\seclabel}[1]{% + \ifx\label@base@sec\@empty\else + \labelofbase[sec]{\label@base@sec.next}% + \fi + \xdef\label@base@sec{#1}% + \labelofbase[sec]{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\xmpllabel} +% \begin{macro}{\Refxmpl} +% \begin{macro}{\PageRefxmpl} +% Sets a label of type example. +% \begin{macrocode} +\newcommand*{\xmpllabel}[1]{% + \labelofbase[xmpl]{#1}% +} +\newcommand*{\Refxmpl}{% + \kernel@ifstar {\prefix@ref{\autoref*}{xmpl}}% + {\prefix@ref{\autoref}{xmpl}}% +} +\newcommand*{\PageRefxmpl}{% + \kernel@ifstar {\prefix@ref{\autopageref*}{xmpl}}% + {\prefix@ref{\autopageref}{xmpl}}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% User command to get the current label base. +% \begin{macrocode} +\newcommand*{\LabelBase}{\@nameuse{label@base}} +% \end{macrocode} +% \end{macro} +% +% \section{Special Environments} +% +% \begin{environment}{Declaration} +% Declaration of macros, environments, options, lengths, counters, pseudo +% length, variables etc.\footnote{TODO: Redefining most declaration commands +% to also write labels.} +% \begin{macrocode} +\colorlet{Declaration}{PaleTurquoise} +\newsavebox\Declaration@Box +\newcommand*{\Declaration@Width}{\linewidth} +\newcommand*{\Declaration@LeftIndent}{-2\fboxsep} +\newcommand*{\Declaration@UseBox}[1]{% + \colorbox{Declaration}{\usebox\Declaration@Box}% +} +\newenvironment{Declaration}{% + % Als erstes wird eine neue Index-Gruppe begonnen. Dagegen darf die + % vorherige Index-Gruppe hier nicht automatisch geschlossen werden, weil + % beispielsweise ein Abschnitt oder ein Kapitel ebenfalls eine Index-Gruppe + % sein könnte (aber nicht muss). + \BeginIndexGroup + % Die Absatzformatierung anpassen. Eigentlich hier noch nicht notwendig, + % schadet aber auch nichts. + \parindent\z@ + \parfillskip\@flushglue + \parskip\z@ + % \Macro, \Environment, etc. so umdefinieren, dass sie passend für die + % Umgebung formatiert werden und auch gleich Label und Index-Einträge + % erzeugt werden. + \scr@Desc@let\Macro + \scr@Desc@let\Option + \scr@Desc@let\KOption + \scr@Desc@let\OptionValue + \scr@Desc@let\OptionVName + \scr@Desc@let\Variable + \scr@Desc@let\Environment + \let\endEnvironment\endDescEnvironment + \scr@Desc@let\Counter + \scr@Desc@let\Length + \scr@Desc@let\PageStyle + \scr@Desc@let\PLength + \scr@Desc@let\FontElement + \scr@Desc@let\FloatStyle + % Todo: Replace the following by the correct definitions: + \let\XMacro\textMacro + \let\XEnvironment\textEnvironment + \let\XOption\textOption + \let\XOptionValue\textOptionValue + \newenvironment{Body}{% Umgebung für den (vertikalen) Inhalt einer Umgebung + \\ + \setlength{\leftskip}{1em}% + \minipage{\dimexpr\linewidth-\leftskip}% + \raggedright + \newcommand*{\BodyDots}{% + \par + \hskip-\leftskip + \raisebox{0pt}[1.1\ht\strutbox][.5\dp\strutbox]{$\vdots$}% + \par + }% + }{% + \par + \endminipage + \\ + }% + % Todo: Behandlung für Optionen, Längen, Zähler, Font-Elemente, Seitenstile, + % etc. + % Maybe: Vielleicht wäre es besser, die \X…-Definitionen von hier direkt zur + % Definition der entsprechenden Elemente zu verlagern und sie \D… zu + % nennen. Das wird dann eventuell übersichtlicher als alles hier zu + % machen. Hier gäbe es dann nur noch für jedes Element genau ein + % \let\…\D…. + % Jetzt wird der ganze Inhalt der Umgebung linksbündig in eine Box gepackt + \begin{lrbox}{\Declaration@Box}% + \minipage{\Declaration@Width}% + \raggedright + \parskip\baselineskip + \small + \addtolength{\parskip}{-\baselineskip}% + \catcode`\^^M=9 % ignore line ends +}{% + \par + \endminipage + \end{lrbox} + \vskip 1\baselineskip \@plus .75\baselineskip \@minus .25\baselineskip + % Hier darf ein Seitenumbruch ohne vertikalen Ausgleich erfolgen, wenn nicht + % mindestens für die Deklaration und zwei Zeilen Platz ist. + \vskip \dimexpr\ht\Declaration@Box+\dp\Declaration@Box+2\baselineskip\relax + \penalty-\@medpenalty + \vskip -\dimexpr\ht\Declaration@Box+\dp\Declaration@Box+2\baselineskip\relax + \begingroup% Dann wird die erzeugte Box farbig hinterlegt leicht im linken + % Rand ausgegeben. + \parfillskip\@flushglue + \parindent\z@ + \leavevmode + \hspace*{\Declaration@LeftIndent}% + \Declaration@UseBox{\Declaration@Box}% + \par\nobreak\vskip\fboxsep + \endgroup\nobreak + % Der nachfolgende Text soll wie bei einer Ãœberschrift behandelt werden. + \aftergroup\@afterindentfalse\aftergroup\@afterheading +} +% \end{macrocode} +% \begin{macro}{\scr@Desc@let} +% Redefine the internal command of a robust command. +% \begin{macrocode} +\newcommand*{\scr@Desc@let}[1]{% + \expandafter\def + \csname \expandafter\@gobble\string #1 \expandafter\endcsname\expandafter{% + \csname Desc\expandafter\@gobble\string #1\endcsname}% +} +% \end{macrocode} +% \end{macro} +% \end{environment} +% +% \begin{environment}{Example} +% This environment is used for all examples at the \KOMAScript{} guide. +% \begin{macrocode} +\newenvironment{Example}{% + \lstset{belowskip=0pt plus 1pt minus .5pt}% + \labeling{{\usekomafont{disposition}\GuideExample:\ }} + \item[{\usekomafont{disposition}\GuideExample:\ }]% +}{% + \endlabeling +} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{ShowOutput} +% This environment is used for the output of examples. It shows the middle +% part of a page\footnote{TODO: optional arguments for printing a top or +% bottom part of a page}. It uses |\scalebox| so you should never use a +% DVI preview or a raw DVI printing. +% \begin{macrocode} +\newsavebox\ShowOutputBox +\newenvironment{ShowOutput}[1][0pt]{\par + \begin{lrbox}{\ShowOutputBox}% + \minipage{.9\linewidth}% + \vspace*{\baselineskip}\vspace{-#1}% +}{% + \endminipage + \end{lrbox}% + \setlength{\unitlength}{1pt}% + \setlength{\@tempdima}{\ht\ShowOutputBox}% + \addtolength{\@tempdima}{\dp\ShowOutputBox}% + \setlength{\@tempdima}{.75\@tempdima}% + \edef\MidY{\strip@pt\@tempdima}% + \addtolength{\@tempdima}{5pt}% + \edef\HighY{\strip@pt\@tempdima}% + \addtolength{\@tempdima}{-10pt}% + \edef\LowY{\strip@pt\@tempdima}% + \addtolength{\@tempdima}{5pt}% + \setlength{\@tempdima}{.9\linewidth}\edef\QuadIV{\strip@pt\@tempdima}% + \setlength{\@tempdima}{.675\linewidth}\edef\QuadIII{\strip@pt\@tempdima}% + \setlength{\@tempdima}{.45\linewidth}\edef\QuadII{\strip@pt\@tempdima}% + \setlength{\@tempdima}{.225\linewidth}\edef\QuadI{\strip@pt\@tempdima}% + \centering + \begin{picture}(\QuadIV,\MidY) + \qbezier(0,\MidY)(\QuadI,\HighY)(\QuadII,\MidY)% + \qbezier(\QuadII,\MidY)(\QuadIII,\LowY)(\QuadIV,\MidY) + \put(0,0){\makebox(\QuadIV,\MidY)[c]{% + \scalebox{.75}{\usebox{\ShowOutputBox}}% + }% + }% + \put(0,-5){\line(0,1){\HighY}}% + \put(\QuadIV,-5){\line(0,1){\HighY}}% + \qbezier(0,-5)(\QuadI,0)(\QuadII,-5)% + \qbezier(\QuadII,-5)(\QuadIII,-10)(\QuadIV,-5) + \end{picture}\par + \vspace{1ex plus 1ex minus .5ex}% +} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{Explain} +% Some parts of the documentation are importing for understanding +% \KOMAScript{} but not important for using \KOMAScript. +% \begin{macrocode} +\newenvironment{Explain}{% + \par\sffamily\ignorespaces +}{% + \par +} +% \end{macrocode} +% \end{environment} +% +% +% \subsection{Used by Jens-Uwe only} +% +% There are some example visualizations used only by Jens-Uwe.\footnote{TODO: +% All these should be merged with \texttt{ShowOutputBox}.} +% +% \begin{environment}{XmpTopPage} +% Output of the top of a page. +% \begin{macrocode} +\newenvironment{XmpTopPage} + {% + \begin{center} + \iffree{\setlength{\unitlength}{1mm}}{\setlength{\unitlength}{.833mm}}% + \begin{picture}(100,39) + \thinlines + \qbezier(0,5)(25,7)(50,5)\qbezier(50,5)(75,3)(100,5) + \put(0,5){\line(0,1){34}} + \thicklines + \put(100,5){\line(0,1){34}}\put(0,39){\line(1,0){100}} + \footnotesize + }{% + \end{picture} + \end{center}\vspace{-1.5\baselineskip}% +} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{XmpBotPage} +% Output of the bottom of a page. +% \begin{macrocode} +\newenvironment{XmpBotPage} + {\begin{center} + \iffree{\setlength{\unitlength}{1mm}}{\setlength{\unitlength}{.833mm}}% + \begin{picture}(100,40)% + \thinlines + \qbezier(0,38)(25,40)(50,38)\qbezier(50,38)(75,36)(100,38) + \put(0,5){\line(0,1){33}} + \thicklines + \put(100,5){\line(0,1){33}}\put(0,5){\line(1,0){100}} + \footnotesize +}{% + \end{picture}\end{center}\vspace{-1.5\baselineskip}% +} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\XmpSetText} +% Output some text at \texttt{XmpTopPage} or \texttt{XmpBotPage}. +% \begin{macrocode} +\newcommand{\XmpSetText}[2][\XmpText]{% + \put(#2){\makebox(0,0)[tl]{\parbox{70\unitlength}{\parfillskip=0pt + #1}}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\XmpMarginNote} +% Output a margin note at \texttt{XmpTopPage} or \texttt{XmpBotPage}. +% \begin{macrocode} +\newcommand{\XmpMarginNote}[1]{% + \put(#1){\makebox(0,5)[tl]{\scriptsize\XmpMarginTextA}} + \put(#1){\makebox(0,5)[bl]{\scriptsize\XmpMarginTextB}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\XmpRule} +% Output a horizonal rule at a \texttt{XmpTopPage} or \texttt{XmpBotPage}. +% \begin{macrocode} +\newcommand{\XmpRule}[2]{\put(#1){\line(1,0){#2}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\XmpHeading} +% Output a head line at a \texttt{XmpTopPage} or \texttt{XmpBotPage}. +% \begin{macrocode} +\newcommand{\XmpHeading}[3][\KOMAScript\hfill 3]{% + \put(#2){\makebox(#3,0)[l]{#1}}} +% \end{macrocode} +% \end{macro} +% +% +% \section{Margin Notes} +% +% \begin{macro}{\OnlyAt} +% Some things are not available at every \KOMAScript{} class. To show the +% differences we'll put a margin note. If more than one class or package +% should be noted, |\and| will be used to separate them. +% \begin{macrocode} +\newcommand*{\OnlyAt}[1]{% + \marginline{\def\and{,\\}\footnotesize #1\par}% +} +% \end{macrocode} +% \end{macro} +% +% +% \section{Change Log} +% +% Not all features are part of every old \KOMAScript{} release. New features +% will be marked and these marks are referenced at a kind of index. +% +% \begin{macro}{\ChangedAt} +% Set the margin note and write an entry to the change log.\footnote{TODO: +% Don't use the glossary, use a file by my own.} +% \begin{macrocode} +\providecommand*{\ChangedAt}[3][]{% + \ifstr{#1}{}{% + \marginnote{\tiny\fbox{\strut#2}}% + }{% + \def\reserved@a##1/##2\@nil{% + \count@\year + \advance\count@-##1\relax + \multiply\count@ by 12\relax + \advance\count@\month + \advance\count@-##2\relax + }\reserved@a#1\@nil + \ifnum\count@<13 + \marginnote{\tiny Beta-Feature}% + \else + \marginnote{\tiny\fbox{\strut #2}}% + \fi + }% + \begingroup + \let\@tempa\@empty + \ifstr{#2}{v2.9i}{\def\@tempa{v2.90i=}}{}% + \ifstr{#2}{v2.9t}{\def\@tempa{v2.90t=}}{}% + \let\and\ignorespaces + \def\Package##1{% + \glossary{##1=\string\Package{##1}>\@tempa#2|indexrm}% + \glossary{\@tempa#2>##1=\string\Package{##1}|indexrm}% + \ignorespaces + }% + \def\Class##1{% + \glossary{##1=\string\Class{##1}>\@tempa#2|indexrm}% + \glossary{\@tempa#2>##1=\string\Class{##1}|indexrm}% + \ignorespaces + }% + \ignorespaces #3% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% While I currently use the glossary, we have to make it: +% \begin{macrocode} +\makeglossary +% \end{macrocode} +% +% \begin{macro}{\printchangelog} +% We don't want to generate the change log only. We also have to print it. +% \begin{macrocode} +\newcommand*{\printchangelog}{\@input@{\jobname.chn}} +% \end{macrocode} +% \end{macro} +% \begin{environment}{thechangelog} +% And this will be used at the \texttt{chn} file. The change log index will +% always generate an entry to the table of contents. +% \begin{macrocode} +\newenvironment{thechangelog}{% + \setchapterpreamble{\GuideChangeLogPreamble\par\bigskip}% + \addchap{\changelogname}% + \markboth{\changelogname}{\changelogname}% + \setlength{\parindent}{0pt}% + \setlength{\parskip}{0pt plus .3pt}% + \setlength{\parfillskip}{0pt plus 1fil}% + \def\and{,\ }% + \let\item\@idxitem +}{% + \clearpage +} +% \end{macrocode} +% The macros |\GuideChangeLogPreamble| and |\changelogname| have to be +% defined at the language file. +% \end{environment} +% +% +% \section{Special Tabulars and Tables} +% +% I need some special tabulars and tables. These are used for describing +% single topics. +% +% \begin{environment}{desctabular} +% \changes{v1.13d}{2019/02/01}{\cs{addlinespace} removed from end code}^^A +% This kind of tabluar has primary one column but uses two columns in +% declaration. It's something like a \texttt{description} environment with +% line break after the item. I've used a \texttt{tabular} at the definition +% because of full compatibitlity with \texttt{desctable}. +% \begin{length}{\descwidth} +% I need a length of local usage. I could have used |\@tempdima| or +% another local length from kernel. But I've decided not to try to find a +% unused length at \texttt{tabular} environment. +% \begin{length}{\descdefaultindent} +% And I need a length of global usage. +% \begin{macrocode} +\newlength{\descwidth} +\newlength{\descdefaultindent}\setlength{\descdefaultindent}{2em} +% \end{macrocode} +% \end{length} +% \end{length} +% The definition of \texttt{desctabular} is very simple, because the main +% work will be done by a \emph{worker} macro that will be defined later. +% \begin{macrocode} +\newenvironment{desctabular}[1][c]{% + \start@desctab{\descdefaultindent}% + \tabular[#1]{lp{\descwidth}} + \toprule +}{% + \bottomrule + \endtabular +} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{desctable} +% \textbf{Deprecated! Use \texttt{desclist} instead of!} +% This is almost the same like \texttt{desctabular} but it uses a longtable +% to allow page breaks. +% \begin{macrocode} +\newenvironment{desctable}[1][\descdefaultindent]{% + \ClassError{scrguide}{deprecated environment}{% + please replace desctable by desclist}% + \onelinecaptionsfalse + \start@desctab{#1}% + \newcommand{\Endfirsthead}{\toprule\endfirsthead}% + \newcommand{\Endhead}{\midrule\endhead}% + \newcommand*{\standardfoot}{% + \addlinespace[-.5\normalbaselineskip]\midrule + \multicolumn{2}{r@{}}{\dots}\\ + \endfoot + \addlinespace[-.5\normalbaselineskip]\bottomrule + \endlastfoot + }% + \longtable{lp{\descwidth}}% +}{% + \endlongtable +} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\start@desctab} +% \changes{v1.7c}{2013/10/13}{\cs{leavevmode}\cs{ignorespaces} added to +% \cs{nentry}} +% This is the \emph{worker} macro of \texttt{desctable} and +% \texttt{desctabular}. It does the complete calculations and definition of +% the entry (something like |\item|) commands. +% \begin{macrocode} +\newcommand*{\start@desctab}[1]{% + \setlength{\descwidth}{\linewidth}% + \addtolength{\descwidth}{-4\tabcolsep}% + \addtolength{\descwidth}{-#1}% + \setlength{\labelwidth}{\linewidth}% + \addtolength{\labelwidth}{-2\tabcolsep}% + \newcommand{\nentry}[2]{% + \multicolumn{2}{p{\labelwidth}}{\raggedright##1}\tabularnewline*% + \hspace*{#1} & \leavevmode\ignorespaces ##2\tabularnewline% + }% + \newcommand{\entry}[2]{\nentry{##1}{##2}[.5\baselineskip]}% + \newcommand*{\pentry}[1]{% + \entry{\PLength{##1}\IndexPLength[indexmain]{##1}}}% + \newcommand*{\pventry}[1]{\entry{\PValue{##1}}}% + \newcommand*{\mentry}[1]{\entry{\Macro{##1}}}% + \newcommand*{\ventry}[1]{% + \entry{\Variable{##1}\IndexVariable[indexmain]{##1}}% + }% + \newcommand*{\feentry}[1]{% + \entry{% + \scr@ifundefinedorrelax{r@\label@desc@prefix\LabelBase.fontelement.##1}{% + \ClassWarning{scrguide}{% + Reference `\label@desc@prefix\LabelBase.fontelement.##1' undefined}% + \FontElement{##1}% + }{% + \DescRef{\LabelBase.fontelement.##1}% + }% + \IndexFontElement[indexmain]{##1}}% + }% + \newcommand*{\oentry}[1]{% + \entry{\Option{##1}\IndexOption[indexmain]{##1}}% + }% +} +% \end{macro} +% +% \begin{environment}{desclist} +% This is similar to \texttt{desctable} but it has been build by single +% tabulars instead of longtable. +% \begin{macro}{\desccaptionb@xfirst} +% \begin{macro}{\desccaptionb@xother} +% \begin{macro}{\descfootb@x} +% \begin{macro}{\descentryb@x} +% \begin{macro}{\desccaptiob@xnext} +% \begin{macrocode} +\newsavebox\desccaptionb@xfirst +\newsavebox\desccaptionb@xother +\newsavebox\descfootb@x +\newsavebox\descentryb@x +\newif\ifdescpage@dd +\newcommand*{\desccaptionb@xnext}{} +\newcommand*{\abovecaptionskipcorrection}{} +\newenvironment{desclist}[1][\descdefaultindent]{% + \par + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\selectfont% + \vskip\intextsep + \start@desctab{#1}% + \csname @desclistinithook\endcsname + \def\@captype{table}% + \newcommand{\desccaption}{\@dblarg{\@desccaption}}% + \newcommand{\@desccaption}[3][]{% + \setbox\desccaptionb@xfirst\vbox{% + \tabular{p{\labelwidth}}% + \multicolumn{1}{@{}p{\dimexpr\labelwidth+2\tabcolsep}@{}}{% + \captionaboveof{table}[##1]{##2\unskip\strut}% + }\tabularnewline[% + \dimexpr \abovecaptionskip-\normalbaselineskip\relax +% \dimexpr \abovecaptionskip-\abovecaptionskipcorrection\relax + ] + \toprule\tabularnewline + \endtabular + \vskip -\baselineskip + }% + \let\abovecaptionskipcorrection\@empty + \setbox\desccaptionb@xother\vbox{% + \tabular{p{\labelwidth}} + \multicolumn{1}{@{}p{\dimexpr\labelwidth+2\tabcolsep}@{}}{% + \@@makecaption\@firstofone{\fnum@table}{\ignorespaces ##3}% + }\tabularnewline[-\normalbaselineskip] + \addlinespace[\abovecaptionskip] + \toprule\tabularnewline + \endtabular + \vskip -\baselineskip + }% + \let\desccaptionb@xnext\desccaptionb@xfirst + }% + \setbox\descfootb@x\vbox{% + \tabular{p{\labelwidth}}% + \addlinespace[-.5\normalbaselineskip]\midrule + \addlinespace[-\dp\strutbox] + \raggedleft\dots\hspace*{-\tabcolsep}\tabularnewline + \endtabular + }% + \newcommand*{\entryskip}[1][]{% + \ifx\relax##1\relax\else\vskip##1\relax\fi + }% + \renewcommand{\nentry}[2]{% + \typeout{TRACE: Generate entry}% + \setbox\descentryb@x\vbox{% + \ifx\desccaptionb@xnext\desccaptionb@xfirst\copy\desccaptionb@xnext\fi + \makebox[\linewidth][l]{\begin{tabular}{lp{\descwidth}}% + \multicolumn{2}{p{\labelwidth}}{\raggedright##1}\tabularnewline + \hspace*{#1} & ##2\tabularnewline + \end{tabular}}% + }% + \typeout{TRACE: entry done}% + \begingroup + \dimen@ \ht\descentryb@x + \advance \dimen@ \dp\descentryb@x + \ifdim \ht\descfootb@x>\ht\strutbox + \advance \dimen@ \ht\descfootb@x + \else + \advance \dimen@ \ht\strutbox + \fi + \ifdim \dp\descfootb@x>\dp\strutbox + \advance \dimen@ \dp\descfootb@x + \else + \advance \dimen@ \dp\strutbox + \fi + \advance \dimen@ \baselineskip + \dimen@ii \pagegoal \advance \dimen@ii -\pagetotal + \typeout{TRACE: \the\dimen@>\the\dimen@ii\space (footbox + ht=\the\ht\descfootb@x, dp=\the\dp\descfootb@x; strutbox + ht=\the\ht\strutbox, dp=\the\dp\strutbox)?}% + \ifdim \dimen@>\dimen@ii + \typeout{TRACE: Break table \thetable}% + \ifx\desccaptionb@xnext\@empty + \csname @desclistentryhook\endcsname + {\copy\descfootb@x}% + \fi + \newpage + \ifx\desccaptionb@xnext\@empty + \typeout{TRACE: switch page}% + \ifdescpage@dd + \aftergroup\descpage@ddfalse + \expandafter\descpage@ddfalse + \else + \aftergroup\descpage@ddtrue + \expandafter\descpage@ddtrue + \fi + \csname @desclistentryhook\endcsname + {\copy\desccaptionb@xother}% + \fi + \fi + \endgroup + \ifx\desccaptionb@xnext\desccaptionb@xfirst + \ifthispageodd{\descpage@ddtrue}{\descpage@ddfalse}% + \fi + \csname @desclistentryhook\endcsname + {\copy\descentryb@x}% + \let\desccaptionb@xnext\@empty + \entryskip + }% +}{% + \vskip -.5\baselineskip + \setbox\descfootb@x\vbox{% + \tabular{p{\labelwidth}} + \bottomrule\tabularnewline + \endtabular + }% + \csname @desclistentryhook\endcsname + {\copy\descfootb@x}% + \par\nobreak + \vskip -\baselineskip \vskip \intextsep +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{environment} +% +% +% \section{Listings} +% +% Setup listings: +% \begin{macrocode} +\lstset{% + basicstyle=\ttfamily,% + columns=fullflexible,keepspaces,% + aboveskip=.4\baselineskip,% + belowskip=\dp\strutbox plus 1pt minus .5pt% +}% +\lstdefinestyle{code}{% + language=[LaTeX]TeX,% + moretexcs={% + @auxout,@currext,@dottedtocline,@empty,@float,@hangfrom,@ifpackagelater, + @ifundefined, + @rightmark,@secondoftwo, + @tempskipa,@tempdima,@tempswafalse,@tempswatrue, + @undefined, + AtBeginDocument,AtEndDocument, appendix, ClassWarningNoLine,CurrentOption, + color,colorbox, + DeclareOption,DeclareRobustCommand,dimexpr,end@float,ExecuteOptions, + gluexpr, + if@filesw,if@tempswa,if@twoside,includegraphics, + MessageBreak, + numexpr, + onehalfspacing, + PackageError,PackageInfo,PackageWarning,PassOptionsToPackage, + ProcessOptions,protected@edef,protected@write, + ProvidesFile,ProvidesPackage, + providecommand, + RequirePackage,RequirePackageWithOptions,setkey,setlength, + SelectInputMappings,setkeys, + textsuperscript}% +}% +\lstdefinestyle{output}{% + breaklines,prebreak=\mbox{$\hookleftarrow$}% +}% +\lstdefinestyle{KOMA}{% + style=code,% + moretexcs={% + @addtoplength,@setplength,@newplength, activateareas, + addchap,addrentry,Address,addcontentslinetoeachtocfile, + addxcontentslinetoeachtocfile,addsec, + addtoeachtocfile, + addtokomafont,addtolengthplength,addtoreffields,addtotoclist, + adrchar,adrentry, + AddLayersAtBeginOfPageStyle,AddLayersToPageStyle, + AfterBibliographyPreamble,AfterCalculatingTypearea, + AfterFile,AfterPackage,AfterStartingTOC,AfterTOCHead, + appendixmore,appendixname,areaset,autodot,automark,AtAddToTocList, + AtBeginLetter, + BeforeFamilyProcessOptions, + BeforeClosingMainAux,BeforePackage,bib@beginhook,bib@endhook, + blinddocument,blindtext,Blinddocument,Blindtext, + cc,captionabove,captionaboveof,captionbelow,captionbelowof,captionformat, + captionof,cefoot,cfoot,chapapp, chapappifchapterprefix, + chapterheadstartvskip,chapterheadmidvskip,chapterheadendvskip, + chapter,chapterlinesformat,chapterlineswithprefixformat, + chapterformat,chaptermarkformat,chapternumdepth,chaptertocdepth, + chapterpagestyle,chead, + Clause, + cleardoubleevenemptypage,cleardoubleoddpage, + clearscrheadfoot,closing,cofoot,Comment, + CloneTOCEntryStyle, + DeclareNewJuraEnvironment, + DeclareLayer,DeclareNewLayer,DeclareNewPageStyleByLayers, + DeclarePageStyleByLayers, + DeclareTOCStyleEntry,DeclareTOCEntryStyle, + DeclareNewNoteColumn,DeclareNewPageStyleAlias, + DeclareNewTOC,DeclareSectionCommand,DeclareNewSectionCommand, + RedeclareSectionCommand,ProvideSectionCommand, + dedication,defcaptionname,deffootnote,deffootnotemark, + DefineFamily,DefineFamilyKey,DefineFamilyMember, + DefineTOCEntryOption,DefineTOCEntryBooleanOption, + DefineTOCEntryCommandOption,DefintTOCEntryIfOption, + DefineTOCEntryLengthOption,DefineTOCEntryNumberOption, + DestroyLayer,defpagestyle,deftripstyle, + dictum,dictumauthorformat,dictumrule,dictumwidth,doforeachtocfile, + ellipsispar, + encl,extratitle,FamilyBoolKey,FamilyExecuteOptions, + FamilyKeyState,FamilyKeyStateUnknown,FamilyKeyStateProcessed, + FamilyKeyStateUnknownValue,FamilyKeyStateNeedValue, + FamilyNumericalKey,% + FamilyOption,FamilyOptions,FamilyProcessOptions,FamilySetBool, + FamilyStringKey,FamilyUnknownKeyValue, + figureformat,figurename,firstfoot,firsthead,FirstName,footfont,footref, + ForEachLayerOfPageStyle, + FreeI,FreeII,FreeIII,FreeIV, + GenericMarkFormat, + headfont,headmark, + ifundefinedorrelax, + ifattoclist,ifoot,ihead,ifkomavarempty,ifstr,ifthispageodd,InputAddressFile, + KOMAoption,KOMAoptions,KOMAScript, l@addto@macro, + LastName,layerwidth,layerheight,lefoot,lefttopmark,leftbotmark, + leftfirstmark,lehead,LetterOptionNeedsPapersize, + LenToUnit, + lipsum,listoffigures, + listoftables,listoftoc,LoadLetterOption,lofoot,lohead,lowertitleback, + MakeMarkcase,makenote,maketitle,manualmark,marginline,minisec, + multfootsep,multiplefootnoteseparator, + Name,nameday,newbibstyle,newcaptionname,newkomavar,nexthead, + ofoot,ohead,opening,othersectionlevelsformat, + p@section,pagemark,paragraphformat,subparagraphformat, + paragraphnumdepth,paragraphtocdepth, + subparagraphnumdepth,subparagraphtocdepth, + parellipsis,parformat,parname,parshortname, + part,partformat,partlineswithprefixformat, + partname,partnumdepth,partpagestyle,partnumdepth, + partheadstartvskip,partheadmidvskip,partheadendvskip, + pnumfont, + PreventPackageFromLoading,providecaptionname,publishers,ps, + putLL,putLR,putUL,putUR,putC, + raggedcaption,raggedchapter,raggedfootnote,raggedsection,raggedpart, + raggedsignature, + recalctypearea, + refL,refS,refN,refoot, + refParagraph,refParagraphN,refPar,refParL,refParS,refParN, + refSentence,refSentenceL,refSentenceS,refSentenceN,rehead, + RelaxFamilyKey, + removereffields,renewcaptionname, + RedeclarePageStyleAlias,RedeclareTOCStyleEntry, + ReplaceInput,ReplacePackage,ResetPreventPackageFromLoading, + rightbotmark,righttopmark,rightfirstmark, + rohead, + sectionformat,subsectionformat,subsubsectionformat, + sectionnumdepth,sectiontocdepth, + subsectionnumdepth,subsectiontocdepth, + subsubsectionnumdepth,subsubsectiontocdepth, + sectionmarkformat,sectioncatchphraseformat,sectionlinesformat, + Sentence,sentencename,sentenceshortname, + setbibpreamble,setcapindent,setcapwidth,setcaptionalignment, + setchapterpreamble,setfootbotline,setfootsepline,setfootwidth, + setheadsepline,setheadtopline,setheadwidth,setindexpreamble,setkomafont, + setkomavar,setlengthtoplength,setparsizes,setpartpreamble,setuptoc, + showfields,showenvelope,showISOenvelope,showUScommercial,showUScheck, + storeareas,StorePreventPackageFromLoading, + subject,SubClause,subsectionmarkformat,subtitle,syncwithnotecolumn, + tableformat,tablename,tableofcontents,textsubscript,thechapter,thefigure, + thefootnotemark,thepar,thepart,thesection,thesentence,thesubsection, + thesubsubsection,theparagraph,thesubparagraph, + thetable,thistime, + titlehead,tocbasic@extend@babel,TOCclone,todaysname,typearea,% + TOCEntryStyleInitCode,TOCEntryStyleStartInitCode,TOCLineLeaderFill, + UnPreventPackageFromLoading,unitfactor, + unsettoc,usekomafont,useplength,usekomavar,uppertitleback% + }% +}% +\lstnewenvironment{lstoutput}[1][]{% + \lstset{style=output,basicstyle=\ttfamily\small,#1}% +}{}% +\lstnewenvironment{lstcode}[1][]{% + \lstset{style=KOMA,basicstyle=\ttfamily\small,#1}% +}{}% +\newcommand*{\lstinputcode}[1][]{% + \lstinputlisting[style=KOMA,basicstyle=\ttfamily\small,#1]% +} +% \end{macrocode} +% +% +% \section{hyperref Addons} +% +% \begin{macro}{\KOMAScript} +% \begin{macro}{\Guide@KOMAScript} +% We need some additions to \textsf{hyperref}. +% \begin{macrocode} +\newcommand*{\Guide@KOMAScript}{} +\expandafter\let\csname Guide@KOMAScript\expandafter\endcsname\csname +KOMAScript \endcsname +\DeclareRobustCommand*{\KOMAScript}{% + \texorpdfstring{\Guide@KOMAScript}{KOMA-Script}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\url@} +% \changes{v1.9b}{2015/09/30}{\cs{GuideCTANserver} not needed and removed}^^A +% Redefine to make \texttt{CTAN://} be an alias for +% \texttt{http://mirror.ctan.org/}. +% \begin{macrocode} +\def\url@#1{\expandafter\url@@#1\@nil} +\def\url@@#1://#2\@nil{% + \def\@tempa{#1}\def\@tempb{CTAN}\ifx\@tempa\@tempb + \hyper@linkurl{\Hurl{#1://#2}}{http://mirror.ctan.org/#2}% + \else + \hyper@linkurl{\Hurl{#1://#2}}{#1://#2}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% We have to setup \textsf{hyperref}: +% \begin{macrocode} +\AtBeginDocument{% + \iffree{% + \hypersetup{% + plainpages=false, + pdftitle={\GuideTitle}, + pdfauthor={Markus Kohm}, + pdfsubject={\GuideSubject}, + pdfkeywords={\KOMAScript, scrbook, scrreprt, scrartcl, + typearea, scrlfile, scrlayer, scrlayer-scrpage, scrlayer-notecolumn, + scrletter, scrlttr2, scraddr, scrtime, scrdate, scrwfile}, + pdfcreator={\KOMAScript, hyperref} + }% + }{}% +} +% \end{macrocode} +% +% \begin{macro}{\autopageref} +% This is something like |\autoref| but with page reference. A simple +% definition would use |\hyperref| and |\pageref*|. But I want to allow to +% decide if the reference is the page or the label. So this definition is +% more like |\autoref|. +% \begin{macrocode} +\DeclareRobustCommand{\autopageref}[1]{% + \expandafter\auto@setpageref\csname r@#1\endcsname + \@secondoffive + {#1}% +} +% \end{macrocode} +% \begin{macro}{\auto@setpageref} +% This is the \emph{worker} macro. It checks for the label and trys to set +% either a reference to the page or a reference to the label. +% \begin{macrocode} +\newcommand*{\auto@setpageref}[3]{% + \@safe@activestrue + \ifx#1\relax + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{% + Reference `#3' on page \thepage \space undefined% + }% + \else + \def\@currentHtag{\pageautorefname~}% + \if@pagereftolabel + \hyper@@link + {\expandafter\@fifthoffive#1}% + {\expandafter\@fourthoffive#1\@empty\@empty}% + {\@currentHtag\expandafter#2#1\@empty\@empty\null}% + \else + \hyper@@link + {\expandafter\@fifthoffive#1}% + {page.\expandafter\@secondoffive#1\@empty\@empty}% + {\@currentHtag\expandafter#2#1\@empty\@empty\null}% + \fi + \fi + \@safe@activesfalse +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \section{Entries to \contentsname, \figurelistname, etc.} +% +% We have large page numbers, so better setup the needed width. And we like +% other dot seperation. +% \begin{macrocode} +\usetocstyle{classic} +\renewcommand*{\@pnumwidth}{1.8em}% 1.67 +\renewcommand*\@tocrmarg {2.70em}% 2.55em +\renewcommand*\@dotsep{2.5} +\settocfeature[toc][-1]{entryhook}{% + \let\sg@numberline\numberline + \renewcommand*{\numberline}[1]{% + \sg@numberline{\partname~##1}% + ~\linebreak\nopagebreak\hspace*{-\@tempdima}% + }% + \def\autodot{: }% + \sectfont +} +% \end{macrocode} +% +% \section{Part} +% +% We want another vertical spacing at part headings. +% \begin{macrocode} +\renewcommand*{\partheadstartvskip}{\vspace*{.1\textheight}} +\renewcommand*{\partheadmidvskip}{\par\nobreak\vspace{.5\baselineskip}} +\renewcommand*{\partpagestyle}{empty} +% \end{macrocode} +% +% +% \section{Logos} +% +% I don't want to use package \textsf{hologo} for only one logo: +% \begin{macrocode} +\DeclareRobustCommand{\XeTeX}{% + X\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\kern-.10em\TeX% +}% +\DeclareRobustCommand{\XeLaTeX}{% + X\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\kern-.10em\LaTeX% +}% +% \end{macrocode} +% +% \section{Appendix} +% +% \begin{macro}{\appendix} +% Use only first if used more than once. With this, every appendix file may +% start with |\appendix|. +% \begin{macrocode} +\g@addto@macro\appendix{\global\let\appendix\relax} +% \end{macrocode} +% \end{macro} +% +% \section{Bibliography} +% +% \begin{macro}{\BibTeX} +% I use the same hack like the \LaTeX{} team uses at \texttt{ltlogos.dtx} +% for |\LaTeX|: +% \begin{macrocode} +\DeclareRobustCommand{\BibTeX}{B\kern-.05em% + \hbox{$\m@th$% + \csname S@\f@size\endcsname \fontsize\sf@size\z@ + \math@fontsfalse\selectfont + I\kern-.025emB}% + \kern-.08em% + \-\TeX% +} +% \end{macrocode} +% \end{macro} +% +% Use of a preamble and sime other usefull changes. +% \begin{macrocode} +\AtBeginDocument{% + \setbibpreamble{\GuideBibPreamble\bigskip}% + \selectbiblanguage{\languagename}% + \bibliographystyle{babalpha-fl}% + \renewcommand*{\@openbib@code}{% + \setlength{\parsep}{0pt}% + \renewcommand*{\btxauthorcolon}[1]{:\par\nobreak}% + \renewcommand*{\btxurlfont}{\par\nobreak\url}% + \raggedright + }% +} +% \end{macrocode} +% +% The generated argument of thebibliography is to short: +% \begin{macrocode} +\newcommand*{\OrigTheBibliography}{} +\let\OrigTheBibliography\thebibliography +\renewcommand*{\thebibliography}[1]{% + \OrigTheBibliography{XXXX99}% +} +% \end{macrocode} +% +% +% \section{Index} +% +% This is realy tricky. The index depends on an external perl script, which +% splits the one index into several indexes. But first of all, we need to make +% the raw index. +% \begin{macrocode} +\makeindex +% \end{macrocode} +% +% Use of a preamble: +% \begin{macrocode} +\AtBeginDocument{\setindexpreamble{\GuideIndexPreamble\bigskip}} +% \end{macrocode} +% +% \begin{macro}{\ifusemultiindex} +% Now let's decide wether to use one index or to use a multi part index. +% \begin{macrocode} +\newif\ifusemultiindex +\IfFileExists{\jobname-gen.ind}{\usemultiindextrue}{\usemultiindexfalse} +\ifusemultiindex +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\printmultiindex} +% \changes{v1.11a}{2016/11/02}{index label generation delayed}^^A +% Print one part of the multi part index. +% \begin{macrocode} + \newcommand*{\printmultiindex}[3][]{% + \begingroup + \def\indexname{#2}% +% \end{macrocode} +% \begin{macro}{\CrossIndex} +% Produce a reference from one index to another. The macro |\UseIndex| tells +% the external splitt processor the index to be used for that entry. The +% first argument is the entry to the index. The second is the shortcut of +% the source index and the third is the shortcut of the index with the main +% entry for the entry from first argument. This macro should be used at the +% preamble of one part of the multi part index only. Because of this, it's +% defined here only. +% \begin{macrocode} + \newcommand*{\CrossIndex}[3]{% + \Index{##1=\UseIndex{##2}\protect##1>##3=\UseIndex{##2}\SeeSign + \protect##3}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} + \ifx\relax#1\relax\let\index@preamble=\relax + \else\def\index@preamble{#1}% + \fi + \def\index@setlabel{\label{idx:#3}}% + \@input@{\jobname-#3.ind}% + \endgroup + } +% \end{macrocode} +% \begin{environment}{theindex} +% I don't want every part of the index starting a new page. So I'll use the +% \textsf{multicol} package to generate the two columns instead of +% |\twocolumn|. +% \begin{macrocode} + \renewenvironment{theindex}{% + \setchapterpreamble{\index@preamble} + \begin{multicols}{2}[\idx@heading\vspace{-1\baselineskip}][.2\textheight]% + \parindent\z@ + \setlength{\parskip}{\z@ \@plus .3\p@}% + \setlength{\parfillskip}{\z@ \@plus 1fil}% + \let\item\@idxitem + \small\csname index@setlabel\endcsname + }{% + \end{multicols}% + } +% \end{macrocode} +% \end{environment} +% \end{macro} +% +% \begin{macro}{\printindex} +% Print the full index. +% \begin{macrocode} + \renewcommand*{\printindex}{% + \setchapterpreamble{\index@preamble}% + \addchap{\indexname}% + \let\index@preamble=\relax + \renewcommand*\idx@heading{% + \addsec{\indexname}% + \ifx\index@preamble\relax + \else\index@preamble\let\index@preamble=\relax\fi + }% + \printmultiindex{\GuidegenIndex}{gen}% + \printmultiindex[% + \CrossIndex{\GuideMacro}{gen}{\GuidecmdIndexShort}% + \CrossIndex{\GuideEnvironment}{gen}{\GuidecmdIndexShort}% + \CrossIndex{\GuideCounter}{gen}{\GuidecmdIndexShort}% + \CrossIndex{\GuideLength}{gen}{\GuidecmdIndexShort}% + ]{\GuidecmdIndex}{cmd}% + \printmultiindex[% + \CrossIndex{\GuideLength}{gen}{\GuidelenIndexShort}% + \CrossIndex{\GuidePLength}{gen}{\GuidelenIndexShort}% + \CrossIndex{\GuideCounter}{gen}{\GuidelenIndexShort}% + ]{\GuidelenIndex}{len}% + \printmultiindex[% + \CrossIndex{\GuideFontElement}{gen}{\GuideelmIndexShort}% + ]{\GuideelmIndex}{elm}% + \printmultiindex[% + \CrossIndex{\GuideFile}{gen}{\GuidefilIndexShort}% + \CrossIndex{\GuidePackage}{gen}{\GuidefilIndexShort}% + \CrossIndex{\GuideClass}{gen}{\GuidefilIndexShort}% + ]{\GuidefilIndex}{fil}% + \printmultiindex[% + \CrossIndex{\GuideOption}{gen}{\GuideoptIndexShort}% + ]{\GuideoptIndex}{opt}% + } +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\indexsection} +% Heading of the next section (e.g. the next character) at an index. +% \begin{macrocode} +\newcommand*{\indexsection}[1]{% + \ifx\empty#1\empty\else + \hspace{0pt plus 2fil}{{\usekomafont{disposition} #1}}\hspace{0pt plus + 1fil}\nopagebreak + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\indexdelim} +% \begin{macro}{\indexdelimi} +% \begin{macro}{\indexdelimii} +% The delimiter after the index topic but before the page number. There are +% three index levels, so there are three delimiters too. +% \begin{macrocode} +\newcommand*{\indexdelim}{\ \hspace{0pt plus 1fil}\penalty0\null\nobreak + \dotfill~} +\newcommand*{\indexdelimi}{~\dotfill\penalty0\ } +\newcommand*{\indexdelimii}{~\dotfill\penalty0\ } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\UseIndex} +% This macro does nothing but shows the external index split processor the +% destination index. +% \begin{macrocode} +\DeclareRobustCommand*{\UseIndex}[1]{\ignorespaces} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\SeeSign} +% The symbol used to sign a reference at an index. +% \begin{macrocode} +\DeclareRobustCommand*{\SeeSign}{\ensuremath{\protect\rightarrow}~} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AddSeeIndex} +% Add »\emph{see another index}« entry to an index. First argument is an +% index entry to the index with shortcut of second argument. The third +% argument is the name of another index given also by the shortcut at the +% fourth argument. +% \begin{macrocode} +\newcommand*{\AddSeeIndex}[4]{% + \ifusemultiindex + \Index[seeindex{#4}]{#1=\UseIndex{#2}#1>#3=\UseIndex{#2}\SeeSign#3}% + \fi +} +% \end{macrocode} +% \begin{macro}{\seeindex} +% Page number style of references to another index. This eats the page +% number of the index entry and set's a page number reference to the label +% of the other index. Don't use this on your own. This is need by +% |\AddSeeIndex|. +% \begin{macrocode} +\newcommand*{\seeindex}[2]{\pageref{idx:#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\IndexSeeAt} +% A more general version of |\AddSeeIndex|. First (optional) argument is a +% entry note (e.g. |\GuidePagestyle|). This is only used if option +% \texttt{moreindexnotes} was set. Second argument is the entry. Third is +% the shortcut of the source index, the index the entry should be set. +% Fourth is the shortcut of the destination index, the index the entry +% should reference. Fifth is the name of that index. Sixth is the output +% command (e.g. |\Macro|) for the entry. +% \begin{macrocode} +\newcommand*{\IndexSeeAt}[6][\relax]{% + \ifusemultiindex + \if@moreindexnotes + \edef\@tempa{idx@f@\string#1.\string#2.#3.#4}% + \else + \edef\@tempa{idx@f@\string#2.#3.#4}% + \fi + \expandafter\ifx\csname \@tempa\endcsname\relax + \expandafter\gdef\csname \@tempa\endcsname{}% + \begingroup + \@tempswatrue + \if@moreindexnotes + \ifx\relax#1\relax\else\@tempswafalse + \Index[seeindex{#4}]{% + #2 (#1)=\UseIndex{#3}#6{#2} (\protect#1)>% + #5=\UseIndex{#3}\SeeSign\protect#5}% + \fi + \fi + \if@tempswa + \Index[seeindex{#4}]{% + #2=\UseIndex{#3}#6{#2}>#5=\UseIndex{#3}\SeeSign\protect#5}% + \fi + \endgroup + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Index} +% Primary index command. First (optional) argument is the page number style +% of the entry. Second argument is the entry. The page number style should +% be either \texttt{indexother} or \texttt{indexmain}. Default is +% \texttt{indexother}. +% \begin{macrocode} +\newcommand*{\Index}[2][indexother]{\index{#2|#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BeginIndex} +% \begin{macro}{\EndIndex} +% Its also usefull to define index range entries. These have three +% arguments. First (optiona) argument is the page number style. Default of +% this parameter is \texttt{indexmain}. See |\Index| for more information +% about this parameter. The second parameter is the kind of index +% entry. This is not the same like the name or shortcut of an index! See +% |\Define|\dots|Index| for more information about the kind of an index +% entry. The third argument is the index entry. +% \begin{macrocode} +\newif\ifnolabel +\def\nolabelfalse{\global\let\ifnolabel\iffalse}% +\def\nolabeltrue{\global\let\ifnolabel\iftrue}% +\newcommand*{\BeginIndex}[3][indexmain]{% + \expandafter\ifx\csname Index#2\endcsname\relax + \GenericError{(scrguide)\@spaces\@spaces\@spaces\@spaces}{% + Document scrguide Error: \string\BeginIndex\space with unknown + index% + }{Check the \string\BeginIndex-command or add a new index type + ``#2''.}{% + See scrguide.cls for more information.}% + \else + \csname Index#2\endcsname[(%) + #1]{#3}% + \push@IndexStack{{\do{#1}{#2}{#3}}}% + \fi + % \ifnolabel\nolabelfalse\else + % \ifx\relax#2\relax\else + % \begingroup + % \def\SplitIndexValue##1~=##2~=##3\@nil{% + % ##1\expandafter\ifx\expandafter\relax##2\relax\else.##2\fi + % }% + % \let\PName\@gobble + % \let\PValue\@firstofone + % \let\ensuremath\@firstofone + % \let\textit\@firstofone + % \def~{\string~}% + % \lowercase{\def\@tempa{#2}}% + % \edef\@tempa{\label@base.\@tempa.\SplitIndexValue#3~=~=\@nil}% + % \pdfstringdef\@tempb{\@tempa}% + % \expandafter\ifx\csname \@tempb\endcsname\relax + % \expandafter\xdef\csname \@tempb\endcsname{\the\inputlineno}% + % \xdef\@currentHref{\@tempb}% + % \ClassInfo{scrguide}{Anchor: `\@currentHref'}% + % \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + % \label{desc:\@tempa}% + % \else + % \ClassWarning{scrguide}{% + % Label \@tempa\space already defined at \csname + % \@tempb\endcsname,\MessageBreak + % ignored}% + % \fi + % \endgroup + % \fi + % \fi + \penalty\@M\ignorespaces +} +\newlength\PreserveSkip +\newcount\PreservePenalty +\newcommand*{\CloseIndex}[3][indexmain]{% + \PreservePenalty\lastpenalty + \ifvmode\PreserveSkip\lastskip\else\unskip\PreserveSkip\z@\fi + \ifdim \PreserveSkip>\z@ + \vskip -\PreserveSkip + \fi + \penalty\@M + \expandafter\ifx\csname Index#2\endcsname\relax + \GenericError{(scrguide)\@spaces\@spaces\@spaces\@spaces}{% + Document scrguide Error: \string\EndIndex\space with unknown + index% + }{Check the \string\BeginIndex-command or add a new index type + ``#2''.}{% + See scrguide.cls for more information.}% + \else + \csname Index#2\endcsname[%( + )#1]{#3}% + \fi + \ifdim\PreserveSkip >\z@ + \vskip\PreserveSkip + \fi + \penalty\PreservePenalty +} +\newcommand*{\EndIndex}[3][indexmain]{% + \begingroup + \@tempswatrue + \def\do##1##2##3{% + \ifstr{#1}{##1}{% + \ifstr{#2}{##2}{% + \ifstr{\detokenize{#3}}{\detokenize{##3}}{}{\@tempswafalse}% + }{\@tempswafalse}% + }{\@tempswafalse}% + \if@tempswa + \else + \ClassError{scrguide}{Index stack error}{% + Should pop \string\do{#1}{#2}{\detokenize{#3}}\MessageBreak + but have \string\do{##1}{##2}{\detokenize{##3}}% + }% + \push@IndexStack{{\do{##1}{##2}{##3}}}% + \fi + }% + \def\StopIndexGroup{% + \ClassError{scrguide}{Index stack error}{% + Should pop \string\do{#1}{#2}{\detokenize{#3}}\MessageBreak + but have \string\StopIndexGroup + }% + \push@IndexStack{\StopIndexGroup}% + }% + \expandafter\pop@IndexStack\@IndexStack\@nil + \endgroup + \CloseIndex[#1]{#2}{#3}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +\let\@IndexStack\@empty +\newcommand*{\push@IndexStack}[1]{% Einen Eintrag auf den Index Stapel werfen. + \xdef\@IndexStack{\unexpanded{#1}\unexpanded\expandafter{\@IndexStack}}% +} +\newcommand*{\BeginIndexGroup}{% Am Anfang einer Gruppe auf den Stack die + % Index-Gruppen-Trennmarke packen. + \push@IndexStack{\StopIndexGroup}% +} +\newcommand*{\EndIndexGroup}{% Den Stapel bis zur nächsten Stop-Marke + % verarbeiten. + \ifx\@IndexStack\@empty + \ClassError{scrguide}{cannot end index group}{% + You've told me to end the current index group,\MessageBreak + but there is no more index group open% + }% + \else + \begingroup + \let\StopIndexGroup\@tempswafalse + \@tempswatrue%( + \def\do##1##2##3{% + \CloseIndex[##1]{##2}{##3}% + }% + \@whilesw \if@tempswa \fi {% + \expandafter\pop@IndexStack\@IndexStack\@nil + }% + \endgroup + \fi +} +\def\pop@IndexStack#1#2\@nil{% Ein Argument von Stapel holen und verarbeiten. + \gdef\@IndexStack{#2}#1% +} +\newcommand*\CleanUpIndexStack{% + \ifx\@IndexStack\@empty\else + \ClassError{scrguide}{Index stack error}{% + The index stack should be empty\MessageBreak + but it still contains: \MessageBreak + \expandafter\detokenize\expandafter{\@IndexStack}% + }% + \begingroup + \let\StopIndexGroup\relax + \def\do##1##2##3{% + \CloseIndex[##1]{##2}{##3}% + }% + \@IndexStack + \global\let\@IndexStack\@empty + \endgroup + \fi +} +\AtEndDocument{\CleanUpIndexStack} +\l@preto@macro\chapter{\CleanUpIndexStack} +\l@preto@macro\part{\CleanUpIndexStack} +% +% Now we have to define different kinds of index entries. We have entries that +% will be added to only one index. We have entries that will be added to one +% index with reference to that index at another index. And there are even +% entries that will be added to one index with reference to to that index from +% another index and from the main index. +% \begin{macro}{\DefineSingeIndex} +% This defines a single index entry, e.g. of commands. A macro will be +% defined that addes the entry only to one index. First (optional) +% agrument is a not, which shows the kind of entry (e.g. |\GuideMacro|). The +% second is the macro postfix (e.g. \texttt{Cmd} would define |\IndexCmd|). +% The third is the shortcut of the index to bee used +% (e.g. \texttt{cmd}). The fourth argument is the command to be used to +% output (format) the index entries (e.g. |\Macro|). +% \begin{macrocode} +\newcommand*{\DefineSingleIndex}[4][\relax]{% + \ifx\relax#1\relax + \expandafter\newcommand\expandafter*% + \csname Index#2\endcsname[2][indexother]{% + \Index[##1]{##2=\UseIndex{#3}#4{##2}}% + }% + \else + \expandafter\newcommand\expandafter*% + \csname Index#2\endcsname[2][indexother]{% + \Index[##1]{##2 (#1)=\UseIndex{#3}#4{##2} (\protect #1)}% + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\DefineDoubleIndex} +% This defines a double index entry, e.g. of page styles. A macro will be +% defined that adds the entry to an index and also adds a reference entry to +% the main index. See |\DefineSingleIndex| for informations about the +% parameters. If a note was given (first optional argument) it will be used +% to make a top level entry to the main index with the corresponding +% subentry. +% \begin{macrocode} +\newcommand*{\DefineDoubleIndex}[4][\relax]{% + % #1 = optional entry note (\GuidePagestyle) + % #2 = index macro postfix (Pagestyle) + % #3 = see-from-index to be used (cmd) + % #4 = output command (\Macro) + \ifx\relax#1\relax + \expandafter\newcommand\expandafter*% + \csname Index#2\endcsname[2][indexother]{% + \Index[##1]{##2=\UseIndex{gen}#4{##2}}% + \IndexSeeAt{##2}{#3}{gen}{\GuidegenIndex}{#4}% + }% + \else + \expandafter\newcommand\expandafter*% + \csname Index#2\endcsname[2][indexother]{% + \Index[##1]{##2 (#1)=\UseIndex{gen}#4{##2} (\protect #1)}% + \Index[##1]{\csname Guide#2IndexCategoryExpanded\endcsname=\UseIndex{gen}\expandafter\protect\csname Guide#2IndexCategory\endcsname>##2=\UseIndex{gen}#4{##2}}% + \IndexSeeAt[#1]{##2}{#3}{gen}{\GuidegenIndex}{#4}% + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\DefineTripleIndex} +% This defines a triple index entry, e.g. of lengths. A macro will be +% defined that adds the entry to an index and also adds a reference entry to +% another index and the main index. The first (optional) argument is a note +% (e.g. (|\GuideLength|) that will be used to generate a top level index +% entry to the main index. The second argument is the macro postfix +% (e.g. \texttt{Length} to define |\IndexLength|). The third argument is the +% shortcut of the primary index (e.g. \texttt{len}). The fourth argument is +% the short name of that index (e.g. |\GuidelenIndexShort|). The fifth +% argument is the shortcut of the index to put the reference into +% (e.g. \texttt{cmd}). The sixth argument is the output command of the index +% entry (e.g. |\Length|). +% \begin{macrocode} +\newcommand*{\DefineTripleIndex}[6][\relax]{% + % #1 = optional entry note (\GuideLength) + % #2 = index macro postfix (Length) + % #3 = index to be used (len) + % #4 = index name (\GuidelenIndexShort) + % #5 = also-from-index to be used (cmd) + % #6 = output command (\Macro) + \ifx\relax#1\relax + \expandafter\newcommand\expandafter*% + \csname Index#2\endcsname[2][indexother]{% + \IndexSeeAt{##2}{gen}{#3}{#4}{#6}% + \IndexSeeAt{##2}{#5}{#3}{#4}{#6}% + \Index[##1]{##2=\UseIndex{#3}#6{##2}}% + \IndexSeeAt{##2}{#3}{gen}{\GuidegenIndex}{#4}% + }% + \else + \expandafter\newcommand\expandafter*% + \csname Index#2\endcsname[2][indexother]{% +% \IndexSeeAt[#1]{##2}{gen}{#3}{#4}{#6}% +% \Index[##1]{#1=\UseIndex{gen}\protect#1>##2=\UseIndex{gen}#6{##2}}% + \IndexSeeAt[#1]{##2}{#5}{#3}{#4}{#6}% + \Index[##1]{##2 (#1)=\UseIndex{#3}#6{##2} (\protect #1)}% + }% + \fi +} +% \end{macrocode} +% \end{macro} +% +% After this, let's define all used kinds of index entries: +% \begin{macrocode} +\DefineSingleIndex{Cmd}{cmd}{\Macro} +\DefineDoubleIndex[\GuidePagestyle]{Pagestyle}{cmd}{\PValue} +\DefineDoubleIndex[\GuideFloatstyle]{Floatstyle}{cmd}{\PValue} +\DefineTripleIndex[\GuideCounter]{Counter} + {len}{\GuidelenIndexShort}{cmd}{\Counter} +\DefineTripleIndex[\GuideLength]{Length} + {len}{\GuidelenIndexShort}{cmd}{\Length} +\ifusemultiindex + \DefineSingleIndex[\GuideEnvironment]{Env}{cmd}{\Environment} + \DefineSingleIndex{Option}{opt}{\Option} + \DefineSingleIndex[\GuidePackage]{Package}{fil}{\Package} + \DefineSingleIndex[\GuideClass]{Class}{fil}{\Class} + \DefineSingleIndex{File}{fil}{\File} + \DefineSingleIndex[\GuideVariable]{Variable}{cmd}{\Variable} + \DefineSingleIndex{FontElement}{elm}{\FontElement} + \DefineSingleIndex{PLength}{len}{\PLength} +\else + \DefineDoubleIndex[\GuideEnvironment]{Env}{cmd}{\Environment} + \DefineDoubleIndex{Option}{opt}{\Option} + \DefineDoubleIndex[\GuidePackage]{Package}{fil}{\Package} + \DefineDoubleIndex[\GuideClass]{Class}{fil}{\Class} + \DefineDoubleIndex{File}{fil}{\File} + \DefineDoubleIndex[\GuideVariable]{Variable}{cmd}{\Variable} + \DefineDoubleIndex{FontElement}{elm}{\FontElement} + \DefineDoubleIndex{PLength}{len}{\PLength} +\fi +% \end{macrocode} +% +% \begin{macro}{\indexrm} +% \begin{macro}{\indexother} +% \begin{macro}{\indexit} +% \begin{macro}{\indexbf} +% \begin{macro}{\indexmain} +% \begin{macro}{\indexsl} +% \begin{macro}{\indexsf} +% \begin{macro}{\indexsc} +% Some helpers to get page numbers with different fontification but hyper +% links. +% \begin{macrocode} +\newcommand*{\indexrm}[1]{\textrm{\hyperpage{#1}}} +\newcommand*{\indexother}{}\let\indexother\indexrm +\newcommand*{\indexit}[1]{\textit{\hyperpage{#1}}} +\newcommand*{\indexbf}[1]{\textbf{\hyperpage{#1}}} +\newcommand*{\indexmain}{}\let\indexmain\indexbf +\newcommand*{\indexsl}[1]{\textsl{\hyperpage{#1}}} +\newcommand*{\indexsf}[1]{\textsf{\hyperpage{#1}}} +\newcommand*{\indexsc}[1]{\textsc{\hyperpage{#1}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +\endinput +% +%%% Local Variables: +%%% mode: doctex +%%% TeX-master: "test.tex" +%%% End: diff --git a/macros/latex/contrib/koma-script/source-doc/scrguide.gst b/macros/latex/contrib/koma-script/source-doc/scrguide.gst new file mode 100644 index 0000000000..3df00f56dd --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/scrguide.gst @@ -0,0 +1,63 @@ +% ====================================================================== +% scrguide.gst +% Copyright (c) Markus Kohm, 2002-2012 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrguide.gst +% Copyright (c) Markus Kohm, 2002-2012 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% MakeIndex style for change log generation based on `scrguide.ist'. +% +% Usage: makeindex -r -s scrguide.gst -o scrguide.chn scrguide.glo +% ---------------------------------------------------------------------- +% MakeIndex-Style fuer die Aenderungsliste der KOMA-Script-Anleitung +% Dies basiert auf "scrguide.ist" +% +% Verwendung: makeindx -r -s scrguide.gst -o scrguide.chn scrguide.glo +% ====================================================================== +% +level '>' +actual '=' +encap '|' +quote '~' +% +preamble "\\begin{thechangelog}\n" +postamble "\n\\end{thechangelog}\n" +% +delim_0 "~\\dotfill~" +delim_1 "~\\dotfill~" +delim_2 "~\\dotfill~" +% +headings_flag 0 +% +keyword "\\glossaryentry" +% +% Ende der Datei `scrguide.gst' diff --git a/macros/latex/contrib/koma-script/source-doc/scrguide.ist b/macros/latex/contrib/koma-script/source-doc/scrguide.ist new file mode 100644 index 0000000000..9f603a940e --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/scrguide.ist @@ -0,0 +1,52 @@ +% ---------------------------------------------------------------------- +% scrguide.ist +% Copyright (c) Markus Kohm, 2002-2012 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrguide.ist +% Copyright (c) Markus Kohm, 2002-2012 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% See `man makeindex` for informations about makeindex styles. +% +level '>' +actual '=' +encap '|' +quote '~' +delim_0 "\\indexdelim" +delim_1 "\\indexdelimi" +delim_2 "\\indexdelimii" +heading_prefix "\\indexsection{" +heading_suffix "}\n" +headings_flag 1 +symhead_positive "" +% +% end of file `scrguide.ist' diff --git a/macros/latex/contrib/koma-script/source-doc/scrpage2.tex b/macros/latex/contrib/koma-script/source-doc/scrpage2.tex new file mode 100644 index 0000000000..ce59a85ff3 --- /dev/null +++ b/macros/latex/contrib/koma-script/source-doc/scrpage2.tex @@ -0,0 +1,2963 @@ +% ====================================================================== +% scrpage2.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrpage2.tex +% Copyright (c) Markus Kohm, 2001-2018 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrpage2 +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel über scrpage2 +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\begin{filecontents*}{\jobname-ngerman.tex} +\input{ngerman/guide-ngerman.tex} +% \section{Jens-Uwe's Example Text} +% +% TODO: These should be merged with other example text. +% \begin{macro}{\XmpText} +% Example text command; the default definition (50) returns the whole text. +% \begin{macrocode} +\newcommand*{\XmpText}[1][50]{% + \ifnum #1<51 + Dieser Blindtext wird gerade von 130 Millionen Rezeptoren + Ihrer Netzhaut erfasst. + \ifnum #1>1 + Die Zellen werden dadurch in einen Erregungs\char\defaulthyphenchar + \kern-1pt\linebreak + \ifnum #1>2 + zustand versetzt, der sich vom Sehnerv in den + \ifnum #1>3 + hinteren Teil Ihres Gehirns ausbreitet. + Von dort aus \"ubertr\"agt sich die Erregung in + Sekundenbruchteilen auch in andere Bereiche Ihres + Gro\ss hirns. + Ihr Stirnlappen wird stimuliert. + Von dort aus gehen jetzt Willens\char\defaulthyphenchar + \kern-1pt\linebreak + \fi\fi\fi + \fi + \ifnum #1>49 + impulse aus, die Ihr zentrales Nervensystem in konkrete Handlungen + umsetzt. Kopf und Augen reagieren bereits. + Sie folgen dem Text, nehmen die darin enthaltenen Informationen + auf und leiten diese \"uber den Sehnerv weiter. + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\XmpTopText} +% \begin{macro}{\XmpBotText} +% These two commands are language-dependent, since in some languages +% additional commands may required. +% \begin{macrocode} +\newcommand*{\XmpTopText}{\XmpText[3]} +\newcommand*{\XmpBotText}{\XmpText[2]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\XmpMarginTextA} +% \begin{macro}{\XmpMarginTextB} +% Margin notes. +% \begin{macrocode} +\newcommand*{\XmpMarginTextA}{Netzhaut} +\newcommand*{\XmpMarginTextB}{(\textit{Retina})} +% \end{macrocode} +% \end{macro} +% \end{macro} +\end{filecontents*} + +\begin{filecontents*}{\jobname-english.tex} +\input{english/guide-english.tex} +% \begin{macro}{\XmpText} +% Example text command; the default definition (50) returns the whole text. +% \begin{macrocode} +\newcommand*{\XmpText}[1][50]{% + \ifnum #1<51 + This f\/ill text is currently seized by 130 million receptors + in your retina. + \ifnum #1>1 + Thereby the nerve cells are put in a state of stimulation, + which spreads + \ifnum #1>2 + into the rear part of your brain originating from + \ifnum #1>3 + the optic nerve. + From there the stimulation is transmitted in a split second + also in other parts of your cerebrum. + Your frontal lobe becomes stimulated. + Intention-impulses spread from there, which your + central nervous\setlength{\parfillskip}{0pt}% + \fi\fi\fi + \fi + \ifnum #1>49 + system transforms in actual deeds. + Head and eyes already react. + They follow the text, taking the information present there + and transmit them via the optic nerve. + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\XmpTopText} +% \begin{macro}{\XmpBotText} +% These two commands are language-dependent, since in some languages +% additional commands may required. +% \begin{macrocode} +\newcommand*{\XmpTopText}{\XmpText[3]} +\newcommand*{\XmpBotText}{\XmpText[2]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\XmpMarginTextA} +% \begin{macro}{\XmpMarginTextB} +% Margin notes. +% \begin{macrocode} +\newcommand*{\XmpMarginTextA}{Retina} +\newcommand*{\XmpMarginTextB}{} +% \end{macrocode} +% \end{macro} +% \end{macro} +\end{filecontents*} + +\documentclass[ngerman,english]{scrguide} + +\makeatletter +\renewcommand*{\@pnumwidth}{2em} +\makeatother + +\KOMAProvidesFile{scrpage2.tex}% + [$Date: 2013-07-22 $ + a user guide to obsolete package scrpage2] + +\begin{document} + +\addparttocentry{}{English} +\def\theHchapter{E.\thechapter} +\setcounter{chapter}{0} +\renewcommand*{\thepage}{E.\arabic{page}} +\title{The Obsolete Package \Package{scrpage2}} +\subtitle{Extract from former versions of the \KOMAScript{} Manual} +\author{Markus Kohm\and Jens-Uwe-Morakswi} +\date{2018-02-07} +\maketitle + +\tableofcontents + +\translator{Jens-Uwe Morawski\and Karl-Heinz Zimmer\and Christoph Bier\and + Gernot Hassenpflug\and Markus Kohm} + +\chapter{Adapting Page Headers and Footers with \Package{scrpage2}} +\labelbase{scrpage-en} + +% +\BeginIndexGroup +\BeginIndex{Package}{scrpage2}% +\BeginIndex{}{page>style} +From \KOMAScript{} 3.12 the completely newly implemented package +\Package{scrlayer-scrpage} replaces the old \Package{scrpage2}. The new +package is a consequently developed extension of the design of +\Package{scrpage2}. In difference to \Package{scrpage2} it provides the +extended option interface of the \KOMAScript{} classes. Because +\Package{scrlayer-scrpage} predominates \Package{scrpage2} it is recommended +to not longer use \Package{scrpage2} but \Package{scrlayer-scrpage}. Because +of this the current version of \Package{scrpage2} is the final one. All +development resources will go into \Package{scrlayer-scrpage}. For more +information about \Package{scrlayer-scrpage} see the \KOMAScript{} manual. + +\begin{Explain} + In place of \Package{scrpage2} or \Package{scrlayer-scrpage} you can of + course make use of \Package{fancyhdr}. However, \Package{scrpage2} and + especially \Package{scrlayer-scrpage} integrated markedly better with the + {\KOMAScript} bundle. For this reason, and because at the time the + forerunner to \Package{fancyhdr} was missing many features, + \Package{scrpage2} was developed. Naturally, \Package{scrpage2} and + \Package{scrlayer-scrpage} are not limited to use only with the + {\KOMAScript} classes, but can just as easily be used with other document + classes. +\end{Explain} + + +\section{Basic Functionality}\label{sec:scrpage-en.basics} + +\begin{Explain}% Introduction to headings + To understand the following description, an overview of {\LaTeX}'s fairly + involved header and footer mechanism is needed. The {\LaTeX} kernel defines + the page styles \PageStyle{empty}, which produces a completely empty header + and footer, and \PageStyle{plain}, which produces usually only a page number + in the footer and an empty header. Apart from these, many document classes + provide the style \PageStyle{headings}, which allows more complex style + settings and running + headings\Index{headings>running}\Index{headings>automatic}. The + \PageStyle{headings} style often has a related variant, + \PageStyle{myheadings}, which is similar except for switching off the + running headings\Index{headings>manual} and reverting them to manual control + by the user. A more detailed description is given in the page style section + of the \KOMAScript{} manual where it is also noted that some {\LaTeX} + commands automatically switch to another page style\,---\,usually page style + \PageStyle{plain}\,---\,for the current page. +\end{Explain} + + +Package \Package{scrpage2} does not distinguish between page styles with +automatic, running headings and page styles with manual headings. The way to +deal with automatic and manual headings is independent from the page style and +so the page style is independent from the choice of automatic or manual +headings. More information about this in \autoref{sec:scrpage-en.basics.mark}. + + +\subsection{Predefined Page Styles}\label{sec:scrpage-en.basics.buildIn} + +One of the basic features of \Package{scrpage2} is a set of predefined, +configurable page styles. + +% \lehead ... +% scrheadings +% \headmark \pagemark + +\begin{Declaration} + \PageStyle{scrheadings}% + \PageStyle{scrplain} +\end{Declaration}% +Package \Package{scrpage2} delivers its own page style, named +\PageStyle{scrheadings}, which can be activated with the +\Macro{pagestyle}\PParameter{scrheadings}. When this page style is in use, an +appropriate \PageStyle{scrplain} page style is used for the plain page style. +In this case \emph{appropriate} means that this new plain page style is also +configureable by the commands introduced in +\autoref{sec:scrpage-en.basics.format}, which, for example, configure the header +and footer width and complies within the basic layout. Neither the activation +of \PageStyle{scrheadings} nor the attendant change to the appropriate plain +page style, \PageStyle{scrplain}, influences the mode of manual or automatic +headings\Index{headings>automatic}\Index{headings>manual} (see +\autoref{sec:scrpage-en.basics.mark}). The \PageStyle{scrplain} page style can +also be activated directly with \Macro{pagestyle}. + + +\begin{Declaration} + \Macro{lehead}% + \OParameter{scrplain-left-even}\Parameter{scrheadings-left-even}% + \Macro{cehead}% + \OParameter{scrplain-center-even}\Parameter{scrheadings-center-even}% + \Macro{rehead}% + \OParameter{scrplain-right-even}\Parameter{scrheadings-right-even}% + \Macro{lefoot}% + \OParameter{scrplain-left-even}\Parameter{scrheadings-left-even}% + \Macro{cefoot}% + \OParameter{scrplain-center-even}\Parameter{scrheadings-center-even}% + \Macro{refoot}% + \OParameter{scrplain-right-even}\Parameter{scrheadings-right-even}% + \Macro{lohead}% + \OParameter{scrplain-left-odd}\Parameter{scrheadings-left-odd}% + \Macro{cohead}% + \OParameter{scrplain-center-odd}\Parameter{scrheadings-center-odd}% + \Macro{rohead}% + \OParameter{scrplain-right-odd}\Parameter{scrheadings-right-odd}% + \Macro{lofoot}% + \OParameter{scrplain-left-odd}\Parameter{scrheadings-left-odd}% + \Macro{cofoot}% + \OParameter{scrplain-center-odd}\Parameter{scrheadings-center-odd}% + \Macro{rofoot}% + \OParameter{scrplain-right-odd}\Parameter{scrheadings-right-odd}% + \Macro{ihead}% + \OParameter{scrplain-inside}\Parameter{scrheadings-inside}% + \Macro{chead}% + \OParameter{scrplain-centered}\Parameter{scrheadings-centered}% + \Macro{ohead}% + \OParameter{scrplain-outside}\Parameter{scrheadings-outside}% + \Macro{ifoot}% + \OParameter{scrplain-inside}\Parameter{scrheadings-inside}% + \Macro{cfoot}% + \OParameter{scrplain-centered}\Parameter{scrheadings-centered}% + \Macro{ofoot}% + \OParameter{scrplain-outside}\Parameter{scrheadings-outside} +\end{Declaration}% +The page style of \Package{scrpage2} are defined to have flexible configurable +header and footer. To achieve this, the page styles include three boxes in +both the header and the footer. The contents of these boxes may be modified +easily. The commands modifying the content of these boxes can be seen in +\autoref{fig:scrpage-en.leheadetall}. Commands in the middle column modify the +box contents on both odd and even pages. All of the commands have an optional +and a mandatory argument. The option Argument influences the content of +corresponding box of the plain page style, \PageStyle{scrplain}. The mandatory +argument influences the content of the corresponding box of the page style +\PageStyle{scrheadings}. + +\begin{figure} +% \centering + \setcapindent{0pt}% + \begin{captionbeside} + [Commands for modification of \Package{scrpage2} page styles elements]% + {Commands for modification of page styles \PageStyle{scrheadings} and + \PageStyle{scrplain} and their relationship to header and footer + elements} + [l] + \setlength{\unitlength}{.95mm}\begin{picture}(100,65)(0,8)\small + \put(0,12){\dashbox{2}(40,56){even page}} + \put(60,12){\dashbox{2}(40,56){odd page}} + % items top left + \put(1,63){\framebox(8,4){~}} + \put(16,63){\framebox(8,4){~}} + \put(31,63){\framebox(8,4){~}} + % items top right + \put(61,63){\framebox(8,4){~}} + \put(76,63){\framebox(8,4){~}} + \put(91,63){\framebox(8,4){~}} + % items bottom left + \put(1,13){\framebox(8,4){~}} + \put(16,13){\framebox(8,4){~}} + \put(31,13){\framebox(8,4){~}} + % items bottom right + \put(61,13){\framebox(8,4){~}} + \put(76,13){\framebox(8,4){~}} + \put(91,13){\framebox(8,4){~}} + % commands and arrow + % for twoside + % + \put(50,65){\makebox(0,0){\DescRef{scrpage-en.cmd.ihead}}} + \put(44,65){\vector(-1,0){4}}\put(56,65){\vector(1,0){4}} + \put(50,58){\makebox(0,0){\DescRef{scrpage-en.cmd.chead}}} + \put(44,58){\line(-1,0){24}}\put(56,58){\line(1,0){24}} + \put(20,58){\vector(0,1){4}}\put(80,58){\vector(0,1){4}} + \put(50,51){\makebox(0,0){\DescRef{scrpage-en.cmd.ohead}}} + \put(44,51){\line(-1,0){40}}\put(56,51){\line(1,0){40}} + \put(4,51){\vector(0,1){11}}\put(96,51){\vector(0,1){11}} + % + \put(50,15){\makebox(0,0){\DescRef{scrpage-en.cmd.ifoot}}} + \put(56,15){\vector(1,0){4}}\put(44,15){\vector(-1,0){4}} + \put(50,22){\makebox(0,0){\DescRef{scrpage-en.cmd.cfoot}}} + \put(44,22){\line(-1,0){24}}\put(56,22){\line(1,0){24}} + \put(20,22){\vector(0,-1){4}}\put(80,22){\vector(0,-1){4}} + \put(50,29){\makebox(0,0){\DescRef{scrpage-en.cmd.ofoot}}} + \put(44,29){\line(-1,0){40}}\put(56,29){\line(1,0){40}} + \put(4,29){\vector(0,-1){11}}\put(96,29){\vector(0,-1){11}} + % commands for oneside + \put(5,69){\makebox(0,0)[b]{\DescRef{scrpage-en.cmd.lehead}}} + \put(20,69){\makebox(0,0)[b]{\DescRef{scrpage-en.cmd.cehead}}} + \put(35,69){\makebox(0,0)[b]{\DescRef{scrpage-en.cmd.rehead}}} + % + \put(65,69){\makebox(0,0)[b]{\DescRef{scrpage-en.cmd.lohead}}} + \put(80,69){\makebox(0,0)[b]{\DescRef{scrpage-en.cmd.cohead}}} + \put(95,69){\makebox(0,0)[b]{\DescRef{scrpage-en.cmd.rohead}}} + % + \put(5,11){\makebox(0,0)[t]{\DescRef{scrpage-en.cmd.lefoot}}} + \put(20,11){\makebox(0,0)[t]{\DescRef{scrpage-en.cmd.cefoot}}} + \put(35,11){\makebox(0,0)[t]{\DescRef{scrpage-en.cmd.refoot}}} + % + \put(65,11){\makebox(0,0)[t]{\DescRef{scrpage-en.cmd.lofoot}}} + \put(80,11){\makebox(0,0)[t]{\DescRef{scrpage-en.cmd.cofoot}}} + \put(95,11){\makebox(0,0)[t]{\DescRef{scrpage-en.cmd.rofoot}}} + \end{picture} + \end{captionbeside} +% \caption[Commands for modification of \Package{scrpage2} page styles +% elements]% +% {Commands for modification of page styles \PageStyle{scrheadings} and +% \PageStyle{scrplain} and their relationship to header and footer +% elements} + \label{fig:scrpage-en.leheadetall} +\end{figure} + +\begin{Example} + If one wants the page number within \PageStyle{scrheadings} be placed in the + middle of the footer, then following can be used: +\begin{lstcode} + \cfoot{\pagemark} +\end{lstcode} + The next example shows how to place both running heading and page + number\Index{page>number}\Index{pagination} in the header; the running + heading\Index{headings} inside and the page number outside: +\begin{lstcode} + \ohead{\pagemark} + \ihead{\headmark} + \cfoot{} +\end{lstcode} + The command \Macro{cfoot}\PParameter{} is only required in order to + empty the item in the middle of the footer, which normally contains + the page number. +\end{Example} + +The commands which are associated with only one item can be used for +more advanced settings. + +\begin{Example} + Assuming one has the order to write an annual report of a company, one could + use commands like this: +\begin{lstcode} + \ohead{\pagemark} + \rehead{Annual Report 2001} + \lohead{\headmark} + \cefoot{TheCompanyName Inc.} + \cofoot{Department: Development} +\end{lstcode} + In order to keep the data in the footer synchronized with the content + of the document, the footer has to be updated using \Macro{cofoot} + when a new department is discussed in the report. +\end{Example} + +As mentioned above, there is a new plain page style which corresponds to +\PageStyle{scrheadings}. Since it should also be possible to customize this +style, the commands support an optional argument with which the contents of +the appropriate fields of this plain page style can be modified. + +\begin{Example} + The position of the page number for the page style \PageStyle{scrheadings} + can be declared as follows: +\begin{lstcode} + \cfoot[\pagemark]{} + \ohead[]{\pagemark} +\end{lstcode} + When the command \Macro{chapter}, after it has started a new page, now + switches to the page style \PageStyle{plain}, then the page number is + centered in the footer. +\end{Example} +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{clearscrheadings}% + \Macro{clearscrplain}% + \Macro{clearscrheadfoot} +\end{Declaration}% +If one wants to redefine both the page style \PageStyle{scrheadings} and +the corresponding plain page style, frequently one must empty +some already occupied page elements. Since one rarely fills all items +with new content, in most cases several instructions with empty +parameters are necessary. With the help of these three instructions +the quick and thorough deletion is possible. While +\Macro{clearscrheadings} only deletes all fields of the page style +\PageStyle{scrheadings}, and \Macro{clearscrplain} deletes all fields of +the corresponding plain page style, \Macro{clearscrheadfoot} +sets all fields of both page styles to empty. +\begin{Example} + If one wants to reset the page style to the default {\KOMAScript} + settings, independent of the actual configuration, only these three + commands are sufficient: +\begin{lstcode} + \clearscrheadfoot + \ohead{\headmark} + \ofoot[\pagemark]{\pagemark} +\end{lstcode} + Without the commands \Macro{clearscrheadfoot}, + \Macro{clearscrheadings} and \Macro{clearscrplain}, six commands with + additional nine empty arguments would be required: +\begin{lstcode} + \ihead[]{} + \chead[]{} + \ohead[]{\headmark} + \ifoot[]{} + \cfoot[]{} + \ofoot[\pagemark]{\pagemark} +\end{lstcode} + Of course, for a specific configuration, some of them could be + dropped.% +\end{Example}% +% +\EndIndexGroup +% +\EndIndexGroup + + +In the previous examples two commands were used which have not been +introduced yet. The description of these commands follows. + +\begin{Declaration} + \Macro{leftmark}% + \Macro{rightmark} +\end{Declaration}% +These two instructions make it possible to access the running headings, which +are normally meant for the left or for the right page. These two instruction +are not made available by \Package{scrpage2}, but directly by the {\LaTeX} +kernel. When in this section running headings of the left page or the right +page are mentioned, this refers to the contents of \Macro{leftmark} or +\Macro{rightmark}, respectively. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{headmark} +\end{Declaration}% +This command gives access to the content of running headings. In +contrast to \Macro{leftmark} and \Macro{rightmark}, one need not +regard the proper assignment to left or right page.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{pagemark} +\end{Declaration}% +This command returns the formatted page number. The formatting can be +controlled by \DescRef{scrpage-en.cmd.pnumfont}, introduced in +\autoref{sec:scrpage-en.basics.format}, \DescPageRef{scrpage-en.cmd.pnumfont}, +which \Macro{pagemark} heeds automatically.% +% +\EndIndexGroup + + +\begin{Declaration} + \PageStyle{useheadings} +\end{Declaration}% +The package \Package{scrpage2} is meant primarily for use of the supplied +styles or for defining one's own styles. However, it may be necessary to shift +back also to a style provided by the document class. It might appear that +this should be done with +\Macro{pagestyle}\PParameter{headings}\IndexCmd{pagestyle}, but this has the +disadvantage that commands \DescRef{scrpage-en.cmd.automark} and \DescRef{scrpage-en.cmd.manualmark}, to be +discussed shortly, do not function as expected. For this reason one should +shift back to the original styles using +\Macro{pagestyle}\PParameter{useheadings}\IndexCmd{pagestyle}, which chooses +the correct page styles automatically for both manual and automatic running +headings.% +% +\EndIndexGroup + + +\subsection{Manual and Running Headings} +\label{sec:scrpage-en.basics.mark} +% \automark \manualmark +\BeginIndexGroup +\BeginIndex{}{headings>running}% +\BeginIndex{}{headings>automatic}% +\BeginIndex{}{headings>manual}% +Usually there is a \emph{my}-version of the \PageStyle{headings} +page style. If such a page style is active, then the running headings +are no longer updated no longer automatically and become manual +headings. With \Package{scrpage2} a different path is taken. Whether +the headings are running or manual is determined by the instructions +\DescRef{scrpage-en.cmd.automark} and \DescRef{scrpage-en.cmd.manualmark}, respectively. The default +can be set already while loading of the package, with the options +\DescRef{scrpage-en.option.automark} and \DescRef{scrpage-en.option.manualmark} (see +\autoref{sec:scrpage-en.basics.options}, +\DescPageRef{scrpage-en.option.automark}). + + +\begin{Declaration} + \Macro{manualmark} +\end{Declaration}% +As the name suggests, \Macro{manualmark} switches off the updating of +the running headings and makes them manual. It is left to the user to +update and provide contents for the headings. For that purpose the +instructions \Macro{markboth}\IndexCmd{markboth} and +\Macro{markright}\IndexCmd{markright} are available.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{automark}\OParameter{right page}\Parameter{left page} +\end{Declaration}% +The macro \Macro{automark} activates the automatic updating, that is, running +headings. For the two parameters the designations of the document sectioning +level whose title is to appear in appropriate place are to be used. Valid +values for the parameters are: +\PValue{part}\ChangedAt{v2.2}{\Package{scrpage2}}, \PValue{chapter}, +\PValue{section}, \PValue{subsection}, \PValue{subsubsection}, +\PValue{paragraph}, and \PValue{subparagraph}. For most of the classes use of +\PValue{part} will not produce the expected result. So far only {\KOMAScript} +classes from version~2.9s up are known to support this value. The optional +argument \PName{right page} is understandably meant only for double-sided +documents. In the single-sided case one should normally not use it. With the +help of the option +\DescRef{scrpage-en.option.autooneside}\IndexOption{autooneside}\important{\DescRef{scrpage-en.option.autooneside}} +one can also set that the optional argument in single-sided mode is ignored +automatically (see \autoref{sec:scrpage-en.basics.options}, +\DescPageRef{scrpage-en.option.autooneside}). +% +\begin{Example} + Assuming that the document uses a \emph{book} class, whose topmost + section level is \emph{chapter}, then after a preceding + \DescRef{scrpage-en.cmd.manualmark} +\begin{lstcode} + \automark[section]{chapter} +\end{lstcode} + restores the original behaviour. If one prefers lower section levels + in running headings, the following can be used: +\begin{lstcode} + \automark[subsection]{section} +\end{lstcode} +% How useful the last declaration is, everybody has to decide +% for themselves. +\end{Example} + +\begin{Explain} + For the upper section level, the data of the headings is set by the command + \Macro{markboth}\IndexCmd{markboth}, while that for the lower section level + by \Macro{markright}\IndexCmd{markright} or + \Macro{markleft}\IndexCmd[indexmain]{markleft}. These commands are called + indirectly by the sectioning commands. The macro \Macro{markleft} is + provided by the package \Package{scrpage2} and is defined similarly to + \Macro{markright} in the {\LaTeX} kernel. Although \Macro{markleft} is not + defined as an internal command, the direct use is not recommended. +\end{Explain} +\EndIndexGroup +% +\EndIndexGroup + + +\subsection{Formatting of Header and Footer} +\label{sec:scrpage-en.basics.format} +% \headfont \pnumfont +% \setheadwidth \setfootwidth +% \set(head|foot)(top|sep|bot)line +The previous section concerned itself mainly with the contents of the +header and footer. This is of course not sufficient to satisfy +formative ambitions. Therefore we devote this section exclusively to +this topic. + +\begin{Declaration} + \Macro{headfont}% + \Macro{footfont}% + \Macro{pnumfont} +\end{Declaration}% +The command \Macro{headfont} contains the commands which determine the font of +header and footer lines. Command \Macro{footfont} contains the difference of +the footer to that. The difference for the style of the page number is defined +by the command \Macro{pnumfont}. +\begin{Example} + If, for example, one wants the header to be typeset in bold sans serif, the + footer in non-bold sans serif, and the page number in a slanted serif style, + then one can use the following definitions: +\begin{lstcode} + \renewcommand{\headfont}{\normalfont\sffamily\bfseries} + \renewcommand*{\footfont}{\normalfont\sffamily} + \renewcommand{\pnumfont}{\normalfont\rmfamily\slshape} +\end{lstcode} +\end{Example} + +\BeginIndex{FontElement}{pagehead}% +\BeginIndex{FontElement}{pagefoot}% +\BeginIndex{FontElement}{pagenumber}% +From version 2.8p of the {\KOMAScript} classes a new unified user interface +scheme is implemented for font attributes. If \Package{scrpage2} is used +together with one of these classes, then it is recommended to set up font +attributes in the manner described in the \KOMAScript{} manual. +\begin{Example} + Instead of \Macro{renewcommand} the command \Macro{setkomafont} + should be used to configure the font attributes. The previous + definitions can then be written as: +\begin{lstcode} + \setkomafont{pagehead}\normalfont\sffamily\bfseries} + \setkomafont{pagefoot}{\normalfont\sffamily} + \setkomafont{pagenumber}{\normalfont\rmfamily\slshape} +\end{lstcode} +\end{Example} +\EndIndexGroup + + +\begin{Declaration} +\Macro{setheadwidth}\OParameter{shift}\Parameter{width}% +\Macro{setfootwidth}\OParameter{shift}\Parameter{width} +\end{Declaration}% +Normally the widths of header and footer lines correspond to the width of the +text body. The commands +\Macro{setheadwidth}\Index{header>width}\Index{head>width} and +\Macro{setfootwidth}\Index{footer>width}\Index{foot>width} enable the user to +adapt in a simple manner the widths to his needs. The mandatory argument +\PName{width} takes the value of the desired width of the page header or +footer, while \PName{shift} is a length parameter by which amount the +appropriate item is shifted toward the outside page edge. + +For the most common situations the mandatory argument \PName{width} +accepts the following symbolic values: +\begin{labeling}[\,--]{\PValue{textwithmarginpar}} +\item[\PValue{paper}] the width of the paper +\item[\PValue{page}] the width of the page +\item[\PValue{text}] the width of the text body +\item[\PValue{textwithmarginpar}] the width of the text body including margin +\item[\PValue{head}] the current header width +\item[\PValue{foot}] the current footer width +\end{labeling} +The difference between \PValue{paper} and \PValue{page} is that \PValue{page} +means the width of the paper less the binding correction if the package +\Package{typearea}\IndexPackage{typearea} is used (see the chapter about +\Package{typearea} in the \KOMAScript{} manual). Without \Package{typearea} +both values are identical. + +\begin{Example} + Assume that one wants a layout like that of \emph{The + {\LaTeX}\,Companion}, where the header projects into the + margin. This can be obtained with: +\begin{lstcode} + \setheadwidth[0pt]{textwithmarginpar} +\end{lstcode} +% + which appears like this on an odd page: +% + \begin{XmpTopPage} + \XmpHeading{10,25}{85} + \thinlines\XmpRule{10,23}{85} + \XmpSetText[\XmpTopText]{10,21} + \XmpMarginNote{83,11.8} + \end{XmpTopPage} +% + If the footer line should have the same width and alignment, then two + ways to set this up are possible. The first way simply repeats the + settings for the case of the footer line: +\begin{lstcode} + \setfootwidth[0pt]{textwithmarginpar} +\end{lstcode} +% + In the second way the symbolic value \PValue{head} is used, since the + header already has the desired settings. +\begin{lstcode} + \setfootwidth[0pt]{head} +\end{lstcode} +\end{Example} + +If no \PName{shift} is indicated, i.\,e., without the optional argument, +then the header or footer appears arranged symmetrically on the page. +In other words, a value for the \PName{shift} is determined +automatically to correspond to the current page shape. +% +\begin{Example} + Continuing with the previous example, we remove the optional + argument: +\begin{lstcode} + \setheadwidth{textwithmarginpar} +\end{lstcode} +% + which appears like this on an odd page: +% + \begin{XmpTopPage} + \XmpHeading{5,25}{85} + \thinlines\XmpRule{5,23}{85} + \XmpSetText[\XmpTopText]{10,21} + \XmpMarginNote{83,11.8} + \end{XmpTopPage} +\end{Example} + +As can be seen, the header is now shifted inward, while the header +width has not changed. The shift is calculated in a way that the +configuration of the typearea become visible also here.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{setheadtopline}\OParameter{length}\Parameter{thickness}% + \OParameter{commands}% + \Macro{setheadsepline}\OParameter{length}\Parameter{thickness}% + \OParameter{commands}% + \Macro{setfootsepline}\OParameter{length}\Parameter{thickness}% + \OParameter{commands}% + \Macro{setfootbotline}\OParameter{length}\Parameter{thickness}% + \OParameter{commands} +\end{Declaration}% +Corresponding to the size configuration parameters of header and +footer there are commands to modify the rules above and below the +header and footer. But first of all the rules should be activated. See options +\DescRef{scrpage-en.option.headtopline}, \DescRef{scrpage-en.option.headsepline}, +\DescRef{scrpage-en.option.footsepline}, and \DescRef{scrpage-en.option.footbotline} in +\autoref{sec:scrpage-en.basics.options}, +\DescPageRef{scrpage-en.option.headsepline} for this. + +\begin{labeling}[\,--]{\Macro{setfootsepline}} +\item[\Macro{setheadtopline}] configures the line above the header +\item[\Macro{setheadsepline}] configures the line below the header +\item[\Macro{setfootsepline}] configures the line above the footer +\item[\Macro{setfootbotline}] configures the line below the footer +\end{labeling} + +The mandatory argument \PName{thickness} determines how strongly the +line is drawn. The optional argument \PName{length} accepts the same +symbolic values as \PName{width} for \DescRef{scrpage-en.cmd.setheadwidth}, as well as +also a normal length expression. As long as the optional argument +\PName{length} is not assigned a value, the appropriate line length +adapts automatically the width of the header or the footer. + +Use \PValue{auto} in the length argument to restore this automation +for the length of a line. + +\BeginIndexGroup +\BeginIndex{FontElement}{headtopline}% +\BeginIndex{FontElement}{headsepline}% +\BeginIndex{FontElement}{footsepline}% +\BeginIndex{FontElement}{footbotline}% +\BeginIndex{FontElement}{footbottomline}% +The\ChangedAt{v2.2}{\Package{scrpage2}} optional argument \PName{commands} may +be used to specify additional commands to be executed before the respective +line is drawn. For example, such commands could be used for changing the +color\Index{header>color}\Index{footer>color}% +\Index{head>color}\Index{foot>color}% +\Index{color>in header}\Index{color>in footer} of the line. When using a +{\KOMAScript} class you could also use +\Macro{setkomafont}\IndexCmd{setkomafont} to specify commands for one of the +elements \FontElement{headtopline}\important[i]{\FontElement{headtopline}\\ + \FontElement{headsepline}\\ + \FontElement{footsepline}\\ + \FontElement{footbottomline}}, \FontElement{headsepline}, +\FontElement{footsepline}, \FontElement{footbottomline}, or +\FontElement{footbotline}. These can then be extended via +\Macro{addtokomafont}\IndexCmd{addtokomafont}. See the \KOMAScript{} manual +for details on the \Macro{setkomafont} and \Macro{addtokomafont} commands. +\EndIndexGroup + + +\begin{Declaration} + \labelsuffix[auto+current] + \Macro{setheadtopline}\POParameter{auto}% + \PParameter{current}% + \labelsuffix[auto] + \Macro{setheadtopline}\POParameter{auto}% + \Parameter{}% + \labelsuffix[auto+] + \Macro{setheadtopline}\POParameter{auto}% + \Parameter{}\OParameter{} +\end{Declaration}% +The arguments shown here for the command \DescRef{scrpage-en.cmd.setheadtopline} are of +course valid for the other three configuration commands too. + +If the mandatory parameter has the value \PValue{current} or has been +left empty, then the line thickness is not changed. This may be used +to modify the length of the line without changing its thickness. + +If the optional argument \PName{commands} is omitted, then all command +settings that might have been specified before will remain active, +while an empty \PName{commands} argument will revoke any previously +valid commands. + +\begin{Example} + If the header, for example, is to be contrasted by a strong line of + 2\,pt above and a normal line of 0.4\,pt between header and body, + one can achieve this with: +\begin{lstcode} + \setheadtopline{2pt} + \setheadsepline{.4pt} +\end{lstcode} + Additionally\textnote{Attention!} the options \DescRef{scrpage-en.option.headtopline} and + \DescRef{scrpage-en.option.headsepline} have to be used preferably globally in the optional + argument of \Macro{documentclass}. In this case the result may be the + following. +% +\begin{XmpTopPage} + \XmpHeading{10,25}{70} + \thinlines\XmpRule{10,23}{70} + \thicklines\XmpRule{10,28}{70} + \XmpSetText[\XmpTopText]{10,21} + \XmpMarginNote{83,11.8} +\end{XmpTopPage} + + To specify that this line is to be drawn also, e.\,g., in red color, you + would change the commands like this: +\begin{lstcode} + \setheadtopline{2pt}[\color{red}] + \setheadsepline{.4pt}[\color{red}] +\end{lstcode} + In this example, as well as in the following one, line color is + activated by applying the syntax of the + \Package{color}\IndexPackage{color} package, so this package must of + course be loaded. Since \Package{scrpage2} comes without built-in + color handling, any package providing color support may be used. + + {\KOMAScript} classes also support the following way of color specification: +\begin{lstcode} + \setheadtopline{2pt} + \setheadsepline{.4pt} + \setkomafont{headtopline}[\color{red}] + \setkomafont{headsepline}[\color{red}] +\end{lstcode} + + The automatic adjustment to the header and footer width is illustrated + in the following example: +\begin{lstcode} + \setfootbotline{2pt} + \setfootsepline[text]{.4pt} + \setfootwidth[0pt]{textwithmarginpar} +\end{lstcode} + +% \phantomsection for hyperref-\pageref-links jum-2001/11/24 + \phantomsection\label{page:scrpage-en.autoLineLength} + \begin{XmpBotPage} + \XmpHeading{10,18}{85} + \thinlines\XmpRule{17,21}{70} + \thicklines\XmpRule{10,16}{85} + \XmpSetText[\XmpBotText]{10,33} + \XmpMarginNote{83,24} + \end{XmpBotPage} +\end{Example} +% +Now not everyone will like the alignment of the line above the footer; +instead, one would expect the line to be left-aligned. This can only +be achieved with a global package option, which will be described +together with other package options in the next +\autoref{sec:scrpage-en.basics.options}.% +% +\EndIndexGroup +\EndIndexGroup + + +\subsection{Package Options} +\label{sec:scrpage-en.basics.options} +% head(in|ex)clude foot(in|ex)clude --> typearea +% headtopline headsepline footbotline footsepline (plain...) +% komastyle standardstyle +% markuppercase markusecase +% automark manualmark + +In opposite to the \KOMAScript{} classes, where the most options may be +changed using \Macro{KOMAoptions} or \Macro{KOMAoption} also after loading the +class, package \Package{scrpage2} does not provide this feature\iffree{ + currently}{}. All options to \Package{scrpage2} have to be global options, +i.\,e. be part of the optional argument of \Macro{documentclass}, or +package option, i.\,e. be part of the optional argument of \Macro{usepackage}. + +\begin{Declaration} + \Option{headinclude}% + \Option{headexclude}% + \Option{footinclude}% + \Option{footexclude} +\end{Declaration}% +Since\textnote{Attention!} \KOMAScript~3\ChangedAt{v2.3}{\Package{scrpage2}} +this options should not be passed to \Package{scrpage2} any longer using +\Macro{PassOptionsToPackage} or the optional argument of +\Macro{usepackage}. Only for compatibility reason \Package{scrpage2} still +declares them and pass them as \Option{headinclude}, +\OptionValue{headinclude}{false}, \Option{footinclude}, and +\OptionValue{footinclude}{false} to package \Package{typearea}. +\EndIndexGroup + + +\begin{Declaration} + \Option{headtopline}% + \Option{plainheadtopline}% + \Option{headsepline}% + \Option{plainheadsepline}% + \Option{footsepline}% + \Option{plainfootsepline}% + \Option{footbotline}% + \Option{plainfootbotline} +\end{Declaration}% +Basic adjustment of the lines under and over header and footer can be +made with these options. These adjustments are then considered the +default for all page styles defined with \Package{scrpage2}. If one +of these options is used, then a line thickness 0.4\,pt is set. +Since there is a corresponding plain page style to the +page style \PageStyle{scrheadings}, the corresponding line in the plain +style can also be configured with the \Option{plain\dots} options. +These \Option{plain} options do however work only if the corresponding +options without \Option{plain} are activated. Thus, +\Option{plainheadtopline} shows no effect without the +\Option{headtopline} option set. + +With these options, it is to be noted that the appropriate page part, +header or footer, is considered as a part of the text area for the +calculation of the type area in case a line has been activated. This +means that, if the separation line between header and text is +activated with \Option{headsepline}, then the package +\Package{typearea} calculates the type area in such a way that the +page header is part of the text block automatically. + +The\textnote{Attention!} conditions for the options of the preceding paragraph +apply also to this automation. That means that the package \Package{typearea} +must be loaded after \Package{scrpage2}, or that on use of a {\KOMAScript} +class, the options \DescRef{scrpage-en.option.headinclude} and \DescRef{scrpage-en.option.footinclude} must be set +explicitly with \Macro{documentclass} in order to transfer header or footer +line in the text area.% +% +\EndIndexGroup + + +\begin{Declaration} +\Option{ilines}% +\Option{clines}% +\Option{olines} +\end{Declaration}% +\Index{rule>alignment}\Index{line>alignment}% +With the definition of the line lengths the case can arise where the +lengths are set correctly, but the justification is not as desired +because the line will be centered in the header or footer area. With +the package options presented here, this specification can be modified +for all page styles defined with \Package{scrpage2}. The option +\Option{ilines} sets the justification in such a way that the lines +align to the inside edge. The option \Option{clines} behaves like the +default justification, and \Option{olines} aligns at the outside edge. + +\begin{Example} + The next example illustrates the influence of the + option \Option{ilines}. Please compare to the example for + \DescRef{scrpage-en.cmd.setfootsepline} on \autopageref{page:scrpage-en.autoLineLength}. +\begin{lstcode} + \usepackage[ilines]{scrpage2} + \setfootbotline{2pt} + \setfootsepline[text]{.4pt} + \setfootwidth[0pt]{textwithmarginpar} +\end{lstcode} + The mere use of the option \Option{ilines} leads to the different + result shown below: +\begin{XmpBotPage} + \XmpHeading{10,18}{85} + \thinlines\XmpRule{10,21}{70} + \thicklines\XmpRule{10,16}{85} + \XmpSetText[\XmpBotText]{10,33} + \XmpMarginNote{83,24} +\end{XmpBotPage} + In contrast to the default configuration, the separation line between + text and footer is now left-aligned, not centered.% +\end{Example}% +\EndIndexGroup + + +\begin{Declaration} + \Option{automark}% + \Option{manualmark} +\end{Declaration}% +\BeginIndex{}{headings>automatic}% +\BeginIndex{}{headings>manual}% +These options set at the beginning of the document whether to use running +headings or manual ones. The option \Option{automark} switches the automatic +updating on, \Option{manualmark} deactivates it. Without the use of one of +the two options, the setting which was valid when the package was loaded is +preserved. +% +\begin{Example} + You load the package \Package{scrpage2} directly after the document class + \Class{scrreprt} without any package options: +\begin{lstcode} + \documentclass{scrreprt} + \usepackage{scrpage2} +\end{lstcode} + Since the default page style of \Class{scrreprt} is \PageStyle{plain}, + this page style is also now still active. Futhermore, \PageStyle{plain} + means manual headings. If one now activates the page style + \PageStyle{scrheadings} with +\begin{lstcode} + \pagestyle{scrheadings} +\end{lstcode} + then the manual headings are nevertheless still active. + + If you instead use the document class \Class{scrbook}, then after +\begin{lstcode} + \documentclass{scrbook} + \usepackage{scrpage2} +\end{lstcode} + the page style \PageStyle{headings} is active and the running headings are + updated automatically. Switching to the page style + \PageStyle{scrheadings} keeps this setting active. The marking commands + of \Class{scrbook} continue to be used. + + However, the use of +\begin{lstcode} + \usepackage[automark]{scrpage2} +\end{lstcode} + activates running headings independently of the used document class. + The option does not of course affect the used page style \PageStyle{plain} + of the class \Class{scrreprt}. The headings are not visible until the + page style is changed to + \PageStyle{scrheadings}\IndexPagestyle{scrheadings}, \PageStyle{useheadings} + or another user-defined page style with headings.% +\end{Example}% +\EndIndexGroup + + +\begin{Declaration} + \Option{autooneside} +\end{Declaration}% +\BeginIndex{}{headings>manual}% +\BeginIndex{}{headings>automatic}% +This option ensures that the optional parameter of +\DescRef{scrpage-en.cmd.automark}\IndexCmd{automark} will be ignored automatically in +one-sided mode. See also the explanation of the command +\DescRef{scrpage-en.cmd.automark} in \autoref{sec:scrpage-en.basics.mark}, +\DescPageRef{scrpage-en.cmd.automark}.% +% +\EndIndexGroup + + +\begin{Declaration} + \Option{komastyle}% + \Option{standardstyle} +\end{Declaration}% +These options determine the look of the predefined page styles +\PageStyle{scrheadings} and \PageStyle{scrplain}. The option +\Option{komastyle} configures a look like that of the {\KOMAScript} classes. +This is the default for {\KOMAScript} classes and can in this way also be set +for other classes. + +The option \Option{standardstyle} configures a page style as it is +expected by the standard classes. Furthermore, the option +\DescRef{scrpage-en.option.markuppercase} will be activated automatically, but only if +option \DescRef{scrpage-en.option.markusedcase} is not given.% +\EndIndexGroup + + +\begin{Declaration} + \Option{markuppercase}% + \Option{markusedcase} +\end{Declaration}% +In order to achieve the functionality of \DescRef{scrpage-en.cmd.automark}, the package +\Package{scrpage2} modifies internal commands which are used by the +document structuring commands to set the running headings. Since some +classes, in contrast to the {\KOMAScript} classes, write the headings +in uppercase letters, \Package{scrpage2} has to know how the used +document class sets the headings. + +Option \Option{markuppercase} shows \Package{scrpage2} that the document class +uses uppercase letters. If the document class does not set the headings in +uppercase letters, then the option \Option{markusedcase} should be given. +These\textnote{Attention!} options are not suitable to force a representation; +thus, unexpected effects may occur if the given option does not match the +actual behaviour of the document class.% +\EndIndexGroup + + +\begin{Declaration} + \Option{nouppercase} +\end{Declaration}% +In the previous paragraph dealing with \DescRef{scrpage-en.option.markuppercase} and +\DescRef{scrpage-en.option.markusedcase}, it has been already stated that some document classes +set the running headings\Index{heading} in uppercase letters using the +commands +\Macro{MakeUppercase}\IndexCmd{MakeUppercase}\important{\Macro{MakeUppercase}} +or \Macro{uppercase}\IndexCmd{uppercase}\important{\Macro{uppercase}}. +Setting the option \Option{nouppercase} allows disabling both these commands +in the headers and footers. However, this is valid only for page styles +defined by \Package{scrpage2}, including \PageStyle{scrheadings} and its +corresponding plain page style. + +The applied method is very brutal and can cause that desired changes +of normal letters to uppercase letters \Index{uppercase letters} do +not occur. Since these cases do not occur frequently, the option +\Option{nouppercase} usually affords a useful solution. +\begin{Example} + Your document uses the standard class \Class{book}\IndexClass{book}, + but you do not want the uppercase headings but mixed case + headings. Then the preamble of your document could start with: +\begin{lstcode} + \documentclass{book} + \usepackage[nouppercase]{scrpage2} + \pagestyle{scrheadings} +\end{lstcode} + The selection of the page style \PageStyle{scrheadings} is necessary, + since otherwise the page style \PageStyle{headings} is active, which + does not respect the settings made by option \Option{nouppercase}. +\end{Example} + +In some cases not only classes but also packages set the running +headings in uppercase letters. +Also in these cases the option \Option{nouppercase} should be able +to switch back to the normal mixed case headings.% +% +\EndIndexGroup + + +\section{Defining Own Page Styles}\label{sec:scrpage-en.UI} + +\subsection{The Interface for Beginners}\label{sec:scrpage-en.UI.user} +% \deftripstyle + +Now one would not like to remain bound to only the provided page +styles, but may wish to define one's own page styles. Sometimes there +will be a special need, since a specific \emph{Corporate Identity} may +require the declaration of its own page styles. The easiest way to +deal with this is: +\begin{Declaration} + \Macro{deftripstyle}\Parameter{name}% + \OParameter{LO}\OParameter{LI}% + \Parameter{HI}\Parameter{HC}\Parameter{HO}% + \Parameter{FI}\Parameter{FC}\Parameter{FO} +\end{Declaration}% +The individual parameters have the following meanings: +\begin{labeling}[\,--]{\PName{Name}} +\item[\PName{name}] the name of the page style, in order to activate it + using the command \Macro{pagestyle}\Parameter{name} +\item[\PName{LO}] the thickness of the outside lines, + i.\,e., the line above the header + and the line below the footer (optional) +\item[\PName{LI}] the thickness of the separation lines, + i.\,e., the line below the header + and the line above the foot (optional) +\item[\PName{HI}] contents of the inside box in the page header for two-sided + layout or left for one-sided layout +\item[\PName{HC}] contents of the centered box in the page header +\item[\PName{HO}] contents of the outside box in the page header for two-sided + layout or right for one-sided layout +\item[\PName{FI}] contents of the inside box in the page footer for two-sided + layout or left for one-sided layout +\item[\PName{FC}] contents of the centered box in the page footer +\item[\PName{FO}] contents of the outside box in the page footer for two-sided + layout or right for one-sided layout +\end{labeling} + +The command \Macro{deftripstyle} definitely represents the simplest +possibility of defining page styles. Unfortunately, there are also +restrictions connected with this, since in a page range using a page +style defined via deftripstyle, no modification of the lines above and +below header and footer can take place. + +\begin{Example} + Assume a two-sided layout, where the running headings are placed on + the inside. Furthermore, the document title, here ``Report'', shall + be placed outside in the header, the page number shall be centered + in the footer. +\begin{lstcode} + \deftripstyle{TheReport}% + {\headmark}{}{Report}% + {}{\pagemark}{} +\end{lstcode} + + If moreover the lines above the header and below the footer shall be + drawn with a thickness of 2\,pt, and the text body be separated from + header and footer with 0.4\,pt lines, then the definition has to be + extended: +\begin{lstcode} + \deftripstyle{TheReport}[2pt][.4pt]% + {\headmark}{}{Report}% + {}{\pagemark}{} +\end{lstcode} + See \autoref{fig:scrpage2.tomuchlines} for the result. +% +\begin{figure} + \typeout{^^J--- Ignore underfull and overfull \string\hbox:} + \setcapindent{0pt}% +% \begin{center} + \begin{captionbeside} + [{% + Example of a user defined, line dominated page style% + }]{% + example of a user defined, line dominated page style + with a static and a running heading at the page header and a page number + centered at the page footer% + \label{fig:scrpage2.tomuchlines}% + } + [l] + \iffree{\setlength{\unitlength}{1.15mm}}{\setlength{\unitlength}{1mm}}% + \begin{picture}(85,51)\scriptsize + \thinlines + \put(0,0){\line(0,1){51}} + \put(45,0){\line(0,1){51}} + \put(0,51){\line(1,0){40}} + \put(45,51){\line(1,0){40}} + % + \thicklines + \put(40,0){\line(0,1){51}} + \put(85,0){\line(0,1){51}} + \put(0,0,){\line(1,0){40}} + \put(45,0){\line(1,0){40}} + % + \XmpHeading[Report\hfill 2. The Eye]{6,47}{30} + \XmpHeading[2.1 Retina\hfill Report]{49,47}{30} + \XmpHeading[\hfill 14\hfill]{6,6.5}{30} + \XmpHeading[\hfill 15\hfill]{49,6.5}{30} + \put(6,44){\makebox(0,0)[tl]{\parbox{30\unitlength}{\tiny% + \textbf{2.1 Retina}\\ + \XmpText[49]}}} + \put(49,44){\makebox(0,0)[tl]{\parbox{30\unitlength}{\tiny% + \XmpText[51]}}} + % + \thinlines + \XmpRule{6,45.5}{30}\XmpRule{49,45.5}{30} + \XmpRule{6,8}{30}\XmpRule{49,8}{30} + \linethickness{1pt} + \XmpRule{6,49}{30}\XmpRule{49,49}{30} + \XmpRule{6,5}{30}\XmpRule{49,5}{30} + \end{picture} +% \end{center} + \end{captionbeside} + \typeout{^^J--- Don't ignore underfull and overfull \string\hbox:^^J} +\end{figure} +\end{Example} +\EndIndexGroup + + +\subsection{The Interface for Experts}\label{sec:scrpage-en.UI.expert} +% \defpagestyle \newpagestyle \providepagestyle \renewpagestyle +Simple page styles, as they can be defined with \DescRef{scrpage-en.cmd.deftripstyle}, +are fairly rare according to experience. Either a professor requires +that the thesis looks like his or her own\,---\,and who seriously wants +to argue against such a wish?\,---\,or a company would like that half the +financial accounting emerges in the page footer. No problem, the +solution is: +% +\begin{Declaration} + \Macro{defpagestyle}\Parameter{name}\Parameter{header definition}\Parameter{footer definition}% + \Macro{newpagestyle}\Parameter{name}\Parameter{header definition}\Parameter{footer definition}% + \Macro{renewpagestyle}\Parameter{name}\Parameter{header definition}\Parameter{footer definition}% + \Macro{providepagestyle}\Parameter{name}\Parameter{header definition}\Parameter{footer definition} +\end{Declaration}% +These four commands give full access to the capabilities of +\Package{scrpage2} to define page styles. Their structure is +indentical, they differ only in the manner of working. +\begin{labeling}[\ --]{\Macro{providepagestyle}} +\item[\Macro{defpagestyle}] defines a new page style. +If a page style with this name already exists it will be overwritten. +\item[\Macro{newpagestyle}] defines a new page style. +If a page style with this name already exists a error message will be given. +\item[\Macro{renewpagestyle}] redefines a page style. +If a page style with this name does not exist a error message will be given. +\item[\Macro{providepagestyle}] defines a new page style only if there is no page style with that name already present. +\end{labeling} + +Using \Macro{defpagestyle} as an example, the syntax of the four +commands is explained below. +\begin{labeling}[~--]{\PName{head definition}} +\item[\PName{name}] the name of the page style for + \Macro{pagestyle}\Parameter{name} +\item[\PName{header definition}] the declaration of the header, consisting + of five element; elements in round parenthesis are optional:\hfill\\ + \hspace*{1em}\AParameter{ALL,ALT}% + \Parameter{EP}\Parameter{OP}\Parameter{OS}\AParameter{BLL,BLT} +\item[\PName{footer definition}] the declaration of the footer, consisting + of five element; elements in round parenthesis are optional:\hfill\\ + \hspace*{1em}\AParameter{ALL,ALT}% + \Parameter{EP}\Parameter{OP}\Parameter{OS}\AParameter{BLL,BLT} +\end{labeling} + +As can be seen, header and footer declaration have identical +structure. The individual parameters have the following meanings: +\begin{labeling}[\ --]{\PName{OLD}} +\item[\PName{ALL}] above line length: (header = outside, footer = separation + line) +\item[\PName{ALT}] above line thickness +\item[\PName{EP}] definition for \emph{even} pages +\item[\PName{OP}] definition for \emph{odd} pages +\item[\PName{OS}] definition for \emph{one-sided} layout +\item[\PName{BLL}] below line length: (header = separation line, footer = + outside) +\item[\PName{BLT}] below line thickness +\end{labeling} + +If the optional line-parameters are omitted, then the line behaviour remains +configurable by the commands introduced in +\autoref{sec:scrpage-en.basics.format}, +\DescPageRef{scrpage-en.cmd.setheadtopline}. + +The three elements \PName{EP}, \PName{OP} and \PName{OS} are boxes with the +width of page header or footer, as appropriate. The corresponding definitions +are set left-justified in the boxes. To set something left- \emph{and} +right-justified into the boxes, the space between two text elements can be +stretched using \Macro{hfill}: +% +\begin{lstcode}[belowskip=\dp\strutbox] + {\headmark\hfill\pagemark} +\end{lstcode} + +If one would like a third text-element centered in the box, then an +extended definition must be used. The commands \Macro{rlap} and +\Macro{llap} simply write the given arguments, but for {\LaTeX} they +take up no horizontal space. Only in this way is the middle text +really centered. +% +\begin{lstcode} + {\rlap{\headmark}\hfill centered text\hfill\llap{\pagemark}} +\end{lstcode} + +\iffalse% Umbruchkorrekturtext +This and the use of the expert interface in connection with other +commands provided by \Package{scpage2} follows now in the final +example. +\fi + +\begin{Example} + This examples uses the document class \Class{scrbook}, which means + that the default page layout is two-sided. The package + \Package{scrpage2} is loaded with options \DescRef{scrpage-en.option.automark} and + \DescRef{scrpage-en.option.headsepline}. The first switches on the automatic update of + running headings, the second determines that a separation line + between header and text body is drawn in the \PageStyle{scrheadings} + page style. + +\begin{lstcode} + \documentclass{scrbook} + \usepackage[automark,headsepline]{scrpage2} +\end{lstcode} + + The expert interface is used to define two page styles. The page + style \PValue{withoutLines} does not define any line parameters. The + second page style \PValue{withLines} defines a line thicknes of 1\,pt + for the line above the header and 0\,pt for the separation line + between header and text. + +\begin{lstcode} + \defpagestyle{withoutLines}{% + {Example\hfill\headmark}{\headmark\hfill without lines} + {\rlap{Example}\hfill\headmark\hfill% + \llap{without lines}} + }{% + {\pagemark\hfill} + {\hfill\pagemark} + {\hfill\pagemark\hfill} + } +\end{lstcode} + +\begin{lstcode} + \defpagestyle{withLines}{% + (\textwidth,1pt) + {with lines\hfill\headmark}{\headmark\hfill with lines} + {\rlap{\KOMAScript}\hfill \headmark\hfill% + \llap{with lines}} + (0pt,0pt) + }{% + (\textwidth,.4pt) + {\pagemark\hfill} + {\hfill\pagemark} + {\hfill\pagemark\hfill} + (\textwidth,1pt) + } +\end{lstcode} + + Right at the beginning of the document the page style + \PageStyle{scrheadings} is activated. The command \Macro{chapter} starts + a new chapter and automatically sets the page rstyle for this page to + \PageStyle{plain}. Even though not a prime example, the command + \DescRef{scrpage-en.cmd.chead} shows how running headings can be created even on a + plain page. However, in principle running headings on + chapter start-pages are to be avoided, since otherwise the special + character of the \PageStyle{plain} page style is lost. It is more + important to indicate that a new chapter starts here than that a + section of this page has a special title. + +\begin{lstcode} + \begin{document} + \pagestyle{scrheadings} + \chapter{Thermodynamics} + \chead[\leftmark]{} + \section{Main Laws} + Every system has an extensive state quantity called + Energy. In a closed system the energy is constant. +\end{lstcode} + + \begin{XmpTopPage} + \XmpHeading[\hfill\textsl{1. Thermodynamics}\hfill]{10,27}{70} + \put(10,17){\normalsize\textbf{\sffamily 1.Thermodynamics}} + \put(10,12){\textbf{\sffamily 1.1 Main Laws}} + \XmpSetText[% + Every System has an extensive state quantity]{10,9} + \end{XmpTopPage} + + After starting a new page the page style \PageStyle{scrheadings} is + active and thus the separation line below the header is visible. +\begin{lstcode} + There is a state quatity of a system, called entropy, whose temporal + change consists of entropy flow and entropy generation. +\end{lstcode} + \begin{XmpTopPage} + \XmpHeading[\textsl{1. Thermodynamics}\hfill]{20,27}{70} + \thinlines\XmpRule{20,25}{70} + \XmpSetText[% + There is a condition unit of a system, called entropy, + whose temporal change consists of entropy flow + and entropy generation.]{20,20} + \end{XmpTopPage} + + After switching to the next page, the automatic update of the running + headings is disabled using \DescRef{scrpage-en.cmd.manualmark}, and the page style + \PValue{withoutLines} becomes active. Since no line parameters are + given in the definition of this page style, the default configuration + is used, which draws a separation line between header and text body + because \Package{scrpage2} was called with \DescRef{scrpage-en.option.headsepline}. +\begin{lstcode} + \manualmark + \pagestyle{withoutLines} + \section{Exergy and Anergy}\markright{Energy Conversion} + During the transition of a system to an equilibrium state + with its environment, the maximum work gainable is called + exergy. +\end{lstcode} + \begin{XmpTopPage} + \XmpHeading[\slshape Energy Conversion\hfill without lines]{10,27}{70} + \thinlines\XmpRule{10,25}{70} + \XmpSetText[\setlength{\parfillskip}{0pt plus 1fil}% + \textbf{\sffamily 1.2 Exergy and Anergy}\\ + During the transition of a system to an equilibrium state + with its environment, the maximum work gainable is called + exergy.]{10,21} + \end{XmpTopPage} + + At the next page of the document, the page style \PValue{withLines} is + activated. The line settings of its definition are taken in account + and the lines are drawn accordingly. +\begin{lstcode} + \pagestyle{mitLinien} + \renewcommand{\headfont}{\itshape\bfseries} + The portion of an energy not convertible in exergy + is named anergy \Var{B}. + \[ B = U + T (S_1 - S_u) - p (V_1 - V_u)\] + \end{document} +\end{lstcode} + \begin{XmpTopPage} + \XmpHeading[\itshape\bfseries with lines\hfill 1. Thermodynamics]{20,27}{70} + \thicklines\XmpRule{20,29}{70} + \XmpSetText[\setlength{\parfillskip}{0pt plus 1fil}% + The portion of an energy not convertible in exergy + is named anergy $B$. + \[ B = U + T (S_1 - S_u) - p (V_1 - V_u)\] ]{20,20} + \end{XmpTopPage} +\end{Example} +\EndIndexGroup + + +\subsection{Managing Page Styles}\label{sec:scrpage-en.UI.cfgFile} +% scrpage.cfg +\BeginIndex{File}{scrpage.cfg} +Before long the work with different page styles will establish a +common set of employed page styles, depending on taste and tasks. In +order to make the management of page styles easier and avoid +time-consuming copy operations each time a new project is started, +\Package{scrpage2} reads the file \File{scrpage.cfg} after +initialisation. This file can contain a set of user-defined page +styles which many projects can share. +\EndIndex{File}{scrpage.cfg} +\EndIndexGroup + + +% ============================================================================ + +\cleardoubleoddpage + +\selectlanguage{ngerman} +\let\savednewcommand\newcommand +\let\newcommand\renewcommand +\input{\jobname-ngerman.tex} +\let\newcommand\savednewcommand +\def\theHchapter{D.\thechapter} +\setcounter{chapter}{0} +\renewcommand*{\thepage}{D.\arabic{page}} + +\phantomsection +\addparttocentry{}{Deutsch} + +\title{Das obsolete Paket \Package{scrpage2}} +\subtitle{Auszug aus früheren Versionen der \KOMAScript-Anleitung} +\author{Markus Kohm\and Jens-Uwe-Morawski} +\date{2014-06-25} +\maketitle + + +\chapter{Kopf- und Fußzeilen mit \Package{scrpage2}} +\labelbase{scrpage-de} +% +\BeginIndexGroup +\BeginIndex{Package}{scrpage2}% +\BeginIndex{}{Seitenstil} +Mit \KOMAScript~3.12 wurde das komplett neu implementierte Paket +\Package{scrlayer-scrpage} vorgestellt, das eine konsequente Weiterführung des +Designs von \Package{scrpage2} mit anderen Mitteln darstellt. Siehe dazu das +entsprechende Kapitel der \KOMAScript-Anleitung. Während +\Package{scrpage2} die erweiterte Optionen-Schnittstelle der +\KOMAScript-Klassen nicht unterstützt, kommt diese in +\Package{scrlayer-scrpage} selbstverständlich zum Einsatz. Da der Ansatz von +\Package{scrlayer-scrpage} gegenüber \Package{scrpage2} als überlegen +betrachtet wird, wird somit empfohlen, \Package{scrlayer-scrpage} an Stelle +von \Package{scrpage2} zu verwenden. Die aktuelle Version von +\Package{scrpage2} ist daher auch als final zu betrachten. Sämtliche +Entwicklungsresourcen im Bereich Kopf- und Fußzeilen werden zukünftig in +\Package{scrlayer-scrpage} einfließen. + +\begin{Explain} + An Stelle von \Package{scrpage2} oder \Package{scrlayer-scrpage} kann + natürlich auch \Package{fancyhdr} verwendet + werden. \Package{scrpage2} und insbesondere \Package{scrlayer-scrpage} + harmonieren jedoch mit den \KOMAScript-Klassen deutlich besser. Genau + deshalb und weil der Vorläufer von \Package{fancyhdr} damals viele + Möglichkeiten vermissen lies, ist \Package{scrpage2} entstanden. Natürlich + ist das Paket \Package{scrpage2} ebenso wie das Paket + \Package{scrlayer-scrpage} nicht an eine \KOMAScript-Klasse gebunden, + sondern kann auch sehr gut mit anderen Klassen verwendet werden. +\end{Explain} + +\section{Grundlegende Funktionen}\label{sec:scrpage-de.basics} + +\begin{Explain} + Um die nachfolgende Beschreibung zu verstehen, muss noch einiges zu \LaTeX{} + gesagt werden. Im \LaTeX-Kern sind die Standardseitenstile + \PageStyle{empty}, welcher eine völlig undekorierte Seite erzeugt, und + \PageStyle{plain}, welcher meist nur die Seitenzahl enthält, definiert. In + vielen Klassen ist der Stil \PageStyle{headings} zu finden, welcher eine + komplexe Seitendekoration mit automatischen + Kolumnentitel\Index{Kolumnentitel>automatisch} erzeugt. Die Variante + \PageStyle{myheadings} gleicht \PageStyle{headings}. Die Kolumnentitel + müssen dabei aber manuell\Index{Kolumnentitel>manuell} gesetzt werden. + Ausführlicher wird das im Abschnitt über Seitenstile der + \KOMAScript-Anleitung beschrieben. Dort wird auch erläutert, dass auf + einigen Seiten der Seitenstil automatisch -- in der Regel zu + \PageStyle{plain} -- wechselt. +\end{Explain} + +Das Paket \Package{scrpage2} unterscheidet nicht mehr zwischen Seitenstilen +mit automatischem und mit manuellem Kolumnentitel. Die Wahl des Seitenstils +erfolgt unabhängig davon, ob mit automatischem oder manuellem Kolumnentitel +gearbeitet wird. Näheres dazu finden Sie in \autoref{sec:scrpage-de.basics.mark}. + + +\subsection{Vordefinierte Seitenstile}\label{sec:scrpage-de.basics.buildIn} + +Zu den grundlegenden Funktionen von \Package{scrpage2} gehören unter anderem +vordefinierte, konfigurierbare Seitenstile. + +% \lehead ... +% scrheadings +% \headmark \pagemark + +\begin{Declaration} + \PageStyle{scrheadings}% + \PageStyle{scrplain} +\end{Declaration}% +Das Paket \Package{scrpage2} liefert für Seiten mit Kolumnentitel einen +eigenen Seitenstil namens \PageStyle{scrheadings}. Dieser Seitenstil kann +mittels \Macro{pagestyle}\PParameter{scrheadings} aktiviert werden. Wird +dieser Seitenstil benutzt, dann wird gleichzeitig der plain-Stil durch den +dazu passenden Stil \PageStyle{scrplain} ersetzt. Passend bedeutet, dass auch +der plain-Stil auf in \autoref{sec:scrpage-de.basics.format} vorgestellte +Befehle, die beispielsweise die Kopfbreite ändern, reagiert und im Grundlayout +übereinstimmt. Die Aktivierung des Seitenstils \PageStyle{scrheadings} oder +des zugehörigen plain-Stils, \PageStyle{scrplain}, hat keine Auswirkung +darauf, ob mit manuellen oder automatischen +Kolumnentiteln\Index{Kolumnentitel>automatisch}\Index{Kolumnentitel>manuell} +gearbeitet wird (siehe \autoref{sec:scrpage-de.basics.mark}). Der Seitenstil +\PageStyle{scrplain} kann auch direkt per \Macro{pagestyle} aktiviert werden. + + +\begin{Declaration} + \Macro{lehead}% + \OParameter{scrplain-links-gerade}\Parameter{scrheadings-links-gerade}% + \Macro{cehead}% + \OParameter{scrplain-mittig-gerade}\Parameter{scrheadings-mittig-gerade}% + \Macro{rehead}% + \OParameter{scrplain-rechts-gerade}\Parameter{scrheadings-rechts-gerade}% + \Macro{lefoot}% + \OParameter{scrplain-links-gerade}\Parameter{scrheadings-links-gerade}% + \Macro{cefoot}% + \OParameter{scrplain-mittig-gerade}\Parameter{scrheadings-mittig-gerade}% + \Macro{refoot}% + \OParameter{scrplain-rechts-gerade}\Parameter{scrheadings-rechts-gerade}% + \Macro{lohead}% + \OParameter{scrplain-links-ungerade}\Parameter{scrheadings-links-ungerade}% + \Macro{cohead}% + \OParameter{scrplain-mittig-ungerade}\Parameter{scrheadings-mittig-ungerade}% + \Macro{rohead}% + \OParameter{scrplain-rechts-ungerade}\Parameter{scrheadings-rechts-ungerade}% + \Macro{lofoot}% + \OParameter{scrplain-links-ungerade}\Parameter{scrheadings-links-ungerade}% + \Macro{cofoot}% + \OParameter{scrplain-mittig-ungerade}\Parameter{scrheadings-mittig-ungerade}% + \Macro{rofoot}% + \OParameter{scrplain-rechts-ungerade}\Parameter{scrheadings-rechts-ungerade}% + \Macro{ihead}% + \OParameter{scrplain-innen}\Parameter{scrheadings-innen}% + \Macro{chead}% + \OParameter{scrplain-zentriert}\Parameter{scrheadings-zentriert}% + \Macro{ohead}% + \OParameter{scrplain-außen}\Parameter{scrheadings-außen}% + \Macro{ifoot}% + \OParameter{scrplain-innen}\Parameter{scrheadings-innen}% + \Macro{cfoot}% + \OParameter{scrplain-zentriert}\Parameter{scrheadings-zentriert}% + \Macro{ofoot}% + \OParameter{scrplain-außen}\Parameter{scrheadings-außen} +\end{Declaration}% +Die Seitenstile von \Package{scrpage2} sind so definiert, dass ihr Kopf und +Fuß flexibel angepasst werden kann. Hierzu sind sowohl im Kopf als auch im Fuß +drei Felder vorhanden, deren Inhalt modifiziert werden kann. Die Befehle +zur Modifikation sind in \autoref{fig:scrpage-de.leheadetall} verdeutlicht. Die +in der Mitte dargestellten Befehle modifizieren sowohl die Felder der linken +als auch der rechten Seite. Alle Befehle haben sowohl ein optionales als auch +ein obligatorisches Argument. Das optionale Argument bestimmt jeweils das +durch den Befehl festgelegte Feld im plain-Seitenstil, +\PageStyle{scrplain}. Das obligatorische Argument definiert das entsprechende +Feld im Seitenstil \PageStyle{scrheadings}. + +\begin{figure} +% \centering + \setcapindent{0pt}% + \begin{captionbeside} + [Befehle zur Manipulation der \Package{scrpage2}-Seitenstile]% + {\hspace{0pt plus 1ex}% + Zuord\-nung der Befehle zur Manipulation der beiden Seiten\-stile + \PageStyle{scrheadings} und \PageStyle{scrplain} zu den Feldern im + Kopf und Fuß der Seiten} + [l] + \setlength{\unitlength}{.95mm}\begin{picture}(100,65)(0,8)\small + \put(0,12){\dashbox{2}(40,56){linke Seite}} + \put(60,12){\dashbox{2}(40,56){rechte Seite}} + % Felder: oben links + \put(1,63){\framebox(8,4){~}} + \put(16,63){\framebox(8,4){~}} + \put(31,63){\framebox(8,4){~}} + % Felder: oben rechts + \put(61,63){\framebox(8,4){~}} + \put(76,63){\framebox(8,4){~}} + \put(91,63){\framebox(8,4){~}} + % Felder: unten links + \put(1,13){\framebox(8,4){~}} + \put(16,13){\framebox(8,4){~}} + \put(31,13){\framebox(8,4){~}} + % Felder: unten rechts + \put(61,13){\framebox(8,4){~}} + \put(76,13){\framebox(8,4){~}} + \put(91,13){\framebox(8,4){~}} + % die Befehle und Pfeile + % für beidseitig + % + \put(50,65){\makebox(0,0){\DescRef{scrpage-de.cmd.ihead}}} + \put(44,65){\vector(-1,0){4}}\put(56,65){\vector(1,0){4}} + \put(50,58){\makebox(0,0){\DescRef{scrpage-de.cmd.chead}}} + \put(44,58){\line(-1,0){24}}\put(56,58){\line(1,0){24}} + \put(20,58){\vector(0,1){4}}\put(80,58){\vector(0,1){4}} + \put(50,51){\makebox(0,0){\DescRef{scrpage-de.cmd.ohead}}} + \put(44,51){\line(-1,0){40}}\put(56,51){\line(1,0){40}} + \put(4,51){\vector(0,1){11}}\put(96,51){\vector(0,1){11}} + % + \put(50,15){\makebox(0,0){\DescRef{scrpage-de.cmd.ifoot}}} + \put(56,15){\vector(1,0){4}}\put(44,15){\vector(-1,0){4}} + \put(50,22){\makebox(0,0){\DescRef{scrpage-de.cmd.cfoot}}} + \put(44,22){\line(-1,0){24}}\put(56,22){\line(1,0){24}} + \put(20,22){\vector(0,-1){4}}\put(80,22){\vector(0,-1){4}} + \put(50,29){\makebox(0,0){\DescRef{scrpage-de.cmd.ofoot}}} + \put(44,29){\line(-1,0){40}}\put(56,29){\line(1,0){40}} + \put(4,29){\vector(0,-1){11}}\put(96,29){\vector(0,-1){11}} + % Befehle für einseitig + \put(5,69){\makebox(0,0)[b]{\DescRef{scrpage-de.cmd.lehead}}} + \put(20,69){\makebox(0,0)[b]{\DescRef{scrpage-de.cmd.cehead}}} + \put(35,69){\makebox(0,0)[b]{\DescRef{scrpage-de.cmd.rehead}}} + % + \put(65,69){\makebox(0,0)[b]{\DescRef{scrpage-de.cmd.lohead}}} + \put(80,69){\makebox(0,0)[b]{\DescRef{scrpage-de.cmd.cohead}}} + \put(95,69){\makebox(0,0)[b]{\DescRef{scrpage-de.cmd.rohead}}} + % + \put(5,11){\makebox(0,0)[t]{\DescRef{scrpage-de.cmd.lefoot}}} + \put(20,11){\makebox(0,0)[t]{\DescRef{scrpage-de.cmd.cefoot}}} + \put(35,11){\makebox(0,0)[t]{\DescRef{scrpage-de.cmd.refoot}}} + % + \put(65,11){\makebox(0,0)[t]{\DescRef{scrpage-de.cmd.lofoot}}} + \put(80,11){\makebox(0,0)[t]{\DescRef{scrpage-de.cmd.cofoot}}} + \put(95,11){\makebox(0,0)[t]{\DescRef{scrpage-de.cmd.rofoot}}} + \end{picture} + \end{captionbeside} +% \caption[Befehle zur Manipulation der \Package{scrpage2}-Seitenstile]% +% {Zuordnung der Befehle zur Manipulation der Seitenstile +% \PageStyle{scrheadings} und \PageStyle{scrplain} zu den manipulierten +% Seitenelementen} + \label{fig:scrpage-de.leheadetall} +\end{figure} + +\begin{Example} + Angenommen, man möchte bei \PageStyle{scrheadings} zentriert im Seitenfuß + die Seitenzahl dargestellt haben, dann benutzt man einfach: +\begin{lstcode} + \cfoot{\pagemark} +\end{lstcode} + Sollen die Seitenzahlen\Index{Paginierung} im Kopf außen und die + Kolumnentitel\Index{Kolumnentitel} innen stehen, dann erfolgt dies mit: +\begin{lstcode} + \ohead{\pagemark} + \ihead{\headmark} + \cfoot{} +\end{lstcode} + Das \Macro{cfoot}\PParameter{} ist nur notwendig, um eine möglicherweise in + der Mitte des Fußes vorhandene Seitenzahl zu entfernen. +\end{Example} + +Die Befehle, die direkt nur einem Feld zugeordnet sind, können für +anspruchsvollere Vorhaben genutzt werden. + +\begin{Example} + Angenommen, man hat den Auf"|trag, einen Jahresbericht einer Firma zu + erstellen, dann könnte das so angegangen werden: +\begin{lstcode} + \ohead{\pagemark} + \rehead{Jahresbericht 2001} + \lohead{\headmark} + \cefoot{Firma WasWeißIch} + \cofoot{Abteilung Entwicklung} +\end{lstcode} + Natürlich muss man hier dafür sorgen, dass mittels \Macro{cofoot} der Fuß + der rechten Seite aktualisiert wird, wenn eine neue Abteilung im Bericht + besprochen wird. +\end{Example} + +Wie oben dargestellt, gibt es einen zu \PageStyle{scrheadings} +korrespondierenden plain-Seitenstil. Da es auch möglich sein soll, diesen +Stil anzupassen, unterstüt"-zen die Befehle ein optionales Argument. Damit +kann der Inhalt des entsprechenden Feldes im plain-Seitenstil modifiziert +werden. + +\begin{Example} + Um für die Nutzung von \PageStyle{scrheadings} die Position der Seitenzahlen + festzulegen, kann man folgendes benutzen: +\begin{lstcode} + \cfoot[\pagemark]{} + \ohead[]{\pagemark} +\end{lstcode} + Wird anschließend der Stil \PageStyle{plain} genutzt, beispielsweise weil + \Macro{chapter} eine neue Seite beginnt und darauf umschaltet, dann steht + die Seitenzahl zentriert im Seitenfuß. +\end{Example} +% +\EndIndexGroup + + +% Die folgende Deklaration und Erklaerung wurde eingefuegt von +% mjk 2001-08-18 +\begin{Declaration} + \Macro{clearscrheadings}% + \Macro{clearscrplain}% + \Macro{clearscrheadfoot} +\end{Declaration}% +Will man sowohl den Seitenstil \PageStyle{scrheadings} als auch den dazu +gehörenden plain-Seitenstil von Grund auf neu definieren, +muss man häufig zusätzlich einige der bereits belegten Seitenelemente +löschen. Da man selten alle Elemente mit neuem Inhalt füllt, sind +dazu in den meisten Fällen mehrere Befehle mit leeren Parametern +notwendig. +Mit Hilfe dieser drei Befehle ist das Löschen schnell und +gründlich möglich. Während \Macro{clearscrheadings} lediglich alle +Felder des Seitenstils \PageStyle{scrheadings} und \Macro{clearscrplain} +alle Felder des zugehörigen plain-Seitenstils löscht, werden +von \Macro{clearscrheadfoot} alle Felder beider Seitenstile auf leere +Inhalte gesetzt. +\begin{Example} + Sie wollen unabhängig davon, wie die Seitenstile derzeit aussehen, + die Standardform der \KOMAScript-Klassen bei zweiseitigem Satz + erreichen. Dies ist mit nur drei Befehlen möglich: +\begin{lstcode} + \clearscrheadfoot + \ohead{\headmark} + \ofoot[\pagemark]{\pagemark} +\end{lstcode} + Ohne die Befehle \Macro{clearscrheadings}, \Macro{clearscrplain} und + \Macro{clearscrheadfoot} wären doppelt so viele Anweisungen und neun weitere + leere Argumente notwendig: +\begin{lstcode} + \ihead[]{} + \chead[]{} + \ohead[]{\headmark} + \ifoot[]{} + \cfoot[]{} + \ofoot[\pagemark]{\pagemark} +\end{lstcode} + Einige davon könnten natürlich entfallen, wenn man von einer + konkreten Vorbelegung ausginge. +\end{Example} +% +\EndIndexGroup +% +\EndIndexGroup + + +% Satz leicht geaendert: mjk 2001-08-18 +In den vorausgehenden Beispielen wurden schon zwei Befehle benutzt, die noch +gar nicht besprochen wurden. Das soll jetzt nachgeholt werden. + +% Die folgende Deklaration und Erklaerung wurde eingefuegt von +% mjk 2001-08-17 +\begin{Declaration} + \Macro{leftmark}% + \Macro{rightmark} +\end{Declaration}% +Diese beiden Befehle erlauben es, auf die Kolumnentitel zuzugreifen, die +normalerweise für die linke bzw. die rechte Seite gedacht sind. Diese beiden +Befehle werden nicht von \Package{scrpage2}, sondern direkt vom \LaTeX-Kern +zur Verfügung gestellt. Wenn in diesem Kapitel vom Kolumnentitel der linken +Seite oder vom Kolumnentitel der rechten Seite die Rede ist, dann ist damit +eigentlich der Inhalt von \Macro{leftmark} und \Macro{rightmark} gemeint. +% +\EndIndexGroup + + +\begin{Declaration} +\Macro{headmark} +\end{Declaration}% +Dieser Befehl ermöglicht es, auf die Inhalte der Kolumnentitel zuzugreifen. +Im Gegensatz zu den originalen \LaTeX{}-Befehlen \Macro{leftmark} und +\Macro{rightmark} braucht man nicht auf die richtige Zuordnung zur linken oder +rechten Seite zu achten.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{pagemark} +\end{Declaration}% +Dieser Befehl ermöglicht den Zugriff auf die Seitenzahl. Im +\autoref{sec:scrpage-de.basics.format}, \DescPageRef{scrpage-de.cmd.pnumfont} +wird der Befehl \DescRef{scrpage-de.cmd.pnumfont} zur Formatierung der Seitenzahl vorgestellt, +den \Macro{pagemark} automatisch berücksichtigt.% +% +\EndIndexGroup + + +\begin{Declaration} + \PageStyle{useheadings} +\end{Declaration}% +Das Paket \Package{scrpage2} ist in erster Linie dafür gedacht, dass die +bereitgestellten Stile benutzt oder eigene Stile definiert werden. Jedoch +kann es notwendig sein, auch auf einen von der Dokumentklasse zur Verfügung +gestellten Stil zurückzuschalten. Es wäre nahe liegend, dieses mit +\Macro{pagestyle}\PParameter{headings} vorzunehmen. Das hätte aber den +Nachteil, dass die nachfolgend besprochenen Befehle \DescRef{scrpage-de.cmd.automark} und +\DescRef{scrpage-de.cmd.manualmark} nicht wie erwartet funktionierten. Daher sollte mit +\Macro{pagestyle}\PParameter{useheadings}\IndexCmd{pagestyle} auf die +originalen Stile umgeschaltet werden. Eine solche Umschaltung hat dann keine +Auswirkung darauf, ob mit manuellen oder automatischen Kolumnentiteln +gearbeitet wird.% +% +\EndIndexGroup + + +\subsection{Manuelle und automatische Kolumnentitel} +\label{sec:scrpage-de.basics.mark} +% \automark \manualmark +% +\BeginIndexGroup +\BeginIndex{}{Kolumnentitel>automatisch}% +\BeginIndex{}{Kolumnentitel>manuell}% +Gewöhnlich\textnote{Achtung!} gibt es zu einem \PageStyle{headings}-Stil eine +\emph{my}-Variante. Ist ein solcher Stil aktiv, dann werden die Kolumnentitel +nicht mehr automatisch aktualisiert. Bei \Package{scrpage2} wird ein anderer +Weg beschritten. Ob die Kolumnentitel lebend sind oder nicht, bestimmen die +Befehle \DescRef{scrpage-de.cmd.automark} und \DescRef{scrpage-de.cmd.manualmark}. Die Voreinstellung kann auch +bereits beim Laden des Paketes über die Optionen \DescRef{scrpage-de.option.automark} und +\DescRef{scrpage-de.option.manualmark} beeinflusst werden (siehe +\autoref{sec:scrpage-de.basics.options}, +\DescPageRef{scrpage-de.option.automark}). + + +\begin{Declaration} +\Macro{manualmark} +\end{Declaration}% +Wie der Name bereits verdeutlicht, schaltet \Macro{manualmark} die +Aktualisierung der Kolumnentitel aus. Es bleibt somit dem Nutzer überlassen, +für eine Aktualisierung bzw. für den Inhalt der Kolumnentitel zu sorgen. Dazu +stehen die Befehle \Macro{markboth}\IndexCmd{markboth} und +\Macro{markright}\IndexCmd{markright} aus dem \LaTeX-Kern bereit. Diese +Anweisungen sind im Abschnitt über Seitenstile in der \KOMAScript-Anleitung +erklärt.% +% +\EndIndexGroup + + +% Ergaenzt mjk 2001-07-17 +\begin{Declaration} + \Macro{automark}\OParameter{rechte Seite}\Parameter{linke Seite} +\end{Declaration}% +Die Anweisung \Macro{automark} aktiviert die automatische Aktualisierung des +Kolumnentitels. Für die beiden Parameter sind die Bezeichnungen der +Gliederungsebenen\Index{Gliederungsebenen} einzusetzen, deren Titel an +entsprechender Stelle erscheinen soll. Gültige Werte für die Parameter sind: +\PValue{part}\ChangedAt{v2.2}{\Package{scrpage2}}, \PValue{chapter}, +\PValue{section}, \PValue{subsection}, \PValue{subsubsection}, +\PValue{paragraph} und \PValue{subparagraph}. Der Wert \PValue{part} führt bei +Verwendung der meisten Klassen nicht zu dem gewünschten Ergebnis. Bisher ist +nur von den \KOMAScript-Klassen ab Version~2.9s bekannt, dass dieser Wert +unterstützt wird. Das optionale Argument \PName{rechte Seite} ist +ver\-ständlicherweise nur für zweiseitigen Satz gedacht. Im einseitigen Satz +sollten Sie normalerweise darauf verzichten. Mit Hilfe der Option +\DescRef{scrpage-de.option.autooneside}\IndexOption{autooneside}\important{\DescRef{scrpage-de.option.autooneside}} +können Sie auch einstellen, dass das optionale Argument im +einseitigen\Index{einseitig} Satz automatisch ignoriert wird (siehe +\autoref{sec:scrpage-de.basics.options}, +\DescPageRef{scrpage-de.option.autooneside}). +\begin{Example} + Wird beispielsweise mit einer \emph{book}-Klasse gearbeitet, deren höch\-ste + Gliederungsebene \emph{chapter} ist, dann stellt nach einem vorhergehenden + \DescRef{scrpage-de.cmd.manualmark} der Befehl +\begin{lstcode} + \automark[section]{chapter} +\end{lstcode} + den Originalzustand wieder her. Bevorzugt man stattdessen, die tieferen + Gliederungsebenen angezeigt zu bekommen, dann erfolgt dies mit: +\begin{lstcode} + \automark[subsection]{section} +\end{lstcode} +\end{Example} + +\begin{Explain} + Die Markierung der jeweils höheren Gliederungsebene wird mit Hilfe von + \Macro{markboth}\IndexCmd{markboth} gesetzt. Die Markierung der + tieferen Gliederungsebene wird mit \Macro{markright}\IndexCmd{markright} + bzw. \Macro{markleft}\IndexCmd{markleft} gesetzt. Der entsprechende Aufruf + erfolgt indirekt über die Gliederungsbefehle. Die Anweisung \Macro{markleft} + wird von \Package{scrpage2} bereitgestellt und ist vergleichbar zu + \Macro{markright} aus dem \LaTeX-Kern + definiert. Obwohl sie nicht als internes Makro definiert ist, wird von einem + direkten Gebrauch abgeraten. +\end{Explain} +\EndIndexGroup +\EndIndexGroup + + +\subsection{Formatierung der Kopf- und Fußzeilen} +\label{sec:scrpage-de.basics.format} +% \headfont \pnumfont +% \setheadwidth \setfootwidth +% \set(head|foot)(top|sep|bot)line +Im vorherigen Abschnitt ging es hauptsächlich um inhaltliche Dinge. Das +genügt natürlich nicht, um die gestalterischen Ambitionen zu +befriedigen. Deshalb soll es sich in diesem Abschnitt ausschließlich darum +drehen. + +\begin{Declaration} + \Macro{headfont}% + \Macro{footfont}% + \Macro{pnumfont} +\end{Declaration}% +Die Schriftformatierung für den Seitenkopf und -fuß übernimmt der Befehl +\Macro{headfont}, \Macro{footfont} die Abweichung davon für den Fuß und +\Macro{pnumfont} wiederum die Abweichung davon für die Seitenzahl. +\begin{Example} + Um beispielsweise den Kopf in fetter, serifenloser Schrift und den Fuß in + nicht fetter, serifenloser Schrift zu setzen und die Seitenzahl geneigt + mit Serifen erscheinen zu lassen, nutzt man folgende Definitionen: +\begin{lstcode} + \renewcommand*{\headfont}{% + \normalfont\sffamily\bfseries} + \renewcommand*{\footfont}{% + \normalfont\sffamily} + \renewcommand*{\pnumfont}{% + \normalfont\rmfamily\slshape} +\end{lstcode} +\end{Example} + +\BeginIndexGroup +\BeginIndex{FontElement}{pagehead}% +\BeginIndex{FontElement}{pagefoot}% +\BeginIndex{FontElement}{pagenumber}% +Ab Version 2.8p der \KOMAScript{}-Klassen wurde die Schnittstelle für +Schriftattribute vereinheitlicht. Wird \Package{scrpage2} in Verbindung mit +einer dieser Klassen verwendet, dann sollte die Zuweisung in der Art erfolgen, +wie sie in der \KOMAScript-Anleitung beschrieben wird. +\begin{Example} + Statt \Macro{renewcommand} wird bei Verwendung einer \KOMAScript-Klasse + vorzugsweise der Befehl \Macro{setkomafont} verwendet. Die vorhergehenden + Definitionen lauten damit: +\begin{lstcode} + \setkomafont{pagehead}{% + \normalfont\sffamily\bfseries} + \setkomafont{pagefoot}{% + \normalfont\sffamily} + \setkomafont{pagenumber}{% + \normalfont\rmfamily\slshape} +\end{lstcode} +\end{Example} +\EndIndexGroup +\EndIndexGroup + + +\begin{Declaration} +\Macro{setheadwidth}\OParameter{Verschiebung}\Parameter{Breite}% +\Macro{setfootwidth}\OParameter{Verschiebung}\Parameter{Breite} +\end{Declaration}% +Normalerweise entsprechen die Breiten von Kopf- und Fußzeile der Breite des +Textbereichs.\Index{Kopf>Breite}\Index{Fuss=Fuß>Breite} Die beiden Befehle +\Macro{setheadwidth} und \Macro{setfootwidth} ermöglichen dem Anwender, auf +einfache Weise die Breiten seinen Bedürfnissen anzupassen. Das obligatorische +Argument \PName{Breite} nimmt den Wert der Breite des Kopfes bzw. des Fußes +auf, \PName{Verschiebung} ist ein Längenmaß für die Verschiebung des +entsprechenden Elements in Richtung des äußeren Seitenrandes. + +Für die möglichen Standardfälle akzeptiert das obligatorische Argument +\PName{Breite} auch folgende symbolische Werte: +\begin{labeling}[\ --]{\PValue{textwithmarginpar}} +\item[\PValue{paper}] die Breite des Papiers +\item[\PValue{page}] die Breite der Seite +\item[\PValue{text}] die Breite des Textbereichs +\item[\PValue{textwithmarginpar}] die Breite des Textbereichs inklusive +Seitenrand +\item[\PValue{head}] die aktuelle Breite des Seitenkopfes +\item[\PValue{foot}] die aktuelle Breite des Seitenfußes +\end{labeling} +Der Unterschied zwischen \PValue{paper} und \PValue{page} besteht darin, dass +\PValue{page} die Breite des Papiers abzüglich der Bindekorrektur ist, falls +das \Package{typearea}-Paket\IndexPackage{typearea} verwendet wird (siehe das +Kapitel über \Package{typearea} in der \KOMAScript-Anleitung). Ohne Verwendung +von \Package{typearea} sind \PValue{paper} und \PValue{page} +identisch.%mjk-2001-08-17 + +\begin{Example} + Angenommen, man möchte ein Seitenlayout wie im + \emph{\LaTeX-Begleiter}, bei dem die Kopfzeile in den Rand ragt, + dann geschieht das ganz einfach mit: +\begin{lstcode} + \setheadwidth[0pt]{textwithmarginpar} +\end{lstcode} +% + und sieht dann auf einer rechten Seite folgendermaßen aus: +% + \begin{XmpTopPage} + \XmpHeading{10,29}{85} + \thinlines\XmpRule{10,27}{85} + \XmpSetText[\XmpTopText]{10,24} + \XmpMarginNote{83,14} + \end{XmpTopPage} +% + Soll der Seitenfuß die gleiche Breite und Ausrichtung haben, dann hat man + jetzt zwei Wege. Der erste ist, man wiederholt das Gleiche für den + Seitenfuß mit: +\begin{lstcode} + \setfootwidth[0pt]{textwithmarginpar} +\end{lstcode} +% + oder man greift auf den anderen symbolischen Wert \PValue{head} zurück, da + der Kopf bereits die gewünschte Breite hat. +\begin{lstcode} + \setfootwidth[0pt]{head} +\end{lstcode} +\end{Example} + +Wird keine Verschiebung angegeben, das heißt auf das optionale Argument +verzichtet, dann erscheint der Kopf bzw. der Fuß symmetrisch auf der Seite +angeordnet. Es wird somit ein Wert für die Verschiebung automatisch ermittelt, +der der aktuellen Seitengestalt entspricht. + +\begin{Example} + Entsprechend dem vorherigen Beispiel wird hier auf das optionale Argument + verzichtet: +\begin{lstcode} + \setheadwidth{textwithmarginpar} +\end{lstcode} +% + und sieht dann auf einer rechten Seite folgendermaßen aus: +% + \begin{XmpTopPage} + \XmpHeading{5,29}{85} + \thinlines\XmpRule{5,27}{85} + \XmpSetText[\XmpTopText]{10,24} + \XmpMarginNote{83,14} + \end{XmpTopPage} +\end{Example} + +Wie zu sehen, ist der Kopf jetzt nach innen verschoben, wobei die Kopfbreite +sich nicht geändert hat. Die Verschiebung ist so berechnet, dass die +Seitenproportionen auch hier sichtbar werden. +\EndIndexGroup + + +\begin{Declaration} + \Macro{setheadtopline}\OParameter{Länge}\Parameter{Dicke}% + \OParameter{Anweisungen}% + \Macro{setheadsepline}\OParameter{Länge}\Parameter{Dicke}% + \OParameter{Anweisungen}% + \Macro{setfootsepline}\OParameter{Länge}\Parameter{Dicke}% + \OParameter{Anweisungen}% + \Macro{setfootbotline}\OParameter{Länge}\Parameter{Dicke}% + \OParameter{Anweisungen} +\end{Declaration}% +Entsprechend den Größenparametern für die Kopf- und Fußzeile gibt es auch +Befehle, die die Dimensionen der Linien im Kopf und Fuß modifizieren +können. Dazu sollten diese Linien aber zunächst erst einmal eingeschaltet +werden. Siehe hierzu die Optionen \DescRef{scrpage-de.option.headtopline}, \DescRef{scrpage-de.option.headsepline}, +\DescRef{scrpage-de.option.footsepline}, \DescRef{scrpage-de.option.footbotline} in +\autoref{sec:scrpage-de.basics.options}, +\DescPageRef{scrpage-de.option.headsepline}. + +\begin{labeling}[\ --]{\Macro{setfootsepline}} +\item[\Macro{setheadtopline}] modifiziert die Parameter für die Linie +über dem Seitenkopf +\item[\Macro{setheadsepline}] modifiziert die Parameter für die Linie +zwischen Kopf und Textkörper +\item[\Macro{setfootsepline}] modifiziert die Parameter für die Linie +zwischen Text und Fuß +\item[\Macro{setfootbotline}] modifiziert die Parameter für die Linie +unter dem Seitenfuß +\end{labeling} + +Das obligatorische Argument \PName{Dicke} bestimmt, wie stark die Linie +gezeichnet wird. Das optionale Argument \PName{Länge} akzeptiert die gleichen +symbolischen Werte wie \PName{Breite} bei \DescRef{scrpage-de.cmd.setheadwidth}, also auch einen +normalen Längenausdruck. Solange im Dokument dem optionalen Argument +\PName{Länge} kein Wert zugewiesen wurde, passt sich die entsprechende +Linienlänge automatisch der Breite des Kopfes bzw. des Fußes an. + +Möchte man diesen Automatismus für die Länge einer Linie wieder restaurieren, +dann nutzt man im Längenargument den Wert \PValue{auto}. + +Mit\ChangedAt{v2.2}{\Package{scrpage2}} dem optionalen Argument +\PName{Anweisungen} können zusätzliche Anweisungen definiert werden, die vor +dem Zeichnen der jeweiligen Linie auszuführen sind. Das können beispielsweise +Anweisungen sein, um die +Farbe\Index{Kopf>Farbe}\Index{Fuss=Fuß>Farbe}\Index{Farbe>im + Kopf}\Index{Farbe>im Fuss=im Fuß} der Linie zu ändern. Bei Verwendung einer +\KOMAScript-Klasse können diese Anweisungen auch über +\Macro{setkomafont}\IndexCmd{setkomafont} für eines der Elemente +\FontElement{headtopline}\IndexFontElement[indexmain]{headtopline}% +\important[i]{\FontElement{headtopline}\\ + \FontElement{headsepline}\\ + \FontElement{footsepline}\\ + \FontElement{footbottomline}}, +\FontElement{headsepline}\IndexFontElement[indexmain]{headsepline}, +\FontElement{footsepline}\IndexFontElement[indexmain]{footsepline}, +\FontElement{footbottomline}\IndexFontElement[indexmain]{footbottomline} oder +auch \FontElement{footbotline}\IndexFontElement[indexmain]{footbotline} +gesetzt und mit \Macro{addtokomafont}\IndexCmd{addtokomafont} erweitert +werden. Die beiden Anweisungen \Macro{setkomafont} und \Macro{addtokomafont} +sind in der \KOMAScript-Anleitung näher beschrieben. + + +\begin{Declaration} + \labelsuffix[auto+current]% + \Macro{setheadtopline}\POParameter{auto} + \PParameter{current}% + \labelsuffix[auto] + \Macro{setheadtopline}\POParameter{auto}\Parameter{}% + \labelsuffix[auto+] + \Macro{setheadtopline}\POParameter{auto}\Parameter{}\OParameter{} +\end{Declaration}% +Die hier am Befehl \DescRef{scrpage-de.cmd.setheadtopline} illustrierten Argumente +sind natürlich auch für die anderen drei Längenbefehle gültig. + +Enthält das obligatorische Argument den Wert \PValue{current} oder wird +leer gelassen, dann wird die Dicke der Linie nicht verändert. Das kann +genutzt werden, wenn die Länge der Linie, aber nicht die Dicke modifiziert +werden soll. + +Wird das optionale Argument \PName{Anweisungen} weggelassen, so bleiben +eventuell zuvor gesetzte Anweisungen erhalten. Wird hingegen ein leeres +Argument \PName{Anweisungen} gesetzt, so werden eventuell zuvor gesetzte +Anweisungen wieder gelöscht. + +\begin{Example} + Soll beispielsweise der Kopf mit einer kräftigen Linie von 2\,pt darüber und + einer normalen von 0,4\,pt zwischen Kopf und Text abgesetzt werden, dann + erfolgt das mit: +\begin{lstcode} + \setheadtopline{2pt} + \setheadsepline{.4pt} +\end{lstcode} +Zusätzlich\textnote{Achtung!} sind unbedingt die Optionen +\DescRef{scrpage-de.option.headtopline} und \DescRef{scrpage-de.option.headsepline} vorzugsweise global im +optionalen Argument von \Macro{documentclass} zu setzen. Das Ergebnis könnte +dann wie folgt aussehen. +% + \begin{XmpTopPage} + \XmpHeading{10,29}{70} + \thinlines\XmpRule{10,27}{70} + \thicklines\XmpRule{10,32}{70} + \XmpSetText[\XmpTopText]{10,24} + \XmpMarginNote{83,14} + \end{XmpTopPage} + + Sollen diese Linien zusätzlich in roter Farbe gesetzt werden, dann sind die + Anweisungen beispielsweise wie folgt zu ändern: +\begin{lstcode} + \setheadtopline{2pt}[\color{red}] + \setheadsepline{.4pt}[\color{red}] +\end{lstcode} + In diesem und auch dem folgenden Beispiel wurde für die Aktivierung der + Farbe die Syntax des \Package{color}\IndexPackage{color}-Pakets verwendet, + das dann natürlich auch geladen werden muss. \Package{scrpage2} selbst + bietet keine direkte Farbunterstützung. Damit ist jedes beliebige + Farbunterstützungspaket verwendbar. + + Mit einer \KOMAScript-Klasse kann alternativ +\begin{lstcode} + \setheadtopline{2pt} + \setheadsepline{.4pt} + \setkomafont{headtopline}{\color{red}} + \setkomafont{headsepline}{\color{red}} +\end{lstcode} + verwendet werden. + + Die automatische Anpassung an die Kopf- und Fußbreiten illustriert folgendes + Beispiel, für das die Optionen \DescRef{scrpage-de.option.footbotline} und \DescRef{scrpage-de.option.footsepline} + gesetzt sein sollten: +\begin{lstcode} + \setfootbotline{2pt} + \setfootsepline[text]{.4pt} + \setfootwidth[0pt]{textwithmarginpar} +\end{lstcode} + +%\phantomsection für hyperref-\pageref-Link jum-2001/11/24 + \phantomsection\label{page:scrpage-de.autoLineLength}% + \begin{XmpBotPage} + \XmpHeading{10,18}{85} + \thinlines\XmpRule{17,21}{70} + \thicklines\XmpRule{10,16}{85} + \XmpSetText[\XmpBotText]{10,36} + \XmpMarginNote{83,26} + \end{XmpBotPage} +\end{Example} +% +Nun mag nicht jedem die Ausrichtung der Linie über der Fußzeile gefallen, +sondern es wird in einem solchen Fall erwartet, dass sie wie der Kolumnentitel +linksbündig zum Text ist. Diese Einstellung kann nur global in Form einer +Paketoption erfolgen und wird im folgenden +\autoref{sec:scrpage-de.basics.options} mit anderen Optionen beschrieben.% +% +\EndIndexGroup +\EndIndexGroup + + +\subsection{Optionen beim Laden des Paketes} +\label{sec:scrpage-de.basics.options} + +Während bei den \KOMAScript-Klassen die Mehrzahl der Optionen auch noch nach +dem Laden der Klasse mit \Macro{KOMAoptions} und \Macro{KOMAoption} geändert +werden kann, trifft dies für das Paket \Package{scrpage2} \iffree{derzeit noch +}{}nicht zu. Alle Optionen für dieses Paket müssen als globale Optionen, also +im optionalen Argument von \Macro{documentclass}, oder als Paketoptionen, also +im optionalen Argument von \Macro{usepackage}, angegeben werden. + +% head(in|ex)clude foot(in|ex)clude --> typearea +% headtopline headsepline footbotline footsepline (plain...) +% komastyle standardstyle +% markuppercase markusecase +% automark manualmark +\begin{Declaration} + \Option{headinclude}% + \Option{headexclude}% + \Option{footinclude}% + \Option{footexclude} +\end{Declaration}% +Diese\textnote{Achtung!} Optionen sollten bei Verwendung von +\KOMAScript~3\ChangedAt{v2.3}{\Package{scrpage2}} nicht mehr beispielsweise +per optionalem Argument von \Macro{usepackage} oder per +\Macro{PassOptionsToPackage} direkt an \Package{scrpage2} übergeben +werden. Lediglich aus Gründen der Kompatibilität sind sie noch in +\Package{scrpage2} deklariert und werden von diesem als \Option{headinclude}, +\OptionValue{headinclude}{false}, \Option{footinclude} und +\OptionValue{footinclude}{false} an das Paket \Package{typearea} +weitergereicht. +\EndIndexGroup + + +\begin{Declaration} + \Option{headtopline}% + \Option{plainheadtopline}% + \Option{headsepline}% + \Option{plainheadsepline}% + \Option{footsepline}% + \Option{plainfootsepline}% + \Option{footbotline}% + \Option{plainfootbotline} +\end{Declaration}% +Eine Grundeinstellung für die Linien unter und über den Kopf- und Fußzeilen +kann mit diesen Optionen vorgenommen werden. Diese Einstellungen gelten dann +als Standard für alle mit \Package{scrpage2} definierten Seitenstile. Wird +eine von diesen Optionen verwendet, dann wird eine Linienstärke von 0,4\,pt +eingesetzt. Da es zum Seitenstil \PageStyle{scrheadings} einen entsprechenden +plain-Stil gibt, kann mit den \Option{plain\dots}-Optionen auch die +entsprechende Linie des plain-Stils konfiguriert werden. Diese +\Option{plain}-Optionen wirken aber nur, wenn auch die korrespondierende +Option ohne \Option{plain} aktiviert wurde. Somit zeigt die Option +\Option{plainheadtopline} ohne \Option{headtopline} keine Wirkung. + +Bei diesen Optionen ist zu beachten, dass der entsprechende Seitenteil in den +Textbereich des Satzspiegels mit übernommen wird, wenn eine Linie aktiviert +wurde. Wird also mittels \Option{headsepline} die Trennlinie zwischen Kopf +und Text aktiviert, dann wird automatisch mittels \Package{typearea} der +Satzspiegel so berechnet, dass der Seitenkopf Teil des Textblocks ist. + +Die\textnote{Achtung!} Bedingungen für die Optionen des vorhergehenden +Abschnitts gelten auch für diesen Automatismus. Das bedeutet, dass das Paket +\Package{typearea} nach \Package{scrpage2} geladen werden muss, +beziehungsweise, dass bei Verwendung einer \KOMAScript{}-Klasse die Optionen +\DescRef{scrpage-de.option.headinclude} und \DescRef{scrpage-de.option.footinclude} explizit bei +\Macro{documentclass} gesetzt werden müssen, um Kopf- bzw. Fußzeile in den +Textblock zu übernehmen.% +% +\EndIndexGroup + + +\begin{Declaration} + \Option{ilines}% + \Option{clines}% + \Option{olines} +\end{Declaration}% +\Index{Linienausrichtung}% +Bei der Festlegung der Linienlängen kann es vorkommen, dass die Linie zwar die +gewünschte Länge, aber nicht die erwünschte Ausrichtung hat, da sie im Kopf- +bzw. Fußbereich zentriert wird. Mit den hier vorgestellten Paketoptionen kann +global für alle mit \Package{scrpage2} definierten Seitenstile diese Vorgabe +modifiziert werden. Dabei setzt \Option{ilines} die Ausrichtung so, dass die +Linien an den inneren Rand verschoben werden. Die Option \Option{clines} +verhält sich wie die Standardeinstellung und \Option{olines} richtet am +äußeren Rand aus. + +\begin{Example} + Hier gilt es, das Beispiel zu \DescRef{scrpage-de.cmd.setfootsepline} auf + \autopageref{page:scrpage-de.autoLineLength} mit dem folgenden zu + vergleichen, um die Wirkung der Option \Option{ilines} zu sehen. +\begin{lstcode} + \usepackage[ilines,footsepline,footbotline] + {scrpage2} + \setfootbotline{2pt} + \setfootsepline[text]{.4pt} + \setfootwidth[0pt]{textwithmarginpar} +\end{lstcode} +% Der folgende Text wurde erg"anzt um den Seitenumbruch zu verbessern, +% mjk-2001-10-05: +% \enlargethispage*{2\baselineskip} + Allein die Verwendung der Option \Option{ilines} führt dabei zu der + geänderten Ausgabe, die nachfolgend veranschaulicht wird: +% +\begin{XmpBotPage} + \XmpHeading{10,18}{85} + \thinlines\XmpRule{10,21}{70} + \thicklines\XmpRule{10,16}{85} + \XmpSetText[\XmpBotText]{10,36} + \XmpMarginNote{83,26} +\end{XmpBotPage} + Die Trennlinie zwischen Text und Fuß wird bündig innen im Fußteil + gesetzt und nicht wie bei der Standardeinstellung zentriert. +\end{Example} +\EndIndexGroup + + +% \phantomsection für hyperref-\pageref-Link jum-2001/11/24 +\begin{Declaration} + \Option{automark}% + \Option{manualmark} +\end{Declaration}% +\BeginIndex{}{Kolumnentitel>automatisch}% +\BeginIndex{}{Kolumnentitel>manuell}% +Diese Optionen bestimmen gleich zu Beginn des Dokuments, ob eine automatische +Aktualisierung der Kolumnentitel erfolgt. Die Option \Option{automark} +schaltet die automatische Aktualisierung ein, \Option{manualmark} deaktiviert +sie. +% Das Folgende wurde ergaenzt, weil dazu die haeufigsten Fragen +% bzw. falschen Bug-Reports im Support kamen. +% mjk-2001-09-21: +Ohne Verwendung einer der beiden Optionen bleibt die Einstellung +erhalten, die beim Laden des Paketes gültig war. +\begin{Example} + Sie laden das Paket \Package{scrpage2} unmittelbar nach der Klasse + \Class{scrreprt} und ohne weitere Optionen. Dazu schreiben Sie: +\begin{lstcode} + \documentclass{scrreprt} + \usepackage{scrpage2} +\end{lstcode} + Da bei \Class{scrreprt} der Seitenstil \PageStyle{plain} voreingestellt + ist, ist dies auch jetzt noch der Fall. Außerdem entspricht die + Voreinstellung \PageStyle{plain} manuellen Kolumnentiteln. Wenn Sie + also anschließend mit +\begin{lstcode} + \pagestyle{scrheadings} +\end{lstcode} + auf den Seitenstil \PageStyle{scrheadings} umschalten, sind noch immer + manuelle Kolumnentitel eingestellt. + + Verwenden Sie stattdessen die Dokumentklasse \Class{scrbook}, so + ist nach +\begin{lstcode} + \documentclass{scrbook} + \usepackage{scrpage2} +\end{lstcode} + der Seitenstil \PageStyle{headings} mit automatischen Kolumnentiteln + aktiviert. Bei anschließender Umschaltung auf den Seitenstil + \PageStyle{scrheadings} bleiben automatische Kolumnentitel + eingeschaltet. Dabei werden dann weiterhin die Markierungsmakros von + \Class{scrbook} verwendet. + + Verwenden Sie hingegen +\begin{lstcode} + \usepackage[automark]{scrpage2} +\end{lstcode} + so wird unabhängig von der verwendeten Klasse auf automatische + Kolumnentitel umgeschaltet, wobei die Markierungsmakros von + \Package{scrpage2} genutzt werden. + Natürlich wirkt sich dies auf den Seitenstil + \PageStyle{plain} von \Class{scrreprt} nicht aus. Die Kolumnentitel + werden erst sichtbar, wenn auf den Seitenstil + \PageStyle{scrheadings}\IndexPagestyle{scrheadings} oder + \PageStyle{useheadings} oder einen selbst definierten Seitenstil mit + Kolumnentiteln umgeschaltet wird. +\end{Example} +\EndIndexGroup + + +% Folgende Deklaration und Erklaerung wurde eingefügt von +% mjk 2001-08-17: +\begin{Declaration} + \Option{autooneside} +\end{Declaration}% +\BeginIndex{}{Kolumnentitel>automatisch}% +\BeginIndex{}{Kolumnentitel>manuell}% +Mit dieser Option wird das optionale Argument von +\DescRef{scrpage-de.cmd.automark}\IndexCmd{automark}\Index{Kolumnentitel>automatisch} im +einseitigen Satz automatisch ignoriert. Siehe hierzu auch die Erläuterung +zum Befehl \DescRef{scrpage-de.cmd.automark} in \autoref{sec:scrpage-de.basics.mark}, +\DescPageRef{scrpage-de.cmd.automark}.% +% +\EndIndexGroup + + +\begin{Declaration} + \Option{komastyle}% + \Option{standardstyle} +\end{Declaration}% +Diese Optionen bestimmen, wie die beiden vordefinierten Seitenstile +\PageStyle{scrheadings} und \PageStyle{scrplain} gestaltet sind. +Bei \Option{komastyle} wird eine Definition vorgenommen, wie +sie den \KOMAScript{}-Klassen entspricht. +Bei den \KOMAScript{}-Klassen ist dies die Voreinstellung und +kann somit auch für andere Klassen gesetzt werden. + +Die Option \Option{standardstyle} definiert die beiden Seitenstile +wie es von den Standardklassen erwartet wird. +Außerdem wird hier automatisch \DescRef{scrpage-de.option.markuppercase} aktiviert, +es sei denn, \DescRef{scrpage-de.option.markusedcase} wird ebenfalls als Option übergeben.% +\EndIndexGroup + + +\begin{Declaration} + \Option{markuppercase}% + \Option{markusedcase} +\end{Declaration}% +Für die Funktionalität von \DescRef{scrpage-de.cmd.automark} modifiziert +\Package{scrpage2} interne Befehle, die die Gliederungsbefehle +benutzen, um die lebenden Kolumnentitel zu setzen. +Da einige Klassen, im Gegensatz +zu den \KOMAScript{}-Klassen, die Kolumnentitel in Großbuchstaben +schreiben, muss \Package{scrpage2} wissen, wie die genutzte +Dokumentklasse die lebenden Kolumnentitel darstellt. + +Die Option \Option{markuppercase} zeigt \Package{scrpage2}, dass die benutzte +Klasse die Großschreibweise benutzt. Die Option \Option{markusedcase} sollte +angegeben werden, wenn die benutzte Dokumentklasse keine Großschreibweise +verwendet. Die\textnote{Achtung!} Optionen sind nicht geeignet, eine +entsprechende Darstellung zu erzwingen. Es kann somit zu unerwünschten +Effekten kommen, wenn die Angabe nicht dem Verhalten der Dokumentklasse +entspricht.% +\EndIndexGroup + + +% Die folgende Deklaration und Erklaerung wurde eingefuegt von +% mjk 2001-08-18 +\begin{Declaration} + \Option{nouppercase} +\end{Declaration}% +Wie in obiger Erklärung zu \DescRef{scrpage-de.option.markuppercase} und \DescRef{scrpage-de.option.markusedcase} +bereits ausgeführt wurde, gibt es Klassen und auch Pakete, die beim Setzen der +lebenden Kolumnentitel\Index{Kolumnentitel>automatisch} mit Hilfe einer der +Anweisungen \Macro{uppercase}\IndexCmd{uppercase}\important{\Macro{uppercase}} +oder +\Macro{MakeUppercase}\IndexCmd{MakeUppercase}\important{\Macro{MakeUppercase}} +den gesamten Eintrag in Großbuchstaben wandeln. Mit der Option +\Option{nouppercase} können diese beiden Anweisungen im Kopf und im Fuß außer +Kraft gesetzt werden. Das gilt aber nur für Seitenstile, die mit Hilfe von +\Package{scrpage2} definiert werden. Dazu zählen auch \PageStyle{scrheadings} +und der zugehörige plain-Seitenstil. + +Die verwendete Methode ist äußerst brutal und kann dazu führen, dass +auch erwünschte Änderungen von Klein- in +Großbuchstaben\Index{Grossbuchstaben=Großbuchstaben} unterbleiben. Da +diese Fälle nicht sehr häufig sind, stellt \Option{nouppercase} aber +meist eine brauchbare Lösung dar. +\begin{Example} + Sie verwenden die Standardklasse \Class{book}\IndexClass{book}, + wollen aber, dass die lebenden Kolumnentitel nicht in + Großbuchstaben, sondern in normaler gemischter Schreibweise gesetzt + werden. Die Präambel Ihres Dokuments könnte dann wie folgt beginnen: +\begin{lstcode} + \documentclass{book} + \usepackage[nouppercase]{scrpage2} + \pagestyle{scrheadings} +\end{lstcode} + Die Umschaltung auf den Seitenstil \PageStyle{scrheadings} ist + notwendig, weil sonst der Seitenstil \PageStyle{headings} verwendet + wird, der von der Option \Option{nouppercase} nicht behandelt wird. +\end{Example} + +In einigen Fällen setzen nicht nur Klassen, sondern auch Pakete +lebende Kolumnentitel in Großbuchstaben. Auch in diesen Fällen hilft +\Option{nouppercase} meist, um zu gemischter Schreibweise +zurückzuschalten.% +% +\EndIndexGroup + + +\section{Seitenstile selbst gestalten}\label{sec:scrpage-de.UI} +% +% +\subsection{Die Anwenderschnittstelle}\label{sec:scrpage-de.UI.user} +% \deftripstyle + +Nun möchte man ja nicht immer an die vorgegebenen Seitenstile gebunden sein, +sondern auch seiner Kreativität freien Lauf lassen. +Manchmal ist man auch dazu gezwungen, weil eine bestimmte +\emph{Corporate Identity} einer Firma es verlangt. +Der einfachste Weg damit umzugehen ist +\begin{Declaration} + \Macro{deftripstyle}\Parameter{Name}% + \OParameter{LA}\OParameter{LI}% + \Parameter{KI}\Parameter{KM}\Parameter{KA}% + \Parameter{FI}\Parameter{FM}\Parameter{FA} +\end{Declaration}% +Die einzelnen Felder haben folgende Bedeutung: +\begin{labeling}[~--]{\PName{Name}} +\item[\PName{Name}] die Bezeichnung des Seitenstils, die dann bei der + Aktivierung mit \Macro{pagestyle}\Parameter{Name} oder + \Macro{thispagestyle}\Parameter{Name} verwendet wird +\item[\PName{LA}] die Dicke der äußeren Linien, d.\,h. der Linien über der + Kopfzeile und unter der Fußzeile (optional) +\item[\PName{LI}] die Dicke der inneren Linie, d.\,h. der Linien die Kopf und + Fuß vom Textkörper trennen (optional) +\item[\PName{KI}] Inhalt des Feldes im Kopf innenseitig oder bei einseitigem + Layout links +\item[\PName{KM}] Inhalt des Feldes im Kopf zentriert +\item[\PName{KA}] Inhalt des Feldes im Kopf außenseitig oder bei einseitigem + Layout rechts +\item[\PName{FI}] Inhalt des Feldes im Fuß innenseitig oder bei einseitigem + Layout links +\item[\PName{FM}] Inhalt des Feldes im Fuß zentriert +\item[\PName{FA}] Inhalt des Feldes im Fuß außenseitig oder bei einseitigem + Layout rechts +\end{labeling} + +Der Befehl \Macro{deftripstyle} stellt sicherlich die einfachste +Möglichkeit dar, Seitenstile zu definieren. +Leider sind damit auch Einschränkungen verbunden, +da in einem Seitenbereich mit einem durch \Macro{deftripstyle} deklarierten +Seitenstil keine Änderung der Kopf- und Fußlinien erfolgen kann. + +\begin{Example} + Vorgegeben sei ein doppelseitiges Layout, bei dem die Kolumnentitel innen + erscheinen sollen. Weiterhin soll der Dokumenttitel, in diesem Fall kurz + \glqq Bericht\grqq, an den Außenrand in den Kopf, die Seitenzahl soll + zentriert in den Fuß. +\begin{lstcode} + \deftripstyle{DerBericht}% + {\headmark}{}{Bericht}% + {}{\pagemark}{} +\end{lstcode} + + Sollen weiterhin die Linien über dem Kopf und unter dem Fuß + mit 2\,pt erscheinen und der ganze Textkörper mit dünnen Linien + von 0,4\,pt von Kopf und Fuß abgesetzt werden, dann erweitert + man vorherige Definition. +\begin{lstcode} + \deftripstyle{DerBericht}[2pt][.4pt]% + {\headmark}{}{Bericht}% + {}{\pagemark}{} +\end{lstcode} + Das Ergebnis ist in \autoref{fig:scrpage-de2.tomuchlines} zu sehen. +% +\begin{figure} + \typeout{^^J--- Ignore underfull and overfull \string\hbox:}% + \setcapindent{0pt}% + \begin{captionbeside} + [{% + Beispiel eines selbst definierten, von Linien dominierten Seitenstils% + }]{% + Beispiel für einen selbst definierten, von Linien dominierten Seitenstil + mit einem statischen und einem lebenden Kolumnentitel im Kopf und der + Seitenzahl in der Mitte des Fußes.% + \label{fig:scrpage-de2.tomuchlines}% + } + [l] + \iffree{\setlength{\unitlength}{1.15mm}}{\setlength{\unitlength}{1mm}}% + \begin{picture}(85,51)\scriptsize + \thinlines + \put(0,0){\line(0,1){51}} + \put(45,0){\line(0,1){51}} + \put(0,51){\line(1,0){40}} + \put(45,51){\line(1,0){40}} + % + \thicklines + \put(40,0){\line(0,1){51}} + \put(85,0){\line(0,1){51}} + \put(0,0){\line(1,0){40}} + \put(45,0){\line(1,0){40}} + % + \XmpHeading[Bericht\hfill 2 Das Auge]{6,47}{30} + \XmpHeading[2.1 Netzhaut\hfill Bericht]{49,47}{30} + \XmpHeading[\hfill 14\hfill]{6,6.5}{30} + \XmpHeading[\hfill 15\hfill]{49,6.5}{30} + \put(6,44){\makebox(0,0)[tl]{\parbox{30\unitlength}{\tiny% + \textbf{2.1 Netzhaut}\\ + \XmpText[49]}}} + \put(49,44){\makebox(0,0)[tl]{\parbox{30\unitlength}{\tiny% + \XmpText[51]}}} + % + \thinlines + \XmpRule{6,45.5}{30}\XmpRule{49,45.5}{30} + \XmpRule{6,8}{30}\XmpRule{49,8}{30} + \linethickness{1pt} + \XmpRule{6,49}{30}\XmpRule{49,49}{30} + \XmpRule{6,5}{30}\XmpRule{49,5}{30} + \end{picture} + \end{captionbeside} + \typeout{^^J--- Don't ignore underfull and overfull \string\hbox:^^J}% +\end{figure} +\end{Example} +\EndIndexGroup + + +\subsection{Die Expertenschnittstelle}\label{sec:scrpage-de.UI.expert} +% \defpagestyle \newpagestyle \providepagestyle \renewpagestyle +Einfache Seitenstile, wie sie mit \DescRef{scrpage-de.cmd.deftripstyle} deklariert +werden können, sind erfahrungsgemäß selten. +Entweder verlangt ein Professor, dass die Diplomarbeit so aussieht +wie seine eigene -- und wer will ihm da \emph{ernsthaft} widersprechen -- +oder eine Firma möchte, dass die halbe Finanzbuchhaltung im +Seitenfuß auf"|taucht. Alles kein Problem, denn es gibt noch: +\begin{Declaration} + \Macro{defpagestyle}\Parameter{Name}\Parameter{Kopfdefinition}\Parameter{Fußdefinition}% + \Macro{newpagestyle}\Parameter{Name}\Parameter{Kopfdefinition}\Parameter{Fußdefinition}% + \Macro{renewpagestyle}\Parameter{Name}\Parameter{Kopfdefinition}\Parameter{Fußdefinition}% + \Macro{providepagestyle}\Parameter{Name}\Parameter{Kopfdefinition}\Parameter{Fußdefinition} +\end{Declaration}% +Dies sind die Befehle, die die volle Kontrolle über die Gestaltung +eines Seitenstils ermöglichen. Der Aufbau ist bei allen vier +Definitionen gleich, sie unterscheiden sich nur hinsichtlich +der Wirkungsweise. +\begin{labeling}[\ --]{\Macro{providepagestyle}} +\item[\Macro{defpagestyle}] definiert einen neuen Seitenstil. Existiert + bereits einer mit diesem Namen, wird dieser überschrieben. +\item[\Macro{newpagestyle}] definiert einen neuen Seitenstil. Wenn schon einer + mit diesem Namen existiert, wird ein Fehler ausgegeben. +\item[\Macro{renewpagestyle}] definiert einen bestehenden Seitenstil um. Wenn + noch keiner mit diesem Namen existiert, wird ein Fehler ausgegeben. +\item[\Macro{providepagestyle}] definiert einen neuen Seitenstil nur dann, + wenn dieser vorher noch nicht existiert. +\end{labeling} + +Am Beispiel von \Macro{defpagestyle} soll die Syntax der Definitionen +im Folgenden erläutert werden. +\begin{labeling}[~--]{\PName{Kopfdefinition}\,} +\item[\PName{Name}] die Bezeichnung des Seitenstils +\item[\PName{Kopfdefinition}] die Deklaration des Seitenkopfes bestehend aus + fünf Teilen, wobei die in runden Klammern stehenden Angaben optional + sind:\hfill\\ + \hspace*{1em}\AParameter{OLL,OLD}% + \Parameter{GS}\Parameter{US}\Parameter{ES}\AParameter{ULL,ULD} +\item[\PName{Fußdefinition}] die Deklaration des Seitenfußes bestehend aus + fünf Teilen, wobei die in runden Klammern stehenden Angaben optional + sind:\hfill\\ + \hspace*{1em}\AParameter{OLL,OLD}% + \Parameter{GS}\Parameter{US}\Parameter{ES}\AParameter{ULL,ULD} +\end{labeling} + +Wie zu sehen ist, haben Kopf- und Fußdefinition identischen Aufbau. Die +einzelnen Parameter haben folgende Bedeutung: +\begin{labeling}[\ --]{\PName{OLD}} +\item[\PName{OLL}] obere Linienlänge: Kopf = außen, Fuß = Trennlinie +\item[\PName{OLD}] obere Liniendicke +\item[\PName{GS}] Definition für die \emph{gerade} Seite +\item[\PName{US}] Definition für die \emph{ungerade} Seite +\item[\PName{ES}] Definition für \emph{einseitiges} Layout +\item[\PName{ULL}] untere Linienlänge Kopf = Trennlinie, Fuß = außen +\item[\PName{ULD}] untere Liniendicke +\end{labeling} + +Werden die optionalen Linienargumente nicht gesetzt, dann bleibt das Verhalten +weiterhin durch die in \autoref{sec:scrpage-de.basics.format}, +\DescPageRef{scrpage-de.cmd.setheadtopline} vorgestellten Linienbefehle +konfigurierbar. + +Die drei Felder \PName{GS}, \PName{US} und \PName{ES} entsprechen Boxen, die +die Breite des Kopf- bzw. Fußteils haben. +Die entsprechenden Definitionen erscheinen in diesen Boxen linksbündig. +Um somit etwas links- \emph{und} rechtsseitig in den Boxen zu platzieren, +kann der Zwischenraum mit \Macro{hfill} gestreckt werden: +% +\begin{lstcode}[belowskip=\dp\strutbox] + {\headmark\hfill\pagemark} +\end{lstcode} + +Um zusätzlich etwas zentriert erscheinen zu lassen, ist eine erweiterte +Definition notwendig. +Die Befehle \Macro{rlap} und \Macro{llap} setzen die übergebenen Argumente. +Für \LaTeX{} erscheint es aber so, dass diese Texte eine Breite von Null +haben. Nur so erscheint der mittlere Text auch wirklich zentriert. +% +\begin{lstcode} + {\rlap{\headmark}\hfill zentriert\hfill\llap{\pagemark}} +\end{lstcode} + +\iffalse% Umbruchkorrekturtext +Dies und die Verwendung der Expertenschnittstelle in Zusammenhang mit +anderen Befehlen von \Package{scrpage2} nun als abschließendes Beispiel. +\fi + +\begin{Example} + Angenommen es wird die Dokumentklasse \Class{scrbook} genutzt. Damit + liegt ein zweiseitiges Layout vor. Für das Paket \Package{scrpage2} wird + festgelegt, dass mit automatisch aktualisierten Kolumnentiteln gearbeitet + wird und dass im Seitenstil \PageStyle{scrheadings} eine Trennlinie zwischen + Kopf und Text gezogen wird. + +\begin{lstcode} + \documentclass{scrbook} + \usepackage[automark,headsepline]{scrpage2} +\end{lstcode} + + Mit Hilfe der Expertenschnittstelle werden zwei Seitenstile definiert. Der + erste legt keine Linienargumente fest, im zweiten wird die Linie über dem + Kopf mit einer Dicke von 1\,pt und die Linie unter dem Kopf mit 0\,pt + festgelegt. + +\begin{lstcode} + \defpagestyle{ohneLinien}{% + {Beispiel\hfill\headmark} + {\headmark\hfill ohne Linien} + {\rlap{Beispiel}\hfill\headmark\hfill% + \llap{ohne Linien}} + }{% + {\pagemark\hfill} + {\hfill\pagemark} + {\hfill\pagemark\hfill} + } + \defpagestyle{mitLinien}{% + (\textwidth,1pt) + {mit Linien\hfill\headmark} + {\headmark\hfill mit Linien} + {\rlap{\KOMAScript}\hfill \headmark\hfill% + \llap{mit Linien}} + (0pt,0pt) + }{% + (\textwidth,.4pt) + {\pagemark\hfill} + {\hfill\pagemark} + {\hfill\pagemark\hfill} + (\textwidth,1pt) + } +\end{lstcode} + + Gleich zu Beginn wird der Seitenstil \PageStyle{scrheadings} aktiviert. Mit + \Macro{chapter} wird ein neues Kapitel begonnen. Weiterhin wird automatisch + durch \Macro{chapter} der Seitenstil für diese Seite auf \PageStyle{plain} + gesetzt. Das folgende \DescRef{scrpage-de.cmd.chead} zeigt, wie durch Modifikation des + plain-Stils ein Kolumnentitel erzeugt werden kann. Grundsätzlich sollte + jedoch davon Abstand genommen werden, da sonst der Markierungscharakter der + plain-Seite verloren geht. Es ist wichtiger anzuzeigen, dass hier ein neues + Kapitel beginnt, als dass ein Abschnitt dieser Seite einen bestimmten Titel + trägt. + +\begin{lstcode} + \begin{document} + \pagestyle{scrheadings} + \chapter{Thermodynamik} + \chead[\leftmark]{} + \section{Hauptsätze} + Jedes System besitzt eine extensive Zustandsgröße + Energie. Sie ist in einem abgeschlossenen System + konstant. +\end{lstcode}% + \begin{XmpTopPage} + \XmpHeading[\hfill\textsl{1 Thermodynamik}\hfill]{10,27}{70} + \put(10,17){\normalsize\textbf{\sffamily 1 Thermodynamik}} + \put(10,12){\textbf{\sffamily 1.1 Hauptsätze}} + \XmpSetText[% + Jedes System besitzt eine extensive Zustands\char\defaulthyphenchar + \linebreak]{10,9} + \end{XmpTopPage} + + Nach dem Seitenwechsel ist der Seitenstil \PageStyle{scrheadings} + aktiv, und somit auch die Trennlinie aus den Paketoptionen sichtbar. +\begin{lstcode} + Es existiert eine Zustandsgröße, genannt die + Entropie eines Systems, deren zeitliche Änderung + sich aus Entropieströmung und Entropieerzeugung + zusammensetzt. +\end{lstcode} + \begin{XmpTopPage} + \XmpHeading[\textsl{1 Thermodynamik}\hfill]{20,27}{70} + \thinlines\XmpRule{20,25}{70} + \XmpSetText[% + Es existiert eine Zustandsgröße, genannt die En"-tropie + eines Systems, deren zeitliche Änderung sich aus + Entropieströmung und Entropie\char\defaulthyphenchar\kern-1pt + \linebreak]{20,21} + \end{XmpTopPage} + + Wiederum nach einem Seitenwechsel wird auf manuelle Kolumnentitel gewechselt + und der Seitenstil \PValue{ohneLinien} aktiviert. Da keine Linienargumente + bei der Definition dieses Stils genutzt wurden, wird die + Standard-Linien\-konfiguration verwendet. Diese zeichnet hier eine Linie + zwischen Kopf und Text, da \DescRef{scrpage-de.option.headsepline} als Argument für + \Package{scrpage2} angegeben wurde.% +\begin{lstcode} + \manualmark + \pagestyle{ohneLinien} + \section{Exergie und Anergie} + \markright{Energieumwandlung} + Man bezeichnet die bei der Einstellung des + Gleichgewichts mit der Umgebung maximal gewinnbare + Arbeit als Exergie. +\end{lstcode}% + \begin{XmpTopPage} + \XmpHeading[\slshape Energieumwandlung\hfill ohne Linien]{10,27}{70} + \thinlines\XmpRule{10,25}{70} + \XmpSetText[{% + \textbf{\sffamily 1.2 Exergie und Anergie}\\[2pt] + Man bezeichnet die bei der Einstellung des + Gleichgewichts mit der Umgebung maximal\linebreak}]{10,21} + \end{XmpTopPage} + + Nach dem Wechsel auf die folgende linke Seite wird der Seitenstil + \PValue{mitLinien} aktiviert. Die Linieneinstellungen werden hier nun + angewendet und entsprechend der Definition dargestellt. +\begin{lstcode} + \pagestyle{mitLinien} + \renewcommand{\headfont}{\itshape\bfseries} + Den nicht in Exergie umwandelbaren Anteil einer + Energie nennt man Anergie \Var{B}. + \[ B = U + T (S_1 - S_u) - p (V_1 - V_u)\] + \end{document} +\end{lstcode} + \begin{XmpTopPage} + \XmpHeading[\itshape\bfseries mit Linien\hfill 1 Thermodynamik]{20,27}{70} + \thicklines\XmpRule{20,29}{70} + \XmpSetText[% + Den nicht in Exergie umwandelbaren Anteil einer + Energie nennt man Anergie $B$. + \vspace{-.5ex}\[ B = U + T (S_1 - S_u) - p (V_1 - V_u)\] ]{20,21} + \end{XmpTopPage} +\end{Example} +\EndIndexGroup + + +\subsection{Seitenstile verwalten}\label{sec:scrpage-de.UI.cfgFile} +% scrpage.cfg +\BeginIndex{File}{scrpage.cfg} +Bei längerer Arbeit mit verschiedenen Seitenstilen wird sich, je nach +Geschmack und Aufgabenstellung, ein fester Satz an benutzten Stilen +etablieren. +Um nicht bei jedem neuen Projekt eine große Kopieraktion von den Daten +eines Projekts zum neuen Projekt starten zu müssen, liest \Package{scrpage2} +am Ende seiner Initialisierungsphase die Datei \File{scrpage.cfg} ein. +In dieser Datei können dann Seitenstile definiert sein, die viele +Projekte gemeinsam nutzen können. +\EndIndex{File}{scrpage.cfg} +% +\EndIndexGroup + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: t +%%% End: |