From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining 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} +% +%\ProvidesFile{adrconv.drv} +%\ProvidesFile{adrguide.tex} +%<*tex|cfg|dir|montage> +%\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +%\ProvidesFile{% +% adrconv% +% adrfax% +% adrdir% +% adrbirthday% +% adrplaner +% adrsmall +% adrmontage1.tex +% adrmontage2.tex +% .tex% +% .tex% +% .cfg% +% } +% +%<*dtx|driver|guide|tex|cfg|dir> + [2018/01/30 v1.4 LaTeX2e +%<*dtx> + adrconv docstrip file] +% +% adrconv implementation documentation driver] +% Address guide] +% Interactive driver of BibTeX database to addressfile converter] +% adrconv configuration file] +% Interactive address directory generation] +% +%<*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} +% +% \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% +% \string\bibstyle{adrconv}^^J% +% \string\bibstyle{adrfax}^^J% +% \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 +% +% \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 +% +% +% \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} +% +% \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} +% +% \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} +% +% \end{macrocode} +% +% \begin{macrocode} +\setlength{\adrindent}{1em} +\addtolength{\leftfield}{-\adrindent} +% \end{macrocode} +% \begin{macrocode} +%<*dir> +\setlength{\paperheight}{148mm} +\setlength{\textheight}{112mm} +% +%<*planer> +\setlength{\paperheight}{172mm} +\setlength{\textheight}{148mm} +% +%<*small> +\setlength{\paperheight}{148mm} +\setlength{\textheight}{112mm} +% +\setlength{\headheight}{1.25\baselineskip} +\setlength{\headsep}{0.25\baselineskip} +\setlength{\footskip}{1.50\baselineskip} +\setlength{\topmargin}{-1in} +%\addtolength{\topmargin}{8mm} +%\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> +% 1st Step (2 x A6 at A5)^^J% +% 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% +% +% -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% +% +% -l 24 -r -m 6:5(8mm,0mm),3(103mm,0mm),1(198mm,0mm) + ^^J% +% xx must be the result of a multiplication with 4.^^J% +% 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 +% +% \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 + } + {} +% { adr.char } +% { b.month } +% \end{macrocode} +% \begin{macrocode} +%INTEGERS { cur.adr.char } +%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> +{ b.month cur.month = + 'skip$ + { newline$ "\adrchar{\convdate{" b.month "}}" * * write$ newline$ + b.month 'cur.month := + } +% + 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$ +} +% +% \end{macrocode} +% \begin{macrocode} +%<*fax> +FUNCTION{format.phone.and.fax} +{ phone empty$ + { "" } + { phone } + if$ + fax empty$ + 'skip$ + { phone empty$ + { fax * } + { "\\Fax:\\" fax * * } + if$ + } + if$ +} +% +% \end{macrocode} +%\iffalse +% $% <-- we do this to correct syntax hightlight. +%\fi +% \begin{macrocode} +FUNCTION{address} +{ +%<*birthday> + nbirthday empty$ + 'skip$ + { +% + print.adrchr + "\adrentry" write$ + get.names write$ newline$ + "{" + street empty$ + { "" * } + { street " \\ " * *} + if$ + zip empty$ + { "" * } + { zip " " * *} + if$ + city empty$ + { "" * } + { city * } + if$ + "}{" * +% format.phone.and.mobile +% format.phone.and.fax + "}" * * + email empty$ + { "{}" * } + { "{" email "}" * * * } + if$ + organization empty$ + { "{}" * } + { "{" organization "}" * * *} + if$ + note empty$ + { "{}" * } + { "{" note "}" * * * } + if$ + "{" * +%<*birthday> + birthday empty$ + { "" } + { birthday } + if$ + "}{" * * +% + key empty$ + { "" } + { key } + if$ + "}" * * write$ newline$ +%<*birthday> + } + if$ +% +} +% \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> +{ nbirthday empty$ + { "" } + { nbirthday } +% + if$ + duplicate$ + 'sort.key$ := +%<*!birthday> + #1 #1 substring$ + 'adr.char := +% +%<*birthday> + #1 #2 substring$ + 'b.month := +% +% \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$ +% + preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ +% #0 'cur.adr.char := +% "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 +% +% \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 +% +% +% \fi +% \changes{v1.3}{2010/04/02}{Added support for PDF workflow.} +%<*montage> +% \begin{macrocode} +\documentclass{article} +\usepackage{geometry} +\geometry{verbose,twoside,nofoot,pdftex,% +%a5paper, top=0mm,bottom=0mm,inner=0mm} +%a4paper,top=0mm,bottom=0mm,inner=0mm} +\usepackage{pdfpages} +\begin{document} +\includepdf[pages={-}, +landscape, +nup=1x2, +%signature=16, +%signature=4, +%noautoscale,scale=1]{adrdir.pdf} +%noautoscale,scale=1]{adrmontage1.pdf} +\end{document} +% \end{macrocode} +% +% +% \Finale +\endinput +% +% end of file ``adrconv.dtx'' -- cgit v1.2.3