summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrguide/english/loadfile.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrguide/english/loadfile.tex')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrguide/english/loadfile.tex334
1 files changed, 334 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrguide/english/loadfile.tex b/Master/texmf-dist/source/latex/koma-script/scrguide/english/loadfile.tex
new file mode 100644
index 00000000000..c8b3a6eb6a7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/koma-script/scrguide/english/loadfile.tex
@@ -0,0 +1,334 @@
+\ProvidesFile{loadfile.tex}[2004/09/13 KOMA-Script Manual english]
+% ============================================================================
+% loadfile.tex
+% Copyright (c) 2001-2002 Markus Kohm and the authors.
+%
+% This file is part of the LaTeX2e KOMA-Script-Bundle
+%
+% This file can be redistributed and/or modified under the terms of the LaTeX
+% Project Public License Version 1.0 distributed together with this file. See
+% LEGAL.TXT or LEGALDE.TXT.
+%
+% This bundle is written specialy for use at german-language. So the main
+% documentation is german. There may also be an english documentation. See
+% readme.txt, if you search for it.
+% ----------------------------------------------------------------------------
+% loadfile.tex
+% Copyright (c) 2001-2002 Markus Kohm und bei den weiteren Autoren.
+%
+% Diese Datei ist Teil des LaTeX2e KOMA-Script-Pakets.
+%
+% Diese Datei kann nach den Regeln der LaTeX Project Public Licence
+% Version 1.0, wie sie zusammen mit dieser Datei verteilt wird,
+% weiterverbreitet und/oder modifiziert werden. Siehe dazu auch LEGAL.TXT oder
+% LEGALDE.TXT.
+%
+% Dieses Paket ist fuer den deutschen Sprachraum konzipiert. Daher ist auch
+% diese Anleitung komplett in Deutsch. Moeglicherweise existiert auch eine
+% englische Version der Anleitung. Falls Sie eine solche benoetigen, schauen
+% Sie bitte in liesmich.txt nach, ob eine solche vorhanden ist.
+% ============================================================================
+%
+% Modul: scrlfile
+% Authors: Markus Kohm (MJK) <markus.kohm@gmx.de>
+% Contents: excecuting commands depending on one file is loaded
+% Language: English
+% Date of translated german file:
+% 2002/08/30
+% Charset of comments:
+% US-ASCII
+%
+
+\chapter{Control Package Dependencies with \Package{scrlfile}}
+\label{cha:scrlfile}
+
+\BeginIndex{Package}{scrlfile}
+
+\section{About Package Dependencies}
+\label{sec:scrlfile.dependency}
+\begin{Explain}
+ The introduction of \LaTeXe{} in 1994 brought many changes
+ in the handling with \LaTeX-extensions.
+ Today the package author has many macros in order to determine
+ if another package or class is employed and whether specific
+ options are used.
+ The author can load other packages or can specify options in the
+ the case the package is loaded later.
+ This has led to the expectation that the order of package-loading
+ will be not important.
+ But this hope has not been fulfilled, since often different packages
+ define or redefine one macro again and again.
+ In such a case the order of package-loading becomes very
+ important.
+ For the user this is sometimes difficult to understand the
+ behaviour and in some cases the user wants only react
+ on the loading of a package. This is also not really simple.
+
+
+ Assuming the simple example that loads the package \Package{longtable}
+ with a \KOMAScript{} document-class employed.
+ The \Package{longtable} package defines table captions
+ suitable for the standard classes, but the captions
+ are totally unsuitable for documents using \KOMAScript{} and thus
+ the provided configuration commands have no influence.
+ In order to solve this problem the commands which are responsible
+ for the table captions of the \Package{longtable} package
+ have to be re-defined. But at the moment when the \Package{longtable}
+ is loaded the \KOMAScript{} class is already processed.
+
+
+ The only chance for \KOMAScript{} was to delay the re-definition
+ until the begin of the document with help of the
+ macro \Macro{AtBeginDocument}.
+ If the user wants to change the definitions too, it is
+ recommended to do this in the preamble of the document.
+ But this is impossible since later at \Macro{begin}\PParameter{document}
+ \KOMAScript will again overwrite the user-definition with its own.
+ Therefore the user has to delay his definition with
+ \Macro{AtBeginDocument} as well.
+
+ However, \KOMAScript{} shouldn't delay the re-definition
+ until \Macro{begin}\PParameter{document}.
+ It would be enough to delay until the package \Package{longtable}
+ has been loaded. But unfortunately the basic \LaTeX{} does not
+ define appropriate commands. The package \Package{scrlfile}
+ provides redress here.
+
+ Likewise, it might be conceivable that before a package
+ is loaded one would like to save the definition of a macro
+ in a help-macro, in order to restore its meaning after
+ the package has been loaded. The package \Package{scrlfile}
+ allows this too.
+
+ The employment of \Package{scrlfile} is not limited to
+ package dependencies only.
+ Even dependencies with any other file can be attended.
+ For example the user can be warned if the not uncritical file
+ \File{french.ldf} has been loaded.
+
+ Though the package is particularly interesting for
+ package authors, there are of course applications for
+ normal \LaTeX{} users too.
+ Therefore this chapter gives and explains examples
+ for both groups of users.
+\end{Explain}
+
+
+\section{Actions Prior and After Loading}
+\label{sec:scrlfile.macros}
+
+\begin{Declaration}
+ \Macro{BeforeFile}\Parameter{file}\Parameter{instructions}\\
+ \Macro{AfterFile}\Parameter{file}\Parameter{instructions}
+\end{Declaration}%
+\BeginIndex{Cmd}{BeforeFile}%
+\BeginIndex{Cmd}{AfterFile}%
+The macro \Macro{BeforeFile} enables to execute \PName{instructions}
+the next time the \PName{file} is loaded.
+In the same way works \Macro{AfterFile}, but here the
+\PName{instructions} will be executed after the \PName{file}
+has been loaded.
+If \PName{file} will never be loaded then the \PName{instructions}
+will never be executed.
+
+\begin{Explain}
+ In order to implement those features \Package{scrlfile}
+ re-defines the well known \LaTeX{} command
+ \Macro{InputIfFileExists}.
+ If this macro has not the expected definition \Package{scrlfile}
+ gives a warning.
+ This is for the case that in future \LaTeX{} versions
+ the macro can have a different definition or an other package
+ has already re-defined it.
+
+ The command \Macro{InputIfFileExists} is used
+ everytime \LaTeX{} has to load a file.
+ This is independent from whether the actual command was \Macro{LoadClass},
+ \Macro{documentclass}, \Macro{usepackage}, \Macro{RequiresPackage},
+ or \Macro{include}. Exclusively the command
+\begin{verbatim}
+ \input foo
+\end{verbatim}
+ loads the file \texttt{foo} without to utilize
+ \Macro{InputIfFileExists}. Therefore one should always use
+\begin{verbatim}
+ \input{foo}
+\end{verbatim}
+ instead. Notice the parentheses surrounding the file name!
+\end{Explain}
+%
+\EndIndex{Cmd}{BeforeFile}%
+\EndIndex{Cmd}{AfterFile}%
+
+\begin{Declaration}
+ \Macro{BeforeClass}\Parameter{class}\Parameter{instructions}\\
+ \Macro{BeforePackage}\Parameter{package}\Parameter{instructions}
+\end{Declaration}%
+\BeginIndex{Cmd}{BeforeClass}%
+\BeginIndex{Cmd}{BeforePackage}%
+These both commands work the same way as \Macro{BeforeFile}.
+The only difference is that the document class \PName{class}
+and the \LaTeX{} package \PName{package} are specified
+with their names and not with their file names.
+That means the file extensions \File{.cls} and \File{.sty}
+can be omitted.
+%
+\EndIndex{Cmd}{BeforeClass}%
+\EndIndex{Cmd}{BeforePackage}%
+
+\begin{Declaration}
+ \Macro{AfterClass}\Parameter{class}\Parameter{instructions}\\
+ \Macro{AfterClass*}\Parameter{class}\Parameter{instructions}\\
+ \Macro{AfterPackage}\Parameter{package}\Parameter{instructions}\\
+ \Macro{AfterPackage*}\Parameter{package}\Parameter{instructions}
+\end{Declaration}%
+\BeginIndex{Cmd}{AfterClass}%
+\BeginIndex{Cmd}{AfterClass*}%
+\BeginIndex{Cmd}{AfterPackage}%
+\BeginIndex{Cmd}{AfterPackage*}%
+The commands \Macro{AfterClass} und \Macro{AfterPackage}
+work the same way as \Macro{AfterFile}.
+The only difference is that the document class \PName{class}
+and the \LaTeX{} package \PName{package} are specified
+with their names and not with their file names.
+That means the file extensions \File{.cls} and \File{.sty}
+can be omitted.
+The starred versions execute the \PName{instructions} not
+only next time the class or package is loaded, but also
+immediately if the class or package has been loaded already.
+%
+\EndIndex{Cmd}{AfterClass}%
+\EndIndex{Cmd}{AfterClass*}%
+\EndIndex{Cmd}{AfterPackage}%
+\EndIndex{Cmd}{AfterPackage*}%
+
+\begin{Example}
+ In the following an example for class and package authors
+ shall be given.
+ It shows how \KOMAScript{} itself employs the new commands.
+ The class \Class{scrbook} contains:
+ \begin{small}
+\begin{verbatim}
+\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{verbatim}
+ \end{small}
+ Old versions of the \Package{hyperref} package re-define
+ a macro of the \Class{scrbook} class in a way that does not
+ work with newer \KOMAScript{} versions.
+ New versions of \Package{hyperref} neglect these changes
+ if a new \KOMAScript{} version is detected.
+ For the case that \Package{hyperref} is loaded the code
+ in \Class{scrbook} verifies that a appropriate
+ \Package{hyperref} version is used. If not the command gives
+ a warning.
+
+ At other places in three \KOMAScript{} classes following can be found:
+ \begin{small}
+\begin{verbatim}
+ \AfterPackage{caption2}{%
+ \renewcommand*{\setcapindent}{%
+\end{verbatim}
+ \end{small}
+ Next the package \Package{caption2} has been loaded, and only
+ if the package has been loaded really, \KOMAScript{} re-defines
+ its own command \Macro{setcapindent}.
+ The exact code of the definition is not important.
+ It should only be noted that \Package{caption2} claims the
+ control over the \Macro{caption} macro.
+ Thus the normal definition of the \Macro{setcapindent} macro
+ would not work as expected.
+ The re-definition improves the collaboration with \Package{caption2}.
+
+ There are of course useful examples for normal \LaTeX{} user too.
+ Suppose a document that should be availbale as PS file, using
+ LaTeX{} and dvips, and as PDF file, using pdf\LaTeX.
+ The document should contain hyper-links.
+ In the List of Tables there are entries longer than one line.
+ This is not a problem for the pdf\LaTeX{} way, since here
+ hyper-links can run across multiple lines.
+ But if a \Package{hyperref} driver for dvips or
+ hyper\TeX{} is used then this is not possible.
+ In this case one wants that for the \Package{hyperref} setup
+ the \Option{linktocpage} is used.
+
+ The decision what \Package{hyperref} driver has to be used
+ happens automatically via \File{hyperref.cfg}.
+ The file has for example the content below.
+ \begin{small}
+\begin{verbatim}
+ \ProvidesFile{hyperref.cfg}
+ \@ifundefined{pdfoutput}{\ExecuteOptions{dvips}}
+ {\ExecuteOptions{pdftex}}
+ \endinput
+\end{verbatim}
+ \end{small}
+
+ All following is now the task of \Macro{AfterFile}.
+ \begin{small}
+\begin{verbatim}
+ \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 for a long figure caption,
+ but even though it does not employ the optional
+ caption argument that would allow to write
+ a short caption in the List of Figures.}
+ \end{figure}
+ \end{document}
+\end{verbatim}
+ \end{small}
+ If now \Package{hyperref} drivers \Option{hypertex} or
+ \Option{dvips} are used then the useful \Package{hyperref} option
+ \Option{linktocpage} will be set.
+ In the pdf\LaTeX{} case the option will not be set, since
+ in that case an other \Package{hyperref} driver \File{hpdftex.def}
+ will be used. That means neither \File{hdvips.def} nor
+ \File{hypertex.def} will be loaded.
+\end{Example}
+
+\begin{Explain}
+ Furthermore the loading of package \Package{scrlfile}
+ and the \Macro{AfterFile} statement can be written
+ in the private \File{hyperref.cfg}.
+ But then instead of \Macro{usepackage} the macro
+ \Macro{RequiresPackage} ought be used, see \cite{latex:clsguide}.
+ The new lines have to be inserted directly after
+ \Macro{ProvidesFile} line, thus prior to the execution
+ of the options \Option{dvips} or \Option{pdftex}.
+\end{Explain}
+
+
+\section{Authors}
+\label{sec:scrlfile.authors}
+The authors listed below are responsible for this chapter or have
+contributed to this chapter in different ways.
+% Please use \textit{} for the name of the translator add all the
+% names of the untranslated german file. If the translator is the
+% main author, simply use \textbf.
+\begin{itemize}
+\item Markus Kohm \TextEMail{Markus.Kohm@gmx.de}
+\item \textit{Jens-Uwe Morawski}
+\end{itemize}
+
+\EndIndex{Package}{scrlfile}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "main"
+%%% End: