From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/latex/contrib/adrconv/adrconv.dtx | 983 +++++++++++++++++++++++++++++++
 1 file changed, 983 insertions(+)
 create mode 100644 macros/latex/contrib/adrconv/adrconv.dtx

(limited to 'macros/latex/contrib/adrconv/adrconv.dtx')

diff --git a/macros/latex/contrib/adrconv/adrconv.dtx b/macros/latex/contrib/adrconv/adrconv.dtx
new file mode 100644
index 0000000000..c42d578a9c
--- /dev/null
+++ b/macros/latex/contrib/adrconv/adrconv.dtx
@@ -0,0 +1,983 @@
+% \CheckSum{547}
+% \iffalse
+% ====================================================================
+%% adrguide.dtx
+%% Copyright 2006, 2010, 2018 Axel Kielhorn
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+%   http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+% 
+% This Current Maintainer of this work is Axel Kielhorn (A.Kielhorn@web.de)
+%
+% This work consists of the files adrconv.ins, adrconv.dtx, adrguide.tex
+% and the derived file adrguide.pdf. 
+%
+% Use
+%   tex adrconv.ins
+% or
+%   latex adrconv.ins
+% to generate the other files, which are indirect parts of the
+% bundle. Use
+%   latex adrconv.dtx
+% to generate the implementation documentation. Use
+%   latex adrguide.tex
+% to generate the user documentation.
+%
+% ====================================================================
+%
+%<*dtx>
+\ProvidesFile{adrconv.dtx}
+%</dtx>
+%<driver>\ProvidesFile{adrconv.drv}
+%<guide>\ProvidesFile{adrguide.tex}
+%<*tex|cfg|dir|montage>
+%<tex|cfg|dir|montage>\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+%<tex|cfg|dir|montage>\ProvidesFile{%
+%<conv>  adrconv%
+%<fax>   adrfax%
+%<dir>   adrdir%
+%<birthday>  adrbirthday%
+%<planer>  adrplaner
+%<small>  adrsmall
+%<montage&erster> adrmontage1.tex
+%<montage&zweiter> adrmontage2.tex
+%<tex>  .tex%
+%<dir&!cfg>  .tex%
+%<cfg>  .cfg%
+%<tex|cfg|dir|montage>  }
+%</tex|cfg|dir|montage>
+%<*dtx|driver|guide|tex|cfg|dir>
+  [2018/01/30 v1.4 LaTeX2e
+%<*dtx>
+  adrconv docstrip file]
+%</dtx>
+%<driver> adrconv implementation documentation driver]
+%<guide>  Address guide]
+%<tex>  Interactive driver of BibTeX database to addressfile converter]
+%<cfg>  adrconv configuration file]
+%<dir&!cfg>  Interactive address directory generation]
+%</dtx|driver|guide|tex|cfg|dir>
+%<*driver>
+\documentclass{ltxdoc}
+\CodelineIndex
+\RecordChanges
+
+\newcommand*{\Class}[1]{\textsf{#1}}
+\newcommand*{\Package}[1]{\textsf{#1}}
+\newcommand*{\File}[1]{\texttt{#1}}
+
+\ifx\KOMAScipt\undefined
+  \DeclareRobustCommand{\KOMAScript}{\textsf{K\kern.05em O\kern.05em%
+      M\kern.05em A\kern.1em-\kern.1em Script}}
+\fi
+
+\makeatletter
+\DeclareRobustCommand{\BibTeX}{B\kern-.05em%
+  % Der folgende Hack stammt aus der Definition des
+  % Makros \LaTeX, siehe Datei `ltlogos.dtx' der
+  % LaTeX2e-Verteilung.
+  \hbox{$\m@th$% %% force math size calculations
+    \csname S@\f@size\endcsname \fontsize\sf@size\z@
+    \math@fontsfalse\selectfont
+    I\kern-.025emB}%
+  \kern-.08em%
+  \-\TeX%
+}
+\makeatother
+
+\begin{document}
+  \DocInput{adrconv.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{adrconv.dtx}
+% \title{\BibTeX{} address database to addressfile
+%   converter\footnote{This file has version number \fileversion, last
+%     revised \filedate}}
+% \author{Axel Kielhorn\thanks{A.Kielhorn@web.de} \and Markus Kohm}
+% \date{\filedate}
+% \maketitle
+% \begin{abstract}
+% \Package{adrconv} is an example for converting \BibTeX{} address
+% databases to \KOMAScript{} address files. For more information see
+% the ``ADRconv Anleitung''. This is only the implementation
+% documentation.
+% \end{abstract}
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \tableofcontents
+%
+% \section{General}
+%
+% This implementation documentation is very rudimentary because it was
+% not written by Axel Kielhorn but by Markus Kohm. I've done this
+% because after two years waiting I wanted to make the break and
+% remove the old version of \Package{adrconv} from \KOMAScript.
+%
+% The use of \Package{adrconv} is described at the ``ADRconv
+% Anleitung''. You'll get the guide, running \TeX{} or \LaTeX{} in
+% \File{adrconv.ins}.
+%
+%
+% \section{The interactive drivers}
+%
+% \iffalse
+%<*tex>
+% \fi
+% Remember the files should work not only with \LaTeX{} but also with
+% Plain\TeX. So we can olny use macros, which are defined at both:
+% \LaTeX{} and Plain\TeX.
+%
+%    \begin{macrocode}
+\catcode`\@=11
+\newlinechar`\^^J
+\message{%
+  Now you have to typein the name of the BibTeX addressfile, you want
+  to^^J%
+  convert to script-address-file-format (without extension
+  `.bib'):^^J%
+  Geben Sie nun den Namen der BibTeX-Adressdatei ein, die sie in
+  das^^J%
+  Script-Adressdateiformat konvertieren wollen (ohne `.bib'):^^J%
+  ^^J%
+  addressfile=%
+}
+\def\skiplastspace#1 \@e@o@l@{#1}
+\read-1 to \addressfile
+\edef\addressfile{\expandafter\skiplastspace\addressfile\@e@o@l@}
+\newwrite\auxfile
+\immediate\openout\auxfile=\addressfile.aux
+\immediate\write\auxfile{%
+  \string\citation{*}^^J%
+%<conv>  \string\bibstyle{adrconv}^^J%
+%<fax>  \string\bibstyle{adrfax}^^J%
+%<birthday>  \string\bibstyle{adrbirthday}^^J%
+  \string\bibdata{\addressfile}%
+}
+\immediate\closeout\auxfile
+\message{%
+  After running BibTeX rename file `\addressfile.bbl' to
+  `\addressfile.adr'!^^J%
+  Nach dem BibTeX-Lauf benennen Sie bitte die Datei `\addressfile.bbl'
+  in^^J%
+  `\addressfile.adr' um!^^J%
+}
+\ifx\@@end\undefined\let\@@end\end\fi
+\@@end
+%    \end{macrocode}
+% \iffalse
+%</tex>
+% \fi
+%
+%
+% \section{The interactive generator}
+%
+% \iffalse
+%<*!cfg>
+%<*dir>
+% \fi
+%    \begin{macrocode}
+\documentclass[headsepline,10pt,twoside,pagesize]{scrartcl}
+%    \end{macrocode}
+% Define some new commands
+%    \begin{macrocode}
+\newcommand*\jj {j}
+\newcommand*\ja {ja}
+\newcommand*\y  {y}
+\newcommand*\yes{yes}
+\newread\ttyin
+\newcommand*{\gobble}[1]{}
+\def\iden#1{#1}
+\def\strip#1#2 \gobble{\def #1{#2}}
+\def\defpar{\par}
+\def\Ask#1#2{%
+    \message{#2}\read\ttyin to #1\ifx#1\defpar\def#1{}\else
+    \iden{\expandafter\strip\expandafter#1#1\gobble\gobble}
+    \gobble\fi}
+%    \end{macrocode}
+% \cs{ifGerman} to load \Package{german} or \Package{ngerman}.
+% \cs{RunningHead} to get the names in the header (Telephonebook
+% style). Otherwise a new page is started for each new letter (This is
+% needed for Birthday lists). 
+%    \begin{macrocode}
+\newif\ifGerman
+\newif\ifRunningHead
+\newif\ifEmail
+%    \end{macrocode}
+%    \begin{macrocode}
+\newdimen\leftfield
+\newdimen\rightfield
+\newdimen\adrindent
+\oddsidemargin  -1in
+\evensidemargin -1in
+%    \end{macrocode}
+%    \begin{macrocode}
+\newcommand*\adrfile{}
+\newcommand*\adrtitle{}
+\typeout{^^J%
+   *** dir.tex v2.0 by Frank Neukam <01 Dec 1993>^^J%
+   *** LaTeX2e-changes by Markus Kohm 1994/10/29^^J%
+   *** ADRconv-changes by Axel Kielhorn 1999^^J%
+   *** ngerman-changes by Markus Kohm 2001^^J%
+   ^^J%
+   To create a address-directory just answer the questions:^^J%
+   ^^J}
+\Ask\answer{Use german? [y/n]^^J%
+  Mit deutscher Sprachanpassung? [j/n]}
+\ifx\jj\answer\Germantrue\else
+\ifx\ja\answer\Germantrue\else
+\ifx\y\answer\Germantrue\else
+\ifx\yes\answer\Germantrue\else
+                \Germanfalse\fi\fi\fi\fi
+\ifGerman
+  \def\germanpackage{ngerman}
+  \Ask\answer{Mit alter deutscher Rechtschreibung? [j/n]}
+  \ifx\jj\answer\def\germanpackage{german}\else
+    \ifx\ja\answer\def\germanpackage{german}\else
+      \ifx\y\answer\def\germanpackage{german}\else
+        \ifx\yes\answer\def\germanpackage{german}\fi\fi\fi\fi
+     \usepackage{\germanpackage}
+\fi
+%    \end{macrocode}
+% \changes{v1.3}{2010/04/02}{Added support to print the e-mail Address in the addressbook.}
+%    \begin{macrocode}
+\Ask\answer{^^JPrint email? [y/n]^^J%
+  E-Mail ausgeben? [j/n]}
+\ifx\jj\answer\Emailtrue\else
+\ifx\ja\answer\Emailtrue\else
+\ifx\y\answer\Emailtrue\else
+\ifx\yes\answer\Emailtrue\else
+                \Emailfalse\fi\fi\fi\fi
+\ifEmail
+\usepackage{url}
+\fi
+\InputIfFileExists{dir.cfg}{%
+  \typeout{Load local configuration-file.}}{%
+  \typeout{No local configuration-file found.}}
+\Ask\adrfile{^^J%
+  Name of address-file (without .adr)?^^J%
+  Name der Adressdatei (ohne .adr)?}
+\Ask\adrtitle{^^J%
+  Title of directory/list?^^J%
+  Titel des Verzeichnisses?}
+\Ask\adrformat{^^J%
+  Name of the layout^^J%
+  Layoutname?}
+\Ask\answer{^^J%
+  With running head? [y/n]^^J%
+  Namen in der Kopfzeile? [j/n]}
+\ifx\jj\answer\RunningHeadtrue\else
+\ifx\ja\answer\RunningHeadtrue\else
+\ifx\y\answer\RunningHeadtrue\else
+\ifx\yes\answer\RunningHeadtrue\else
+               \RunningHeadfalse\fi\fi\fi\fi
+%    \end{macrocode}
+% \changes{v1.4}{2018/01/30}{usage of \Package{scrlayer-scrpage}}
+% Since the file uses \Class{scrartcl} it assumes that
+% \Package{scrlayer-scrpage} is available. We do not use \Package{scrpage} any
+% longer, because it is not longer part of the \KOMAScript{} bundle for more
+% than 10 years.
+%    \begin{macrocode}
+\ifRunningHead
+\usepackage[manualmark,headsepline]{scrlayer-scrpage}
+\clearpairofpagestyles
+\ohead{\if@twoside\rightmark\ -- \leftmark\fi}
+\chead{\if@twoside\else\rightmark\ -- \leftmark\fi}
+\ofoot{\if@twoside\pagemark\fi}
+\cfoot{\if@twoside\else\pagemark\fi}
+\fi
+\setkomafont{pagehead}{\sffamily\bfseries}
+%    \end{macrocode}
+% Loading the Layout definition.
+% If no filename is specified, adrdir will be used.
+%    \begin{macrocode}
+\ifx\adrformat\empty
+  \def\adrformat{adrdir}
+\fi
+\InputIfFileExists{\adrformat.cfg}{}{%
+  \typeout{^^J%
+    *** File \adrformat.cfg not found!^^J%
+    *** Datei \adrformat.cfg nicht gefunden!^^J%
+    ^^J}
+  }
+%    \end{macrocode}
+% All definitions are done, let's start with the document.
+%    \begin{macrocode}
+\begin{document}
+%    \end{macrocode}
+% Don't start a new page for every letter when running head is used.
+%    \begin{macrocode}
+\ifRunningHead
+  \def\adrchar#1{\typeout{#1}}
+\else
+  \def\adrchar#1{\clearpage\typeout{#1}\markboth{#1}{#1}}
+\fi
+%    \end{macrocode}
+% \changes{v1.4}{2018/01/30}{replaced old font command \cs{sc} by NFSS2 font
+% command}
+% \changes{v1.4}{2018/01/30}{replaced old font command \cs{sfb} by NFSS2 font
+% command}
+% \changes{v1.4}{2018/01/30}{support for \cs{addrchar} and \cs{addrentry}}
+% This command does all the formatting:
+%    \begin{macrocode}
+%\adrentry
+% 1 {Nachname}
+% 2 {Vorname}
+% 3 {Strasse \\ PLZ Ort}
+% 4 {Telefon\\Mobil}
+% 5 {E-Mail} \ifEmail
+% 6 {Organisation} 
+% 7 {Notiz}
+% 8 {Key}
+\def\adrentry#1#2#3#4#5#6#7#8{\hspace{\adrindent}%
+ \parbox[b]{\leftfield}
+   {\raggedright \hspace{-\adrindent}{\normalfont\scshape #1}%
+    \def\tempa{#1}\ifx \tempa\empty \else , #2\fi%
+    \def\tempa{#3}\ifx \tempa\empty \else \par #3\fi%
+    \ifEmail
+      \def\tempa{#5}\ifx \tempa\empty \else \par \url{#5}\fi%
+    \fi
+    \def\tempa{#7}\ifx \tempa\empty \else \par (#7)\fi%
+   }%
+ \hfill%
+ \parbox[b]{\rightfield}
+   {\raggedleft%
+    \def\tempa{#8}\ifx \tempa\empty \else {\scriptsize #8}\par \fi 
+    {\small #4}%
+   }\par%
+ \ifRunningHead
+   \markboth{#1}{#1}
+ \fi
+}
+\def\addrentry#1#2#3#4#5#6#7#8#9{%
+  \adrentry{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#9}%
+}
+\def\addrchar{\adrchar}
+\ifx\adrfile\empty \else
+     \InputIfFileExists{\adrfile.adr}{%
+     \pagestyle{empty}
+     \null\vfil
+     \begin{center}
+       {\Large \normalfont\sffamily\bfseries \adrtitle\par}
+     \end{center}
+     \vfil\vfil\null
+%    \end{macrocode}
+% Always start on a right page
+%    \begin{macrocode}
+     \cleardoublepage
+     \raggedbottom
+     \pagestyle{headings}
+     }{%
+     \typeout{^^J%
+              *** File \adrfile.adr not found!^^J%
+              *** Datei \adrfile.adr nicht gefunden!^^J%
+              ^^J}
+     }
+\fi
+\end{document}
+%    \end{macrocode}
+% \iffalse
+%</dir>
+%</!cfg>
+% \fi
+%
+%
+% \section{The configuration files}
+%
+% \iffalse
+%<*cfg>
+% \fi
+%    \begin{macrocode}
+%<*dir>
+%    \end{macrocode}
+% Configfile for A6 phone book (105\,mm $\times$ 148\,mm).
+% Original was former part of \KOMAScript{}.
+%
+%    \begin{macrocode}
+\setlength{\paperwidth}{105mm}
+\setlength{\textwidth}{85mm}
+\setlength{\leftfield}{50mm}
+\setlength{\rightfield}{30mm}
+%    \end{macrocode}
+%    \begin{macrocode}
+\addtolength{\evensidemargin}{9mm}
+\addtolength{\oddsidemargin}{\paperwidth}
+\addtolength{\oddsidemargin}{-9mm}
+\addtolength{\oddsidemargin}{-\textwidth}
+%    \end{macrocode}
+%    \begin{macrocode}
+%</dir>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<*planer>
+%    \end{macrocode}
+% Configfile for organizers (95\,mm $\times$ 172\,mm) maybe from
+% ALDI.
+%
+%    \begin{macrocode}
+\setlength{\paperwidth}{95mm}
+\setlength{\textwidth}{70mm}
+\setlength{\leftfield}{45mm}
+\setlength{\rightfield}{25mm}
+%    \end{macrocode}
+%    \begin{macrocode}
+\addtolength{\evensidemargin}{12mm}
+\addtolength{\oddsidemargin}{12mm}
+%    \end{macrocode}
+%    \begin{macrocode}
+%</planer>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<*small>
+%    \end{macrocode}
+% Configfile for pocket calenders (87\,mm $\times$ 148\,mm)
+% e.g. ``Sparkassenkalender''.
+%
+%    \begin{macrocode}
+\setlength{\paperwidth}{87mm}
+\setlength{\textwidth}{75mm}
+\setlength{\leftfield}{45mm}
+\setlength{\rightfield}{30mm}
+%    \end{macrocode}
+%    \begin{macrocode}
+\addtolength{\evensidemargin}{9mm}
+\addtolength{\oddsidemargin}{\paperwidth}
+\addtolength{\oddsidemargin}{-9mm}
+\addtolength{\oddsidemargin}{-\textwidth}
+%    \end{macrocode}
+%    \begin{macrocode}
+%</small>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\setlength{\adrindent}{1em}
+\addtolength{\leftfield}{-\adrindent}
+%    \end{macrocode}
+%    \begin{macrocode}
+%<*dir>
+\setlength{\paperheight}{148mm}
+\setlength{\textheight}{112mm}
+%</dir>
+%<*planer>
+\setlength{\paperheight}{172mm}
+\setlength{\textheight}{148mm}
+%</planer>
+%<*small>
+\setlength{\paperheight}{148mm}
+\setlength{\textheight}{112mm}
+%</small>
+\setlength{\headheight}{1.25\baselineskip}
+\setlength{\headsep}{0.25\baselineskip}
+\setlength{\footskip}{1.50\baselineskip}
+\setlength{\topmargin}{-1in}
+%<dir>\addtolength{\topmargin}{8mm}
+%<planer|small>\addtolength{\topmargin}{7mm}
+\setlength{\marginparwidth}{0in}
+\setlength{\marginparsep}{0in}
+\setlength{\marginparpush}{0in}
+\setlength{\parskip}{0.5\baselineskip}
+\setlength{\parindent}{0in}
+\typeout{%
+  ********************************************************************%
+  ^^J^^J%
+  DVIDVI Options:^^J%
+  Front:^^J%
+%<*dir|small>
+%<dir>  1st Step (2 x A6 at A5)^^J%
+%<small>  1st Step (2 x callenders at A5)^^J%
+  -l xx -m 4:-1,2^^J%
+  2nd Step (2 x A5 at A4)^^J%
+  -m 2:0,1(0mm,148mm)^^J%
+%</dir|small>
+%<planer>  -l 24 -m 6:0(4mm,0mm),2(99mm,0mm),4(192mm,0mm)
+  ^^J%
+  Back:^^J%
+%<*dir|small>
+  1st Step^^J%
+  -l xx -r -m 4:-3,0^^J%
+  2nd Step^^J%
+  -m 2:1,0(0mm,148mm)^^J%
+%</dir|small>
+%<planer>  -l 24 -r -m 6:5(8mm,0mm),3(103mm,0mm),1(198mm,0mm)
+  ^^J%
+%<dir|small>  xx must be the result of a multiplication with 4.^^J%
+%<small>  Cut 36 mm from one side and tack in the middle.^^J%
+  ^^J%
+  ********************************************************************
+  }
+%    \end{macrocode}
+% German Remark from Axel to \File{adrdir.cfg}:
+% \begin{quote}
+% Das ist die einfache Version, einfach in der Mitte durchschneiden,
+% Seiten sortieren, ineinanderstecken und heften.
+%
+% Nicht alle Tacker k\"onnen dieses Format verarbeiten, ich habe
+% lange gesucht und benutze den Novus B5, der passt ganz knapp und ist
+% noch bezahlbar. Danach kommen die Hochleistungstacker \"uber 50 DM.
+% \end{quote}
+%
+% German Remark from Axel to \File{adrplaner.cfg}:
+% \begin{quote}
+% Der Deskjet kann die letzten 14\,mm des Blattes nicht bedrucken,
+% daher wurde das ganze Layout um 4\,mm verschoben, diese m\"ussen an
+% der kurzen Kante abgeschnitten werden.
+%
+% Bei anderen Druckern kann man bei den Vorderseiten 3\,mm von der
+% x-Koordinate abziehen und bei den R\"uckseiten zuaddieren.
+% \end{quote}
+%
+% German Remark from Axel to \File{adrsmall.cfg}:
+% \begin{quote}
+% Von einer Seite m\"ussen noch 36\,mm abgeschnitten werden, dann
+% in der Mitte heften und in den Taschenkalender einstecken.
+% \end{quote}
+%
+% \iffalse
+%</cfg>
+% \fi
+%
+%
+% \section{The \BibTeX{} files}
+%
+% \iffalse
+%<*bst>
+% \fi
+%
+% These \BibTeX{} files are BibTeX-Database to \Class{scrlettr}
+% converters. They are based on BibTeX bibliography style
+% \File{address} Gerd Neugebauer has written in 1994.
+%
+% The files generated from these files may be used for
+% \Class{scrlettr}, \Class{scrlttr2}, \File{phone.tex} or
+% \File{dir.tex} from the \KOMAScript{} Package, \Class{akletter} and
+% some versions of \Class{myletter} which preceded
+% \Class{akletter}. They will even work with the \LaTeX 2.09 version
+% of \textsc{Script}.
+%
+% This is only one way to use the address database layout defined by
+% Gerd Neugebauer. Use this as an example for your own conversion
+% program.
+%
+% \changes{v1.0}{1996/01/01}{Added the key-field}
+% \changes{v1.1}{1996/01/02}{Changed \texttt{net} to \texttt{url} and
+%   \texttt{email}}
+% \changes{v1.1.1}{1996/01/03}{Function address: moved
+%   \texttt{\bslash\bslash} inside if condition}
+% \changes{v1.1.1}{1996/01/03}{No more warnings if street is empty
+%   (reported by Jan Holl\"ander)}
+% \changes{v1.1.2}{1996/01/04}{The \emph{von} part was ignored in
+%   names} 
+% \changes{v1.1.3}{1996/01/04}{Support for second (mobile)
+%   telephonenumber}
+% \changes{v1.2}{1999/11/01}{New release independent of KOMA-Script}
+% \changes{v1.2a}{2001/10/11}{\Package{docstrip} version}
+% \changes{v1.2b}{2002/06/23}{Documentation updated}
+% \changes{v1.2c}{2006/04/19}{Documentation updated, license information
+% updated to LPPL 1.3}
+% \changes{v1.3}{2010/04/02}{Removed \texttt{email.bst}, the email address is now
+% written to the standard \texttt{bbl} by \texttt{adrconv}.}
+% \changes{v1.3}{2010/04/02}{Renamed \texttt{birthday.bst}
+% to \texttt{adrbirthday.bst} to avoid a collision with \texttt{directory.cls}.}
+%
+% The \File{adrbirthday.bst} prints the entries with birthdays only. The
+% entries are sorted by month and inside one month by date.
+%
+%    \begin{macrocode}
+ENTRY
+  { name
+  	sortas
+    title
+    organization
+    city
+    zip
+    country
+    street
+    phone
+    mobile
+    fax
+    url
+    email
+    note
+    key
+    birthday
+    nbirthday
+  }
+  {}
+%<!birthday>  { adr.char }
+%<birthday>  { b.month }
+%    \end{macrocode}
+%    \begin{macrocode}
+%<!birthday>INTEGERS { cur.adr.char }
+%<birthday>STRINGS { cur.month num.index alpha.index }
+%    \end{macrocode}
+%    \begin{macrocode}
+FUNCTION {get.names}
+{ name empty$
+   { organization empty$
+      { "{}{}" }
+      { organization "{}" * }
+     if$
+   }
+   { "{" name #1 "{ll}" format.name$ "}" * *
+     "{" name #1 "{ff}{ vv}" format.name$ "}" * * *
+   }
+   if$
+}
+%    \end{macrocode}
+%    \begin{macrocode}
+FUNCTION {print.adrchr}
+%<*!birthday>
+{ adr.char chr.to.int$ cur.adr.char >
+  { newline$ "\adrchar{" adr.char "}" * * write$ newline$
+    adr.char chr.to.int$ 'cur.adr.char :=
+  }
+  'skip$
+%</!birthday>
+%<*birthday>
+{ b.month cur.month =
+  'skip$
+  { newline$ "\adrchar{\convdate{" b.month "}}" * * write$ newline$
+    b.month 'cur.month :=
+  }
+%</birthday>
+  if$
+}
+%    \end{macrocode}
+%\iffalse
+% $% <-- we do this to correct syntax highlight.
+%\fi
+%    \begin{macrocode}
+%<*!fax>
+FUNCTION{format.phone.and.mobile}
+{ phone empty$
+    {
+      mobile empty$
+        { "" }
+        { mobile }
+      if$
+    }{
+      mobile empty$
+        { phone }
+        { phone "\\" mobile * * }
+      if$
+    }
+  if$
+}
+%</!fax>
+%    \end{macrocode}
+%    \begin{macrocode}
+%<*fax>
+FUNCTION{format.phone.and.fax}
+{ phone empty$
+    { "" }
+    { phone }
+  if$
+  fax empty$
+    'skip$
+    { phone empty$
+      { fax * }
+      { "\\Fax:\\" fax * * }
+      if$
+    }
+  if$
+}
+%</fax>
+%    \end{macrocode}
+%\iffalse
+% $% <-- we do this to correct syntax hightlight.
+%\fi
+%    \begin{macrocode}
+FUNCTION{address}
+{
+%<*birthday>
+  nbirthday empty$
+  'skip$
+  {
+%</birthday>
+    print.adrchr
+    "\adrentry" write$
+    get.names write$ newline$
+    "{" 
+    street empty$
+      { "" * }
+      { street " \\ " * *}
+    if$
+    zip empty$
+      { "" * }
+      { zip " " * *}
+    if$
+    city empty$
+    { "" * }
+    { city * }
+    if$ 
+    "}{" *
+%<!fax>    format.phone.and.mobile
+%<fax>    format.phone.and.fax
+    "}" * *
+    email empty$
+      { "{}" * }
+      { "{" email "}" * * * }
+    if$
+     organization empty$
+      { "{}" * }
+      { "{" organization "}" * * *}
+     if$
+    note empty$
+      { "{}" * }
+      { "{" note "}" * * * }
+    if$
+    "{"  * 
+%<*birthday>
+    birthday empty$
+      { "" }
+      { birthday }
+    if$
+    "}{" * *
+%</birthday>
+    key empty$
+      { "" }
+      { key }
+    if$
+    "}" * * write$ newline$
+%<*birthday>
+  }
+  if$
+%</birthday>
+}
+%    \end{macrocode}
+%    \begin{macrocode}
+FUNCTION{presort}
+%<*!birthday>
+{
+  sortas empty$
+  { name empty$
+    { organization empty$
+      { key empty$
+        { "No name, organization, or key to sort " cite$ * warning$
+          "???"
+        }
+        { key }
+        if$
+      }
+      { organization }
+      if$
+    }
+    { name #1 "{ll},{f }{v }{, j}" format.name$ }
+    if$
+  }
+  { sortas }
+%</!birthday>
+%<*birthday>
+{ nbirthday empty$
+  { "" }
+  { nbirthday }
+%</birthday>
+  if$
+  duplicate$
+  'sort.key$ :=
+%<*!birthday>
+  #1 #1 substring$
+  'adr.char :=
+%</!birthday>
+%<*birthday>
+  #1 #2 substring$
+  'b.month :=
+%</birthday>
+%    \end{macrocode}
+% At every but \File{adrbirthday.bst} the adr.char is the first letter of
+% the sort.key.
+%    \begin{macrocode}
+}
+%    \end{macrocode}
+%    \begin{macrocode}
+READ
+%    \end{macrocode}
+%    \begin{macrocode}
+ITERATE {presort}
+%    \end{macrocode}
+%    \begin{macrocode}
+SORT
+%    \end{macrocode}
+%    \begin{macrocode}
+FUNCTION {begin.bib}
+{ 
+%<*birthday>
+  "\def\convdate#1{\ifcase#1 \or 1 \or 2 \or 3 \or 4 \or 5 "
+  "\or 6 \or 7 \or 8 \or 9 \or 10 \or 11 \or 12 \fi}" * 'num.index :=
+  "\def\convdate#1{\ifcase#1 \or Januar \or Februar \or "
+  " M{^^b a}rz \or April \or Mai \or Juni \or Juli "
+  "\or August \or September \or Oktober \or November \or Dezember \fi}"
+  * * 'alpha.index :=
+  alpha.index write$
+  newline$
+%</birthday>
+  preamble$ empty$
+    'skip$
+    { preamble$ write$ newline$ }
+  if$
+%<!birthday>  #0 'cur.adr.char :=
+%<birthday>  "00" 'cur.month :=
+}
+%\iffalse
+% $% <-- we do this to correct syntax hightlight.
+%\fi
+%    \begin{macrocode}
+EXECUTE {begin.bib}
+%    \end{macrocode}
+%    \begin{macrocode}
+ITERATE {call.type$}
+%    \end{macrocode}
+% Print a newline and flush the write buffer
+%    \begin{macrocode}
+FUNCTION {end.bib}
+{ newline$ }
+%    \end{macrocode}
+%    \begin{macrocode}
+EXECUTE {end.bib}
+%    \end{macrocode}
+%
+% \iffalse
+%</bst>
+% \fi
+%
+%
+% \section{An example \BibTeX{} database}
+%
+% Do not believe everything you read here. It is just a
+% demonstration.
+% 
+% \iffalse
+%<*bib>
+%<*example>
+% \fi
+%    \begin{macrocode}
+
+@address{VornameNachname,
+   name =         {Vorname Nachname},
+   street =       {Strasse},
+   zip =          {PLZ},
+   city =         {Ort},
+   phone =        {Telefon},
+   email =        {E-mail@domain},
+   mobile =       {Mobil},  
+   birthday =     {Geburtstag},
+   note =         {Notiz},
+   organization = {Organisation},
+   key =          {Key},
+   nbirthday =    {0101},
+}
+
+@address{mustermann,
+   name =    {Hans Mustermann},
+   city =    {Heimstatt},
+   zip =     01234,
+   country = {D -},
+   street =  {Einbahnstra{\ss}e 1},
+   phone =   {01234 / 5 67 89},
+   fax =     {01234 / 5 67 89},
+   email =   {hm@work.com},
+   note =    {Alles nur Erfindung},
+}
+@address{AxelK,
+   name =      {Axel Kielhorn},
+   city =      {Verden},
+   zip =       27283,
+   street =    {Lange Stra{\ss}e 17},
+   phone =     {04231 / 12 34 56},
+   fax =       {04231 / 65 34 21},
+   email =     {a.kielhorn@web.de},
+   key =       {Aki},
+   note =      {Author of the modified addressen.bst},
+   birthday =  {16.05.1967},
+   nbirthday = 0516,         
+}
+@address{RalfK,
+   name =      {Ralf Kielhorn},
+   city =      {Braunschweig},
+   zip =       38116,
+   street =    {Gro{\ss}e Stra{\ss}e 17},
+   phone =     {0531 / 12 34 56},
+   key =       {Rki},
+   birthday =  {05.08.1969},
+   nbirthday = 0805,
+}
+@address{SabineK,
+   name =      {Sabine Kielhorn},
+   city =      {Oldenburg},
+   zip =       26133,
+   street =    {Fraunhoferstra{\ss}e 21},
+   phone =     {0441 / 12 34 56},
+   key =       {Ski},
+   birthday =  {13.11.1970},
+   nbirthday = 1113,
+}
+@address{OEKZ,
+   name =        {{{"O}kologisches Zentrum~e.\,V.}},
+   sortas =      {Okologisches Zentrum},
+   organization = {Verband der Vereine},
+   city =        {Heimstatt},
+   zip =         01234,
+   country =     {Germany},
+   street =      {Mauerstra{\ss}e 1},
+   phone =       {01234 / 5 67 89},
+   fax =         {01234 / 5 67 89},
+   email =       {hm@work.com},
+   key =         {OEKZ},
+}
+@address{DANTE,
+  name      = {{DANTE~e.\,V.}},
+  sortas    = {Dante},
+  street    = {Postfach 10 18 40},
+  zip       = {69008},
+  city      = {Heidelberg},
+  phone     = {0 62 21 / 2 97 66},
+  fax       = {0 62 21 / 16 79 06},
+  email     = {dante@dante.de},
+  url       = {http://www.dante.de},
+  key       = {DANTE},
+  birthday  = {14. April 1989},
+  nbirthday = {0414}
+  }
+
+%    \end{macrocode}
+%
+% \iffalse
+%</example>
+%</bib>
+% \fi
+% \changes{v1.3}{2010/04/02}{Added support for PDF workflow.}
+%<*montage>
+%    \begin{macrocode}
+\documentclass{article}
+\usepackage{geometry}
+\geometry{verbose,twoside,nofoot,pdftex,%
+%<erster>a5paper, top=0mm,bottom=0mm,inner=0mm}
+%<zweiter>a4paper,top=0mm,bottom=0mm,inner=0mm}
+\usepackage{pdfpages}
+\begin{document}
+\includepdf[pages={-},
+landscape,
+nup=1x2,
+%<erster>signature=16,
+%<zweiter>signature=4,
+%<erster>noautoscale,scale=1]{adrdir.pdf}
+%<zweiter>noautoscale,scale=1]{adrmontage1.pdf}
+\end{document}
+%    \end{macrocode}
+%</montage>
+%
+% \Finale
+\endinput
+%
+% end of file ``adrconv.dtx''
-- 
cgit v1.2.3

