diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/doc/english/scrbookreportarticle-experts.tex')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/doc/english/scrbookreportarticle-experts.tex | 658 |
1 files changed, 658 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/doc/english/scrbookreportarticle-experts.tex b/Master/texmf-dist/source/latex/koma-script/doc/english/scrbookreportarticle-experts.tex new file mode 100644 index 00000000000..b718bccf6f8 --- /dev/null +++ b/Master/texmf-dist/source/latex/koma-script/doc/english/scrbookreportarticle-experts.tex @@ -0,0 +1,658 @@ +% ====================================================================== +% scrbookreportarticle-experts.tex +% Copyright (c) Markus Kohm, 2001-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. +% ---------------------------------------------------------------------- +% scrbookreportarticle-experts.tex +% Copyright (c) Markus Kohm, 2001-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. +% ====================================================================== +% +% 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 +% +% ============================================================================ + +\ProvidesFile{scrbookreportarticle-experts.tex}[2012/02/28 KOMA-Script guide +(chapter: scrbook, scrreprt, scrartcl for experts)] + +\translator{Gernot Hassenpflug\and Markus Kohm} + +% Date of the translated German file: 2012/02/28 + + +\chapter{Additional Information about the Main Classes \Class{scrbook}, + \Class{scrreprt}, and \Class{scrartcl} as well as the Package + \Package{scrextend}} +\labelbase{maincls-experts} + +This chapter gives additional information about the \KOMAScript{} classes +\Class{scrbook}, \Class{scrreprt}, and \Class{scrartcl}. Some of the features +are also available for package \Package{scrextend}. \iffree{Some parts of the + chapter are subject to the \KOMAScript{} book \cite{book:komascript} + only. This shouldn't be a problem, because the}{The} average user, who only +want to use the package, won't need the information, that is addressed to +users with non-standard requirements or who want to write their own classes +using a \KOMAScript{} class. Another part of the information describes features +of the classes that exist only because of compatibility to former +releases of \KOMAScript{} or the standard classes. The features, that exist +only because of compatibility to former \KOMAScript{} releases, are printed +with a sans serif font. You shouldn't use them any longer. + +\LoadNonFree{scrbookreportarticle-experts}{0} + +\section{Additional Information to User Commands} +\label{sec:maincls-experts.addInfos} + +\LoadNonFree{scrbookreportarticle-experts}{1} + + +\section{Cooperation and Coexistence of \KOMAScript{} and Other Packages} +\label{sec:maincls-experts.coexistence} + +\LoadNonFree{scrbookreportarticle-experts}{2} + + +\section{Expert Commands} +\label{sec:maincls-experts.experts} + +This sections described commands, that are more or less out of average user's +interest. Nevertheless these commands provide additional features for +experts. Because the information is addressed to experts it's condensed. + + +\begin{Declaration} + \Macro{KOMAClassName}\\ + \Macro{ClassName} +\end{Declaration} +\BeginIndex{Cmd}{KOMAClassName}% +\BeginIndex{Cmd}{ClassName}% +\Macro{KOMAClassName} stores the name of the currently used \KOMAScript{} +class. If someone wants to know, whether or not or a \KOMAScript{} class is +used or which \KOMAScript{} is used this may be tested with this command. In +difference to this, \Macro{ClassName} tells which would be the standard class, +that has been replaced by a \KOMAScript{} class. + +Please note\textnote{Attention!}, that the existence of +\Macro{KOMAScript}\IndexCmd{KOMAScript} isn't a indication for the usage of a +\KOMAScript{} class. First of all: Every \KOMAScript{} package and not only +\KOMAScript{} classes define \Macro{KOMAScript}. Furthermore other packages +may also define the \KOMAScript{} word mark with this name.% +% +\EndIndex{Cmd}{ClassName}% +\EndIndex{Cmd}{KOMAClassName}% + +\begin{Declaration} + \Macro{addtocentrydefault}\Parameter{level}\Parameter{number}% + \Parameter{heading} +\end{Declaration} +\BeginIndex{Cmd}{addtocentrydefault}% +The\ChangedAt{v3.08}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} \KOMAScript{} classes don't use +\Macro{addcontentsline}\IndexCmd{addcontentsline}% +\important{\Macro{addcontentsline}} directly. Instead they +call \Macro{addtocentrydefault} with similar arguments. The command may be used +for both, entries with and without number. Thereby \PName{level} is the +textual sectioning level, i.\,e., \PValue{part}, +\PValue{chapter}, \PValue{section}, \PValue{subsection}, +\PValue{subsubsection}, \PValue{paragraph}, or \PValue{subparagraph}. The +already formatted sectioning number is given by the second argument, +\PName{number}. This argument may be empty. The text of the entry is given by +argument \PName{heading}. It is recommended to protect fragile commands inside +this argument with prefix +\Macro{protect}\IndexCmd{protect}\important{\Macro{protect}}. + +There's one speciality for argument \PName{number}. An empty argument +signalizes, that an entry without number should be generated. \KOMAScript{} +uses +\begin{quote} + \Macro{addcontentsline}\PParameter{toc}\Parameter{level}% + \Parameter{heading} +\end{quote} +for this. Nevertheless, if the argument is not empty an entry with number +will be made and \PName{number} is the already formatted heading +number. \KOMAScript{} uses +\begin{quote}\raggedright + \Macro{addcontentsline}\PParameter{toc}\Parameter{level}% + \PParameter{\%\\ + \quad\Macro{protect}\Macro{numberline}\Parameter{number}% + \PName{heading}\%\\ + } +\end{quote} +to make this. + +Package authors an authors of wrapper classes may redefined this command to +manipulate the entries. For example\textnote{Example} one could suggest +\begin{lstcode}[belowskip=\dp\strutbox plus 1pt] + \renewcommand{\addtocentrydefault}[3]{% + \ifstr{#3}{}{% + \ifstr{#2}{}{% + \addcontentsline{toc}{#1}{#3}% + }{% + \addcontentsline{toc}{#1}{\protect\numberline{#2}#3}% + }% + }% + }% +\end{lstcode} +to omit entries with empty \PName{heading}. In real live this wouldn't be +needed, because the \KOMAScript{} classes already use another method to +suppress empty entries. See the description of the structuring commands in +\autoref{sec:maincls.structure} from \autopageref{desc:maincls.cmd.part} +onward for this.% +% +\EndIndex{Cmd}{addtocentrydefault} + +\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}% +\BeginIndex{Cmd}{addparttocentry}% +\BeginIndex{Cmd}{addchaptertocentry}% +\BeginIndex{Cmd}{addsectiontocentry}% +\BeginIndex{Cmd}{addsubsectiontocentry}% +\BeginIndex{Cmd}{addsubsubsectiontocentry}% +\BeginIndex{Cmd}{addparagraphtocentry}% +\BeginIndex{Cmd}{addsubparagraphtocentry}% +The\ChangedAt{v3.08}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} \KOMAScript{} classes call the previously described +command \Macro{addtocentrydefault}\IndexCmd{addtocentrydefault}% +\important{\Macro{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}}. Nevertheless, the +default definition of all these individual commands simply call +\Macro{addtocentrydefault} with their own \PName{level} passing their +arguments through.% +% +\EndIndex{Cmd}{addsubparagraphtocentry}% +\EndIndex{Cmd}{addsubsubsectiontocentry}% +\EndIndex{Cmd}{addparagraphtocentry}% +\EndIndex{Cmd}{addsubsectiontocentry}% +\EndIndex{Cmd}{addsectiontocentry}% +\EndIndex{Cmd}{addchaptertocentry}% +\EndIndex{Cmd}{addparttocentry}% + +\begin{Declaration} + \Macro{@fontsizefilebase} +\end{Declaration} +\BeginIndex{Cmd}{@fontsizefilebase}% +The prefix \File{scrsize} for file names of font size files, that has been +mentioned\iffree{ in \autoref{sec:maincls-experts.addInfos}}{} at +\autopageref{desc:maincls-experts.option.fontsize} is only the default of the +internal macro \Macro{@fontsizefilebase}\IndexCmd{@fontsizefilebase}. This +default is used only, if the macro hasn't already be defined when loading a +\KOMAScript{} class or package \Package{scrextend}. Authors of wrapper classes +may define this macro with another file name prefix to use completely +different font size files. Also\textnote{Hint!} authors of wrapper classes +could change or deactivate the \emph{fallback} solution for unknown font sizes +by redefinition of macro +\Macro{changefontsizes}\important{\Macro{changefontsizes}}% +\IndexCmd{changefontsize}. This macro has exactly one argument: the wanted +font size.% +% +\EndIndex{Cmd}{@fontsizefilebase}% + +\begin{Declaration} + \Macro{newkomafont}\OParameter{warning message}\Parameter{element}% + \Parameter{default}\\ + \Macro{aliaskomafont}\Parameter{alias name}\Parameter{element} +\end{Declaration} +\BeginIndex{Cmd}{newkomafont}% +\BeginIndex{Cmd}{aliaskomafont}% +Experts may use \Macro{newkomafont} to define a \PName{default} for the font +style of an \PName{element}. After this that default may be changed using +commands \Macro{setkomafont} and \Macro{addtokomafont} (see +\autoref{sec:maincls.textmarkup}, +\autopageref{desc:maincls.cmd.setkomafont}). Of course this is not enough to +use the defined font style. The expert himself has to prepare his code to use +command +\Macro{usekomafont}\important{\Macro{usekomafont}}\IndexCmd{usekomafont} (see +\autopageref{desc:maincls.cmd.usekomafont}) with that \PName{element} at his +code definitions. + +The optional argument \PName{warning message} defines a warning message, +that \KOMAScript{} will show whenever the default font style of that +\PName{element} will be changed. The sender of the warning in such cases will +be the used \KOMAScript{} class or package \Package{scrextend}. + +Command \Macro{aliaskomafont} defines an \PName{alias name} to an already +defined \PName{element}. \KOMAScript{} will inform the user automatically +about the real name of the element, whenever an \PName{alias name} will be +used. An\textnote{Hint!} \PName{alias name} may be used, e.\,g., if a +developer finds a better name for an element, that has been defined formerly +with another name, if the old name should still be usable because of +compatibility. Also an \PName{alias name}s may increase usability, because +different users may find different names more or less intuitive. \KOMAScript{} +itself defines a lot of \PName{alias name}s for several \PName{element}s. +% +\EndIndex{Cmd}{aliaskomafont}% +\EndIndex{Cmd}{newkomafont}% + +\begin{Declaration} + \Macro{setparsizes}\Parameter{indent}\Parameter{distance}%^^A + \Parameter{last line end space} +\end{Declaration} +\BeginIndex{Cmd}{setparsizes}% +With this command \KOMAScript{} provides to set the indent of the first line +of a new paragraph, the distance between paragraphs and the white space that +has to be at the end of the last line of each paragraph. This command should +be used whenever changes should also be recognized by option +\OptionValue{parskip}{relative}. \KOMAScript{}\textnote{Beispiel} itself uses +this command, e.\,g., with +\begin{lstcode}[belowskip=\dp\strutbox plus 1ex] + \setparsizes{0pt}{0pt}{0pt plus 1fil} +\end{lstcode} +to switch of paragraph indent and distance between paragraphs and to allow any +white space at the end of the last line of paragraphs. This make sense, if a +paragraph consists of a box only, that should be printed without vertical +distance but with the whole column width. If, in opposite to that, the box +should only span the whole width but should be printed with the current +settings of paragraph indent and distance between paragraphs, usage of +\begin{lstcode}[belowskip=\dp\strutbox plus 1ex] + \setlength{\parfillskip}{0pt plus 1fil} +\end{lstcode} +would be recommended.% +% +\EndIndex{Cmd}{setparsizes}% + +\begin{Declaration} + \Macro{raggedchapterentry} +\end{Declaration} +\BeginIndex{Cmd}{raggedchapterentry}% +This command is not really comparable with commands like +\Macro{raggedsection}. In opposite to those commands, that provide to print +corresponding elements either justified or right- or left-aligned or centered, +\Macro{raggedchapterentry} currently only provides to print chapter entries at +the table of contents justified or left-aligned. Default is justified. For +left-aligned the command has to be redefined to be +\Macro{raggedright}\important{\Macro{raggedright}}\IndexCmd{raggedright}. See +also the limitation note in \autoref{sec:maincls-experts.coexistence}, +\autopageref{desc:maincls-experts.cmd.raggedsection} for this.% +% +\EndIndex{Cmd}{raggedchapterentry} + +\LoadNonFree{scrbookreportarticle-experts}{3} +\begin{Declaration} + \Macro{chapterheadstartvskip}\\ + \Macro{chapterheadendvskip}\\ + \Macro{partheadstartvskip}\\ + \Macro{partheadmidvskip}\\ + \Macro{partheadendvskip}\\ + \Macro{partheademptypage} +\end{Declaration} +\BeginIndex{Cmd}{chapterheadstartvskip}% +\BeginIndex{Cmd}{chapterheadendvskip}% +\BeginIndex{Cmd}{partheadstartvskip}% +\BeginIndex{Cmd}{partheadmidvskip}% +\BeginIndex{Cmd}{partheadendvskip}% +\BeginIndex{Cmd}{partheademptypage}% +These\important[i]{\Macro{chapter}\\ + \Macro{part}\\ + \Macro{addchap}\\ + \Macro{addpart}} are used inside of the definition of the headings +\Macro{chapter}\IndexCmd{chapter}, \Macro{part}, \Macro{addchap}, +\Macro{addpart} and their star-variations. Thereby +\Macro{chapterheadstartvskip} is designed to be a command, that inserts +vertical distance before the chapter heading. Analogues +\Macro{chapterheadendvskip} is designed to be a command, that inserts vertical +distance after the chapter heading. + +Vertical distance above and below part headings will be inserted using the +commands \Macro{partheadstartvskip} and \Macro{partheadendvskip}. A page break +would be interpreted to be part of the vertical distance and therefor is +already part of the default of \Macro{partheadendvskip} in +\Class{scrbook}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} and +\Class{scrreprt}. Command +\Macro{partheademptypage}\ChangedAt{v3.02}{\Class{scrbook}\and + \Class{scrreprt}} is used to produce the empty page after the part heading +page of \Class{scrbook} and \Class{scrreprt}. + +The \Class{scrbook}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} and +\Class{scrreprt} default of the six commands are listed in +\autoref{tab:maincls-experts.headvskip} and +\autoref{tab:maincls-experts.headvskip2}. The +\Class{scrartcl}\OnlyAt{\Class{scrartcl}} defaults of the three at this class +defined commands are listed in +\autoref{tab:maincls-experts.headvskip3}. An\textnote{Example!} example, that +redefines \Macro{chapterheadstartvskip} and \Macro{chapterheadendvskip} to +print extra rules above and below the chapter heading, may be found at +\cite{homepage} (in German).% +% +\begin{table} + \centering +% \KOMAoptions{captions=topbeside}% +% \setcapindent{0pt}% + \caption +% \begin{captionbeside} + {% + defaults of the commands for the vertical distances of chapter headings + with \Class{scrbook} and \Class{scrreprt}% + }% +% [l] + \begin{tabular}{ll} + \multicolumn{2}{@{}l}{\bfseries Mit \OptionValue{headings}{big}:}\\ + \toprule + command & default definition \\ + \midrule + \Macro{chapterheadstartvskip} & + \Macro{vspace*}\PParameter{2.3\Macro{baselineskip}} \\ + \Macro{chapterheadendvskip} & + \Macro{vspace*}\texttt{\{1.725\Macro{baselineskip}} \\ & \quad + \texttt{plus .115\Macro{baselineskip}} % \\ & \quad + \texttt{minus .192\Macro{baselineskip}\}} \\ + \bottomrule\\ + \multicolumn{2}{@{}l}{\bfseries Mit \OptionValue{headings}{normal}:}\\ + \toprule + command & default definition \\ + \midrule + \Macro{chapterheadstartvskip} & + \Macro{vspace*}\PParameter{2\Macro{baselineskip}} \\ + \Macro{chapterheadendvskip} & + \Macro{vspace*}\texttt{\{1.5\Macro{baselineskip}}\\ & \quad + \texttt{plus .1\Macro{baselineskip}} % \\ & \quad + \texttt{minus .167\Macro{baselineskip}\}} \\ + \bottomrule\\ + \multicolumn{2}{@{}l}{\bfseries Mit \OptionValue{headings}{small}:}\\ + \toprule + command & default definition \\ + \midrule + \Macro{chapterheadstartvskip} & + \Macro{vspace*}\PParameter{1.8\Macro{baselineskip}} \\ + \Macro{chapterheadendvskip} & + \Macro{vspace*}\texttt{\{1.35\Macro{baselineskip}}\\ & \quad + \texttt{plus .09\Macro{baselineskip}} % \\ & \quad + \texttt{minus .15\Macro{baselineskip}\}} \\ + \bottomrule\\ + \end{tabular} +% \end{captionbeside} + \label{tab:maincls-experts.headvskip}% +\end{table} +% +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside} + {% + defaults of the commands for the vertical distances of part headings + with \Class{scrbook} and \Class{scrreprt}% + }[l] + \begin{tabular}[t]{ll} + \toprule + command & default definition \\ + \midrule + \Macro{partheadstartvskip} & \Macro{null}\Macro{vfil} \\ + \Macro{partheadmidvskip} & \Macro{par}\Macro{nobreak}\Macro{vskip} \texttt{20pt}\\ + \Macro{partheadendvskip} & \Macro{vfil}\Macro{newpage} \\ + \Macro{partheademptypage} & \Macro{if@twoside}\Macro{if@openright} \\ & + \quad\Macro{null}\Macro{thispagestyle}\PParameter{empty}\texttt{\%}\\ & + \quad\Macro{newpage}\\& + \Macro{fi}\Macro{fi}\\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:maincls-experts.headvskip2}% +\end{table}% +% +\begin{table} +% \centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% +% \caption + \begin{captionbeside} + {% + defaults of the commands for the vertical distances of part headings + with \Class{scrartcl}% + }[l] + \begin{tabular}[t]{ll} + \toprule + command & default definition \\ + \midrule + \Macro{partheadstartvskip} & \Macro{addvspace}\PParameter{4ex} \\ + \Macro{partheadmidvskip} & \Macro{par}\Macro{nobreak}\\ + \Macro{partheadendvskip} & \Macro{vskip} \texttt{3ex}\\ + \bottomrule + \end{tabular} + \end{captionbeside} + \label{tab:maincls-experts.headvskip3}% +\end{table}% +% +\EndIndex{Cmd}{partheademptypage}% +\EndIndex{Cmd}{partheadendvskip}% +\EndIndex{Cmd}{partheadmidvskip}% +\EndIndex{Cmd}{partheadstartvskip}% +\EndIndex{Cmd}{chapterheadendvskip}% +\EndIndex{Cmd}{chapterheadstartvskip}% + + +\begin{Declaration} + \Macro{appendixmore} +\end{Declaration}% +\BeginIndex{Cmd}{appendixmore}% +There is a peculiarity within the \Macro{appendix} command in the +{\KOMAScript} classes. If the command \Macro{appendixmore} is defined, this +command is executed also by the \Macro{appendix} command. Internally the +{\KOMAScript} classes \Class{scrbook}\OnlyAt{\Class{scrbook}\and + \Class{scrreprt}} and \Class{scrreprt} take advantage of this behaviour to +implement the options \Option{appendixprefix} (see +\autoref{sec:maincls.structure}, +\autopageref{desc:maincls.option.appendixprefix}). You\textnote{Attention!} +should take note of this in case you decide to define or redefine the macro +\Macro{appendixmore}. In case one of 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 disabling options without noticing 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 layout options + \Option{chapterprefix} in \autoref{sec:maincls.structure}, + \autopageref{desc: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 layout option \Option{appendixprefix}, you would define 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 + \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 of the appendix for + the class \Class{scrartcl}. You would write in the preamble of your + document: +\begin{lstcode}[moretexcs={ifthenelse,equal}] + \newcommand*{\appendixmore}{% + \renewcommand*{\othersectionlevelsformat}[3]{% + \ifthenelse{\equal{##1}{section}}{% + \appendixname~}{}% + ##3\autodot\enskip} + \renewcommand*{\sectionmarkformat}{% + \appendixname~\thesection\autodot\enskip}} +\end{lstcode} + In addition, the package \Package{ifthen}\IndexPackage{ifthen} (see + \cite{package:ifthen}) is required. + + An alternative implementation would be: +\begin{lstcode} + \newcommand*{\appendixmore}{% + \renewcommand*{\othersectionlevelsformat}[3]{% + \ifstr{##1}{section}{\appendixname~}{}% + ##3\autodot\enskip} + \renewcommand*{\sectionmarkformat}{% + \appendixname~\thesection\autodot\enskip}} +\end{lstcode} + Thereby used command \Macro{ifstr}\IndexCmd[indexmain]{ifstr} is provided by + \KOMAScript{}. See \autoref{sec:scrbase.if}, + \autopageref{desc:scrbase.cmd.ifstr}. + + Redefined commands are explained in more detail in + \autoref{sec:maincls.structure}, + \autopageref{desc:maincls.cmd.chapterformat} and + \autopageref{desc:maincls.cmd.chaptermarkformat}. +\end{Example} +% +\EndIndex{Cmd}{appendixmore}% + + +\begin{Declaration} + \Macro{newbibstyle}\OParameter{parent style}\Parameter{name}%^^A + \Parameter{instructions}\\ + \Macro{newblock}\\ + \Macro{@openbib@code}\\ + \Macro{bib@beginhook}\\ + \Macro{bib@endhook} +\end{Declaration} +\BeginIndex{Cmd}{newbibstyle}% +\BeginIndex{Cmd}{newblock}% +\BeginIndex{Cmd}{@openbib@code}% +\BeginIndex{Cmd}{bib@beginhook}% +\BeginIndex{Cmd}{bib@endhook}% +The standard classes\textnote{standard classes} already provide command +\Macro{newblock} for structuring of bibliography entries. The exact purpose of +this command depends on the class options. Using option +\Option{openbib}\important{\Option{openbib}} redefine commands +\Macro{@openbib@code} and \Macro{newblock} at the end of the used standard +class. These classes execute command \Macro{@openbib@code} at the +begin\,---\,or more precise: at the specification of the parameters of +the\,---\,list environment, that will be used for the bibliography. It should +be assumed, that many packages will execute this command in the same kind, if +they redefine the bibliography. + +The \KOMAScript{} classes do something similar. Nevertheless, they don't +redefine \Macro{@openbib@code} at the end of the class. Instead of, the +bibliography style \PValue{openstyle} is defined using +\Macro{newbibstyle}. The \PName{instructions}, that has been defined as part +of the implementation, contain the appropriate redefinition of +\Macro{@openbib@code} and \Macro{newblock}. Now, if this bibliography style +will be selected using option \OptionValue{bibliography}{openstyle}% +\IndexOption{bibliography~=\PValue{openstyle}}% +\important{\OptionValue{bibliography}{openstyle}}, then the +\PName{instructions} will be executed immediately. This will redefine +\Macro{@openbib@code} and \Macro{newblock}. + +Beside \Macro{@openbib@code} and \Macro{newblock} also \Macro{bib@beginhook} +and \Macro{bib@endhook} may be redefined by the \PName{instructions} of the +style. Command \Macro{bib@beginhook} will be executed immediately after +heading and preamble of the bibliography, but before the begin of the list +with the bibliography entries. Command \Macro{bib@endhook} will be executed +immediately after this list at the end of the bibliography. If +\Macro{BreakBibliography} (see \autoref{sec:maincls.bibliography}, +\autopageref{desc:maincls.cmd.BreakBibliography}) intercepts the bibliography, +these commands will also executed at the begin and end of each part of the +bibliography, this would be immediately before and after +\Macro{BreakBibliography}. + +The commands \Macro{newblock}, \Macro{@openbib@code}, \Macro{bib@beginhook}, +and \Macro{bib@endhook} will be reset to an empty definition at the start of +each new bibliography style. After this the \PName{instructions} of the +\PName{parent style} of the bibliography style will be executed. After this +the \PName{instructions} of the bibliography style itself will be +executed. Because of this these commands has to be defined using +\Macro{renewcommand}\IndexCmd{renewcommand}\important{\Macro{renewcommand}} +not \Macro{newcommand} inside of argument \PName{instructions}. + +If the user declares additional \PName{instructions} using +\Macro{AtEndBibliography}%\important[i]{\Macro{AtEndBibliography}\\ +% \Macro{AfterBibliographyPreamble}}% Passt bloeder Weise nicht! +\IndexCmd{AtEndBibliography} and +\Macro{AfterBibliographyPreamble}\IndexCmd{AfterBibliographyPreamble} to be +executed after the preamble or at the end of the bibliography, the +\PName{instructions} of \Macro{AfterBibliographyPreamble} will be executed +only once at the begin of the bibliography but after the \Macro{bib@beginhook} +\PName{instructions}, and the \PName{instructions} of +\Macro{AtEndBibliography} will be executed only once at the end of the +bibliography but before \Macro{bib@endhook}. + +Package\textnote{Example!} +\Package{multicol}\IndexPackage{multicol}\important{\Package{multicol}} (see +\cite{package:multicol}) could be used to define a bibliography style for +printing the bibliography with two columns: +% Umbruchkorrektur: listings korrigiert +\begin{lstcode}[belowskip=\dp\strutbox plus 1ex] + \newbibstyle{twocolumstyle}{% + \renewcommand*{\bib@beginhook}{\begin{multicols}{2}}% + \renewcommand*{\bib@endhook}{\end{multicols}}}% +\end{lstcode} +If also an \emph{open}-variation of this style should be defined, one may use +the provided heredity feature and specify a \PName{parent style}: +% Umbruchkorrektur: listings korrigiert +\begin{lstcode}[belowskip=\dp\strutbox plus 1ex] + \newbibstyle{twocolumopenstyle}[openstyle]{% + \renewcommand*{\bib@beginhook}{\begin{multicols}{2}}% + \renewcommand*{\bib@endhook}{\end{multicols}}}% +\end{lstcode} +These new defined styles may be selected using option \Option{bibliography} +as usual.% +% +\EndIndex{Cmd}{bib@endhook}% +\EndIndex{Cmd}{bib@beginhook}% +\EndIndex{Cmd}{@openbib@code}% +\EndIndex{Cmd}{newblock}% +\EndIndex{Cmd}{newbibstyle}% + + +\section{More or Less Obsolete Options and Commands} +\label{sec:maincls-experts.obsolete} + +\LoadNonFree{scrbookreportarticle-experts}{4} + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% ispell-local-dictionary: "english" +%%% coding: us-ascii +%%% TeX-master: "../guide" +%%% End: |