diff options
Diffstat (limited to 'macros/latex/contrib/koma-script/scraddr.dtx')
-rw-r--r-- | macros/latex/contrib/koma-script/scraddr.dtx | 296 |
1 files changed, 296 insertions, 0 deletions
diff --git a/macros/latex/contrib/koma-script/scraddr.dtx b/macros/latex/contrib/koma-script/scraddr.dtx new file mode 100644 index 0000000000..3a599a3e7e --- /dev/null +++ b/macros/latex/contrib/koma-script/scraddr.dtx @@ -0,0 +1,296 @@ +% \iffalse meta-comment +% ====================================================================== +% scraddr.dtx +% Copyright (c) Markus Kohm, 2006-2022 +% +% 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.md. +% ====================================================================== +%%% From File: $Id: scraddr.dtx 3874 2022-06-05 10:38:02Z kohm $ +%<*dtx> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{scraddr.dtx} +%</dtx>> +%<scraddr>\NeedsTeXFormat{LaTeX2e}[1995/12/01] +%<driver>\ProvidesFile{scraddr.drv} +%<scraddr>\ProvidesPackage{scraddr} +%<*dtx|scraddr|driver> + [2022/01/24 v1.1d KOMA-Script +%</dtx|scraddr|driver> +%<scraddr> package] +%<*dtx|driver> + Script bundle] +%</dtx|driver> +%<*dtx> +\ifx\documentclass\undefined + \input scrdocstrip.tex + \@@input scrkernel-version.dtx + \@@input scrstrip.inc + \KOMAdefVariable{COPYRIGHTFROM}{2006} + \generate{\usepreamble\defaultpreamble + \file{scraddr.sty}{% + \from{scraddr.dtx}{scraddr}% + \from{scrlogo.dtx}{logo}% + }% + } + \@@input scrstrop.inc +\else + \let\endbatchfile\relax +\fi +\endbatchfile +%</dtx> +%<*driver> +\documentclass{koma-script-source-doc} +\usepackage[USenglish]{babel} +\begin{document} + \DocInput{scraddr.dtx} +\end{document} +%</driver> +% \fi +% +% \changes{v1.1a}{2002/05/19}{first version, separated from \cls{scrlettr}} +% \changes{v1.1d}{2022/01/24}{switched from \cls{scrdoc} to +% \cls{koma-script-source-doc}} +% \changes{v1.1d}{2022/01/24}{whole implementation documentation in English} +% +% \GetFileInfo{scraddr.dtx} +% \title{Parsing Address Files \\ +% Using Package \pkg*{scraddr}} +% \author{\href{mailto:komascript@gmx.info}{Markus Kohm} +% \and Jens-Uwe Morawski} +% \date{Version \fileversion{} of \filedate} +% \maketitle +% \begin{abstract} +% Address files are not only of interest for letters using the \KOMAScript{} +% class \cls*{scrlttr2} or the \KOMAScript{} package \pkg*{scrletter}. Other +% applications such as the creation of address books or telephone directories +% are also quite common. In addition, it can also be useful to access not only +% the addressee's record in a letter, but also other records in an address +% file. This is exactly the task of the \pkg*{scraddr} package. +% \end{abstract} +% \tableofcontents +% +% \section{User Manual} +% +% You can find the user manual of \pkg*{scraddr} in the \KOMAScript{} manual, +% either the German \file{scrguide} or the English \file{scrguien}. +% +% \MaybeStop{\PrintIndex} +% +% \section{Implementation} +% +%\iffalse +% \begin{macrocode} +%<*scraddr> +%<*beta> +\PackageWarningNoLine{scraddr} + {THIS IS A BETA VERSION!\MessageBreak + YOU SHOULD NOT USE THIS VERSION!\MessageBreak + YOU SHOULD INSTALL THE RELEASE FROM CTAN\MessageBreak + AND USE THAT INSTEAD OF THIS BETA VERSION} +%</beta> +%</scraddr> +%\fi +% +% \changes{v1.0}{1996/01/22}{New package \pkg*{scraddr}} +% +% \begin{macrocode} +%<*scraddr> +% \end{macrocode} +% +% \subsection{Options} +% +% Preliminary note: \pkg*{scraddr} is a very, very old package from the early +% days of \KOMAScript. Therefore it does not support \emph{key=value} options +% as other \KOMAScript{} packages do. +% +% \begin{option}{adrFreeIVempty} +% \changes{v1.1a}{2002/05/19}{new} +% \begin{option}{adrFreeIVshow} +% \changes{v1.1a}{2002/05/19}{new} +% \begin{option}{adrFreeIVwarn} +% \changes{v1.1a}{2002/05/19}{new} +% \begin{option}{adrFreeIVstop} +% \changes{v1.1a}{2002/05/19}{new} +% \begin{macro}{\@adrFIVerror} +% \changes{v1.1a}{2002/05/19}{new} +% The options allow the choice whether \cs{FreeIV}, defined by \cs{adrentry}, +% should be ignored, output, result in a warning or an error message. Default +% is \opt{adrFreeIVshow}. The selected choice is stored as a number in +% \cs{@adrFIVerror} (0 = \opt{adrFreeIVempty}, 1 = \opt{adrFreeIVshow}, +% 2 = \opt{adrFreewarn}, 3 = \opt{adrFreeIVstop}). Unknown values should +% be handled as \opt{adrFreeIVstop} too, but are not recommended. +% \begin{macrocode} +\newcommand*{\@adrFIVerror}{} +\DeclareOption{adrFreeIVempty}{\renewcommand*{\@adrFIVerror}{0}} +\DeclareOption{adrFreeIVshow}{\renewcommand*{\@adrFIVerror}{1}} +\DeclareOption{adrFreeIVwarn}{\renewcommand*{\@adrFIVerror}{2}} +\DeclareOption{adrFreeIVstop}{\renewcommand*{\@adrFIVerror}{3}} +% \end{macrocode} +% \end{macro} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% +% \changes{v1.0a}{2001/08/07}{\cs{ExecuteOption}\cs{relax} fixed} +% \changes{v1.1a}{2002/05/19}{\texttt{adrFreeIVshow} is default} +% \begin{macrocode} +\ExecuteOptions{adrFreeIVshow} +\ProcessOptions\relax +% \end{macrocode} +% +% \subsection{Reading address files} +% \begin{command}{\InputAdressFile} +% This command reads the address file given as mandatory argument. While +% reading global internal macros are generated for every \cs{adrentry} or +% \cs{addrentry}. To do so, these two macros are redefined locally only. +% \changes{v1.1}{2002/05/18}{extended by \cs{addrentry} handling} +% \changes{v1.1b}{2002/06/02}{\cs{addrchar} and \cs{adrchar} are defined also +% if undefined} +% \begin{macrocode} +\newcommand{\InputAddressFile}[1]{\begingroup + \ifcase\@adrFIVerror + \def\adrentry##1##2##3##4##5##6##7{% + \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{}}% + \or + \def\adrentry##1##2##3##4##5##6##7##8{% + \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{% + (entry FreeIV undefined at `##8')}{##8}}% + \or + \def\adrentry##1##2##3##4##5##6##7##8{% + \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{% + \PackageWarning{scraddr}{% + `##8' was defined using \string\adrentry\MessageBreak + so \string\FreeIV-entry is not defined}}{##8}}% + \else + \def\adrentry##1##2##3##4##5##6##7##8{% + \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{% + \PackageError{scraddr}{% + \string\FreeIV\space undefined at `##8'}{% + `##8' was defined using \string\adrentry\MessageBreak + so \string\FreeIV-entry is not defined.\MessageBreak + You may continue but you should check output}}{##8}}% + \fi + \providecommand*{\addrchar}[1]{}% + \providecommand*{\adrchar}{\addrchar}% + \def\addrentry##1##2##3##4##5##6##7##8##9{% + \def\@tempa{##9}\ifx\@tempa\@empty\else + \expandafter\gdef\csname ##9.LN\endcsname{##1} + \expandafter\gdef\csname ##9.FN\endcsname{##2} + \expandafter\gdef\csname ##9.A\endcsname{##3} + \expandafter\gdef\csname ##9.P\endcsname{##4} + \expandafter\gdef\csname ##9.FI\endcsname{##5} + \expandafter\gdef\csname ##9.FII\endcsname{##6} + \expandafter\gdef\csname ##9.FIII\endcsname{##7} + \expandafter\gdef\csname ##9.FIV\endcsname{##8} + \fi} +% \end{macrocode} +% Not existing files result in an error message. Found files are only noted. +% \begin{macrocode} + \InputIfFileExists{#1.adr} + {\typeout{Load addressfile: #1.adr.}} + {\PackageError{scraddr} + {File #1.adr not found} + {The addressfile you wanted is not + available}} + \endgroup} +% \end{macrocode} +% \end{command} +% +% \subsection{Using an element of an address file} +% +% Selecting the elements by names instead of cryptic macros, could be +% easier. So we use well named macros for the selection. All these macros have +% exactly one mandatory argument: the \meta{shortcut} which is argument 8 of +% \cs{adrentry} resp. argument 9 of \cs{addrentry} in the address file. +% +% \begin{command}{\Name} +% The \cs{Name} is a combination of \cs{Firstname} and \cs{Lastname} with a +% normal word separator space in between. +% \begin{macrocode} +\newcommand*{\Name}[1]{\FirstName{#1}\ \LastName{#1}} +% \end{macrocode} +% \end{command} +% \begin{command}{\FirstName} +% Firstname or given from internal macro \cs{\meta{shortcut}.FN}. +% \begin{macrocode} +\newcommand*{\FirstName}[1]{\csname #1.FN\endcsname} +% \end{macrocode} +% \end{command} +% \begin{command}{\LastName} +% Lastname from internal macro \cs{\meta{shortcut}.LN}. +% \begin{macrocode} +\newcommand*{\LastName}[1]{\csname #1.LN\endcsname} +% \end{macrocode} +% \end{command} +% \begin{command}{\Address} +% Address from internal macro \cs{\meta{shortcut}.A}. +% \begin{macrocode} +\newcommand*{\Address}[1]{\csname #1.A\endcsname} +% \end{macrocode} +% \end{command} +% \begin{command}{\Telephone} +% Telephone number from internal macro \cs{\meta{shortcut}.P}. +% \begin{macrocode} +\newcommand*{\Telephone}[1]{\csname #1.P\endcsname} +% \end{macrocode} +% \end{command} +% \begin{command}{\FreeI,\FreeII} +% Two free entries from internal macros \cs{\meta{shortcut}.FI} and +% \cs{\meta{shortcut}.FII}. +% \begin{macrocode} +\newcommand*{\FreeI}[1]{\csname #1.FI\endcsname} +\newcommand*{\FreeII}[1]{\csname #1.FII\endcsname} +% \end{macrocode} +% \end{command} +% \begin{command}{\Comment,\FreeIII} +% The third free element is available by two commands, because originally it +% was specified as \meta{comment}. It is stored in the internal macro +% \cs{\meta{shortcut}.FIII}. +% \changes{v1.1}{2002/05/18}{extended to \cs{addrentry}} +% \begin{macrocode} +\newcommand*{\Comment}{} +\newcommand*{\FreeIII}[1]{\csname #1.FIII\endcsname} +\let\Comment\FreeIII +% \end{macrocode} +% \end{command} +% \begin{command}{\FreeIV} +% Forth free entry from internal macro \cs{\meta{shortcut}.FIV} only available +% with \cs{addrentry} but not woth \cs{adreentry}. +% \changes{v1.1}{2002/05/18}{extended to \cs{addrentry}} +% \begin{macrocode} +\newcommand*{\FreeIV}[1]{\csname #1.FIV\endcsname} +% \end{macrocode} +% \end{command} +% +% \subsection{Ende of package} +% \begin{macrocode} +%</scraddr> +% \end{macrocode} +% +% \Finale +% \PrintChanges +% +\endinput +% Local Variables: +% mode: doctex +% ispell-local-dictionary: "en_US" +% eval: (flyspell-mode 1) +% TeX-master: t +% TeX-engine: luatex-dev +% eval: (setcar (or (cl-member "Index" (setq-local TeX-command-list (copy-alist TeX-command-list)) :key #'car :test #'string-equal) (setq-local TeX-command-list (cons nil TeX-command-list))) '("Index" "mkindex %s" TeX-run-index nil t :help "makeindex for dtx")) +% End: + |