summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/extpfeil
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/extpfeil
Initial commit
Diffstat (limited to 'macros/latex/contrib/extpfeil')
-rw-r--r--macros/latex/contrib/extpfeil/README185
-rw-r--r--macros/latex/contrib/extpfeil/extpfeil.dtx455
-rw-r--r--macros/latex/contrib/extpfeil/extpfeil.ins64
-rw-r--r--macros/latex/contrib/extpfeil/extpfeil.pdfbin0 -> 132818 bytes
-rw-r--r--macros/latex/contrib/extpfeil/extpfeil.sty106
5 files changed, 810 insertions, 0 deletions
diff --git a/macros/latex/contrib/extpfeil/README b/macros/latex/contrib/extpfeil/README
new file mode 100644
index 0000000000..fe4adf5953
--- /dev/null
+++ b/macros/latex/contrib/extpfeil/README
@@ -0,0 +1,185 @@
+[en]
+LaTeX-package 'extpfeil' - extensible arrows, and a command to
+create new ones
+
+Author: Paul Ebermann <Paul-Ebermann@gmx.de>
+License: LPPL 1.3b or later, author-maintained
+ (see http://www.latex-project.org/lppl/).
+
+All Documentation (other than this file) is in german.
+
+The typesetting of the documentation needs 'pauldoc' (from the
+same author).
+Additionally you'll need the packages 'amsmath' and 'amssymb'.
+
+The package comes as .dtx + .ins.
+Run "latex extpfeil.ins" to create the style file (and maybe put
+it to texmf/tex/latex/paul/, if your docstrip is configured
+accordingly), run (after that and maybe updating your TeX hash)
+"latex extpfeil.dtx" to create the documentation.
+
+ Usage
+-------
+
+Put \usepackage{extpfeil} in your document preamble.
+
+Then you can use the extensible arrows
+ \xtwoheadrightarrow (----->>)
+ \xtwoheadleftarrow (<<-----)
+ \xmapsto (|----->)
+ \xlongequal (=======)
+ \xtofrom (------>
+ <----- )
+They work the same way as the extensible arrows in 'amsmath',
+'mathtools' or 'extarrows': you give one mandatory argument
+(superscript) and one optional argument (subscript), and the
+length of the arrow is adapted from the width of the arguments.
+
+ \xlongequal[sub]{super}
+
+
+But - and here is the difference, apart from other set of arrows -
+this package also gives a command to create new such arrows:
+
+ \newextarrow{\arrowname}{<spacing>}{<arrowdef>}
+
+defines \arrowname to be such an arrow.
+
+<spacing> should be a list of four numbers (single
+tokens or {}-groups), giving (in this order):
+ - additional space left of the arguments
+ - additional space right of the arguments
+ -> those are used to justify the sub/superscripts
+ after creating the arrow
+ - additional space left of the arguments
+ - additional space right of the arguments
+ -> those are used to determine the length
+ of the arrow. (I didn't understand the
+ difference between this two - maybe only
+ the sum of both matters.)
+All numbers are interpreted as mu (math units).
+
+<arrowdef> should be a list of three symbols (single
+tokens or {} groups), giving (in this order):
+ - left end of the arrow
+ - middle part of the arrow (will be multiplicated,
+ mostly \relbar or \Relbar)
+ - right end of the arrow.
+
+In the (german language) documentation extpfeil.pdf is
+also some description about how it works.
+
+----------------
+[de]
+LaTeX-Paket 'extpfeil' - verlängerbare Pfeile, und ein
+Befehl, um weitere soche zu definieren.
+
+Autor: Paul Ebermann (Paul-Ebermann@gmx.de).
+Lizenz: LPPL 1.3b oder später, mit Maintenance-Status
+ "author-maintained". Siehe http://www.latex-project.org/lppl/.
+
+Geschrieben für den eigenen Gebrauch
+(-> http://www.math.hu-berlin.de/~ebermann/alg-script/),
+aber vielleicht ist es auch für andere von Nutzen.
+
+Das Paket benötigt 'amsmath' und 'amssymb'.
+Zum Setzen der Dokumentation wird das Paket 'pauldoc'
+(vom selben Autor) benötigt.
+
+Das Paket kommt als .dtx + .ins.
+Mit "latex extpfeil.ins" wird die .sty-Datei erstellt (und
+eventuell gleich nach texmf/tex/latex/paul/ installiert,
+wenn docstrip entsprechend eingerichtet ist), mit
+latex extpfeil.dtx kann (danach und eventuell nach einer
+Aktualisierung der TeX-Dateidatenbank) die Dokumentation neu
+erstellt werden.
+
+Zur Verwendung siehe extpfeil.pdf.
+----------------
+[eo-h]
+LaTeX-pakajho 'extpfeil' - plilarghigeblaj sagoj, kaj
+komando por krei pliajn tiajn.
+
+Autoro: Paulo Ebermann (Paul-Ebermann@gmx.de).
+Licenzo: LPPL 1.3, 'author-maintained'
+ (-> http://www.latex-project.org/lppl/).
+
+Kreitaj por propra uzo, sed eble iom de ghi ankau
+uzeblas por aliaj.
+
+La dokumentaro (escepte tiu chi dosiero) estas nur en la germana
+lingvo.
+
+La pakajho bezonas la pakajhojn 'amsmath' kaj 'amssymb'.
+Por krei la dokumentadon vi krome bezonas 'pauldoc' (de la sama autoro).
+
+La pakajho venas en .dtx + .ins.
+Voku "latex extpfeil.ins" por krei la .sty-dosieron (kaj
+eble meti ghin al texmf/tex/latex/paul/, se via docstrip estis
+konfigurita laue), voku "latex extpfeil.dtx" por rekrei
+la dokumentaron.
+
+ Uzado
+-------
+
+Metu
+
+ \usepackage{extpfeil}
+
+en la komencon de la dokumento (antau \begin{document}).
+
+Poste vi povas uzi la plilongigeblajn
+sagojn
+ \xtwoheadrightarrow (----->>)
+ \xtwoheadleftarrow (<<-----)
+ \xmapsto (|----->)
+ \xlongequal (=======)
+ \xtofrom (------>
+ <----- )
+Ili funkcias same kiel la plilongigeblaj sagoj en
+la pakajhoj 'amsmath', 'mathtools' kaj 'extarrows':
+vi donu kiel deviga argumento ajhon (formulon) kiu
+aperos super la sago, kiel opcia argumento ajhon
+(formulon)kiu aperos sub la sago. La longeco de
+la sago adaptighas lau la largheco de la argumentoj.
+
+ \xlongequal[sub]{super}
+
+
+Sed - kaj jen la diferenco al la menciitaj pakajhoj,
+krom alia aro de sagoj - tiu pakajho ankau donas
+komandon por krei pliajn tiajn sagojn:
+
+ \newextarrow{\sagonomo}{<spacoj>}{<sagodif>}
+
+difinas \sagonomo kiel tia sago.
+
+<spacoj> estu listo de kvar numeroj (unuopaj
+simboloj (ciferoj) au {}-listoj), donante
+(en tiu sinsekvo):
+ - plian spacon maldekstre de la formuloj
+ - plian spacon dekstre de la formuloj
+ -> tiuj estas uzataj post la konstruado de
+ la sago, por shovi la subajn kaj suprajn
+ formulojn dekstren au maldekstren.
+ - plian spacon maldekstre de la formuloj
+ - plian spacon dekstre de la formuloj
+ -> tiuj estas uzataj por kalkuli la longecon
+ de la sago. (Mi ne komprenis la diferencon
+ inter tiuj du - povas esti, ke nur la sumo
+ de ambau gravas.)
+Chiuj numeroj estas interpretataj kiel 'mu'
+(matematikaj unuoj).
+
+<arrowdef> estu listo de tri signoj (unuopaj simboloj
+au {}-grupoj), donante (en tiu sinsekvo):
+
+ - maldekstran finon de la sago
+ - mezan parton de la sago (tiu estos multobligita
+ por plilongigi la sagon, plej ofte estos \relbar
+ (-) au \Relbar (=)).
+ - dekstran finon de la sago
+
+
+In la (germanlingva) dokumentajho (extpfeil.pdf)
+estas ioma priskribo, kiel funkcias.
diff --git a/macros/latex/contrib/extpfeil/extpfeil.dtx b/macros/latex/contrib/extpfeil/extpfeil.dtx
new file mode 100644
index 0000000000..71ffe9a8e6
--- /dev/null
+++ b/macros/latex/contrib/extpfeil/extpfeil.dtx
@@ -0,0 +1,455 @@
+% \iffalse meta-comment
+%
+%% (C) 2005 Paul Ebermann
+%%
+%% Package extpfeil, mit einigen weiteren in der Länge
+%% wachsenden Pfeilen (à la \xrightarrow{} aus amsmath).
+%%
+%% Die Datei extpfeil.dtx sowie die dazugehörige
+%% extpfeil.ins sowie die damit generierte
+%% extpfeil.sty stehen unter der
+%% "LaTeX Project Public License" (LPPL, zu finden
+%% unter http://www.latex-project.org/lppl/, sowie
+%% auch in den meisten TeX-Distributionen in
+%% texmf/docs/latex/base/lppl*.txt), Version 1.3b oder
+%% später (nach Wahl des Verwenders).
+%%
+%% Der 'maintenance-status' ist (zur Zeit) 'author-maintained'.
+%%
+%% Das heißt u.a., die Dateien dürfen frei vertrieben werden,
+%% bei Änderungen (durch andere Personen als Paul Ebermann)
+%% ist aber der Name der Datei zu ändern.
+%%
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[2003/12/01]
+%<package>\ProvidesPackage{extpfeil}
+%<package> [2009/10/31 v0.4 Extensible Pfeile (PE)]
+%
+%<*driver>
+\documentclass[ngerman, draft]{ltxdoc}
+\usepackage{pauldoc}
+\usepackage{extpfeil}
+\usepackage{array}
+
+%\OnlyDescription
+\begin{document}
+ \DocInput{extpfeil.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{143}
+%
+% \changes{v0.0}{2006/01/18}{Anfang der Fassung als DTX}
+%
+% \GetFileInfo{extpfeil.sty}
+%
+% \DoNotIndex{\endinput,\newcommand,\RequirePackage}
+%
+% \title{Das \pack{extpfeil}-Package -- Weitere erweiterbare Pfeile\thanks{Diese
+% Dokumentation gehört zu \pack{extpfeil}~\fileversion,
+% vom~\filedate.}}
+% \author{Paul Ebermann\footnote{\texttt{Paul-Ebermann@gmx.de}}}
+%
+% \maketitle
+%
+% \begin{abstract}
+% Dieses Paket definiert eine Reihe erweiterbare Pfeile,
+% sowie ein Kommando, um selbst weitere zu definieren.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section{Benutzerdoku}
+%
+% Dieses Paket definiert einige erweiterbare Pfeile,
+% sowie ein Kommando, um selbst weitere zu definieren\ifReferenceExists{sec:newextarrow}
+% { (siehe Abschnitt \ref{sec:newextarrow}).}{. (Dieses ist nur
+% in der Implementations-Version der Doku beschrieben, denn die muss
+% man sowieso lesen, um es zu verstehen.)}
+%
+% \subsection{Generelle Benutzung der Pfeile}
+%
+% Die Pfeile funktionieren wie die Pfeile '\xleftarrow' und '\xrightarrow'
+% aus \AmS-\pack{Math} sowie diverse weitere Pfeile aus \pack{mathtools} bzw.
+% \pack{extarrows} (letzteres Paket habe ich erst später entdeckt -- es hat
+% auch keine Dokumentation).
+% Die generelle Syntax ist
+% \begin{quote}
+% \meta{pfeilname}\oarg{subscript}\marg{superscript}
+% \end{quote}
+% \meta{pfeilname} ist das entsprechend definierte Kommando (siehe Abschnitt \ref{pfeilliste})
+% \meta{subscript} eine Formel, die (falls vorhanden) unter den Pfeil gesetzt
+% wird, \meta{superscript} eine, die über den Pfeil gesetzt wird. Der Pfeil selbst
+% nimmt dann eine ausreichend hohe Länge an, um an beiden Seiten etwas über die
+% Formel hinauszuragen.
+%
+% \subsection{Die einzelnen Pfeile}\label{pfeilliste}
+%
+% \changes{v0.2b}{2006/04/11}{Dokumentations-Update: \cs{xmapsto} jetzt auch beschrieben}
+%
+% \DescribeMacro{\xtwoheadrightarrow}
+% \DescribeMacro{\xtwoheadleftarrow}
+% \DescribeMacro{\xmapsto}
+% \DescribeMacro{\xlongequal}
+% \DescribeMacro{\xtofrom}
+% \begin{tabular}[t]{lcp{5cm}}
+% '\xtwoheadrightarrow[a]{b}' & $\xtwoheadrightarrow[a]{b}$ & ein einfacher Pfeil nach
+% rechts mit Doppelspitze \\
+% '\xtwoheadleftarrow[a]{b}' & $\xtwoheadleftarrow[a]{b}$ & ein einfacher Pfeil nach
+% links mit Doppelspitze \\
+% '\xmapsto[a]{b}' & $\xmapsto[a]{b}$ & ein \emph{wird-abgebildet-auf}-Pfeil nach
+% rechts. \\
+% '\xlongequal[a]{b}' & $\xlongequal[a]{b}$ & kein Pfeil, sondern einfach nur ein
+% verlängerbares Gleichheitszeichen. \\
+% '\xtofrom[a]{b}' & $\xtofrom[a]{b}$ & Ein Doppelpfeil in beide Richtungen.
+% \end{tabular}
+%
+%
+% \StopEventually{\PrintChanges\PrintIndex}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \section{Implementation}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \subsection{geladene Pakete}
+%
+% Zunächst laden wir das \pack{amsmath}-Package, in welchem
+% die verwendeten Makros definiert sind, sowie \pack{amssymb},
+% in dem sich einige verwendete Symbole aufhalten.
+% \begin{macrocode}
+\RequirePackage{amsmath}
+\RequirePackage{amssymb}
+% \end{macrocode}
+%
+% \pack{mathtools} definiert '\mathrlap' und '\mathllap', welche
+% in einigen meiner Befehle verwendet werden.
+% \begin{macrocode}
+\RequirePackage{mathtools}
+% \end{macrocode}
+%
+% \pack{stmaryrd} enthält viele Symbole, von denen wir nur
+% $\shortleftarrow$ und $\shortrightarrow$ brauchen.
+% \begin{macrocode}
+\RequirePackage[only,shortleftarrow,shortrightarrow]{stmaryrd}
+% \end{macrocode}
+%
+% \subsection{Die verwendeten \pack{amsmath}-Funktionen}
+%
+% Leider ist die Dokumentation der \AmS-Math-Funktionen\footnote{in
+% Abschnitt 12 von 'amsmath.dvi', ab Seite 25 in der Version 2.13}
+% etwas dürftig -- ich musste mir selbst zusammenreimen, was
+% wie funktionieren könnte. Deswegen sind im folgenden die Ergebnisse meiner
+% Forschungen niedergelegt.
+%
+% \DescribeMacro{\relbar}
+% \DescribeMacro{\Relbar}
+% Ich verwende für meine Pfeile '\relbar' -- das ist einfach nur
+% ein Minus-Zeichen ($\relbar$) (der Leerraum oben und unten etwas verkleinert, damit
+% Super- und Subskripte nicht so weit weg sind), als verlängerbares
+% Element. Genauso gibt es auch '\Relbar' ($\Relbar$) für Doppelpfeile.
+%
+% \DescribeMacro{\arrowfill@}
+% \cmd{\arrowfill@}\marg{links}\marg{mitte}\marg{rechts}\marg{größe} wird benutzt, um
+% dehnbare Pfeile zu erstellen. Das Makro bekommt 4 Parameter:
+%
+% \meta{links} ist das linke Ende des Pfeils, \meta{rechts} das rechte Ende.
+%
+% \meta{mitte} ist das, was verlängerbar gemacht wird - also am besten
+% '\relbar' oder '\Relbar'.
+%
+% \meta{größe} wird dem Makro von \cmd{\ext@arrow} (bzw. anderen Makros, die
+% mit '\arrowfill@' gebastelte Pfeile verwenden) übergeben, darum muss man sich
+% beim Erstellen von Pfeilen also nicht kümmern -- es ist ein Kommando, um die
+% Mathe-Schriftgröße einzustellen, (bei '\ext@arrow' ist es '\displaystyle').
+%
+% Ein Beispiel der Anwendung\footnote{aus amsmath.dtx} ist
+%\begin{verbatim}
+% \def\leftarrowfill@{\arrowfill@\leftarrow\relbar\relbar}
+%\end{verbatim}
+% Das linke Ende ist also ein '\leftarrow' ($\leftarrow$), das
+% rechte Ende (genauso wie die Mitte) ein '\relbar' ($\relbar$).
+% Insgesamt führt das (mit einer Übergabe von '\textstyle') zu
+% {\makeatletter{\leftarrowfill@{\textstyle}}\makeatother} (hier
+% ziemlich lang, da es ja den Platz füllt).
+%
+% \DescribeMacro{\ext@arrow}
+% \cmd{\ext@arrow}\marg{li 1}\marg{re 1}^^A
+% \marg{li 2}\marg{re 2}\marg{Pfeil}\marg{oben}\marg{unten}
+% ist nun das Kommando, welches einen (mit '\arrowfill@' erstellten)
+% Pfeil in der richtigen Länge mit etwas darüber und darunter ausgibt.
+%
+% \meta{oben} ist eine Formel, die über
+% dem Pfeil ausgegeben wird, \meta{unten} eine Formel, die unter
+% dem Pfeil ausgegeben wird. Beides kann auch leergelassen werden,
+% dann wird eben nichts dort ausgegeben.
+%
+% \meta{Pfeil} gibt den Pfeil an, der zu verwenden ist -- dies sollte
+% aus '\arrowfill@' mit den ersten drei Parametern gebildet sein
+% (entweder in '{}' -- so werden wir es nachher machen -- oder als
+% extra-Makro (wie '\leftarrowfill@').
+%
+% \meta{li 1} und \meta{re 1} geben an, wieviel Platz
+% vor und nach \meta{oben} und \meta{unten} gelassen werden soll --
+% mittels '\mkern', die Einheit dazu ist 'mu' (\emph{Math units}). Damit
+% kann man die Position der Formeln über/unter dem Pfeil etwas seitlich
+% anpassen.
+%
+% \meta{li 2} und \meta{re 2} funktionieren ähnlich, werden allerdings
+% nur zum Berechnen der Länge des Pfeiles verwendet. Damit kann man
+% die Länge des Pfeiles noch etwas über die Breite der Formel hinaus
+% ausdehnen. Ich habe keine Ahnung, ob zwischen \meta{li 2} und \meta{re 2}
+% ein funktioneller Unterschied besteht, oder ob einfach nur die Summe
+% von beidem zählt.
+%
+% Zum Definieren eines Pfeiles mit Sub- und Superskript geht man z.B. so
+% vor\footnote{aus 'amsmath.dtx', Zeilenumbruch von mir}:
+% \begin{verbatim}
+% \newcommand{\xleftarrow}[2][]{%
+% \ext@arrow 3095\leftarrowfill@{#1}{#2}}\end{verbatim}
+% Die ersten 4 Parameter werden also hier als einzelne Ziffern
+% übergeben (ohne '{}'), dann ('\leftarrowfill@') ein mit '\arrowfill@'
+% erstellter dehnbarer Pfeil, zum Schluss die beiden Parameter des
+% definierten Makros. Das Ergebnis ist z.B.
+% $$ \xleftarrow[unten]{oben}.$$
+%
+% \subsection{Neue Pfeile}
+% \label{sec:newextarrow}
+% Wir kombinieren jetzt die beiden oben vorgestellten Kommandos,
+% um so einfacher eigene Pfeile erstellen zu können.
+%
+% \DescribeMacro{\newextarrow}
+% \changes{v0.1}{2006/01/31}{Alle Pfeile verwenden nun newextarrow zur Definition.}
+% '\newextarrow'\marg{befehl}\marg{platz}\marg{pfeil}
+% definiert das Kommando \meta{befehl} als dehnbares Zeichen
+% (mit ober- und Unterscript), mit den Platz-Angaben in \meta{platz}
+% (dies sollte 4 Token enthalten) und den Pfeil-Teilen in \meta{pfeil}
+% (das sollte drei Token enthalten).
+%
+% \begin{macro}{\newextarrow}
+% \changes{v0.1}{2006/01/31}{Neu hinzu}
+% Das damit definierte Makro ruft also '\ext@arrow' auf, mit den Parametern
+% \meta{platz}, dem aus '\arrowfill@' und \meta{pfeil} zusammengesetzten
+% Pfeil sowie seinen beiden eigenen Parametern (der erste davon ist optional) auf.
+% \begin{macrocode}
+\newcommand*{\newextarrow}[3] {%
+ \newcommand*{#1}[2][]{\ext@arrow #2{\arrowfill@#3}{##1}{##2}}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Verschiedene Pfeile übereinander} \label{twoarrows}
+%
+% In einigen Schriftsammlungen sind Pfeile wie $\rightleftarrows$
+% und $\rightrightarrows$ (\pack{\AmS symb}) vorhanden. Leider gibt
+% es damit einige Probleme, wenn man daraus erweiterbare Pfeile basteln
+% möchte:
+% \begin{itemize}
+% \item Der vertikale Abstand passt nicht zu $\Relbar$, wie
+% $\Relbar\mspace{-5mu}\rightrightarrows$ zeigt.
+% \item Es gibt keine $\twoarrowsleft\relbar\shortleftarrow$,
+% $\twoarrowsright\shortrightarrow\relbar$ etc., um
+% daraus einen verlängerbaren Pfeil wie $\xtofrom{\quad}$ zu basteln.
+% \end{itemize}
+% Die folgenden Makros versuchen dies zu beheben.
+%
+% \begin{macro}{\twoarrowsleft}\noindent\marg{Pfeil1}\marg{Pfeil2}
+%
+% \changes{v0.3}{2006/07/27}{Neu.}
+% Setzt zwei Pfeile (oder Striche etc.) so zusammen, dass der erste
+% zur oberen Linie, der zweite zur unteren Linie von $\Relbar$ ('\Relbar')
+% passt. Die beiden Symbole sind am linken Ende ausgerichtet.
+% \begin{macrocode}
+\newcommand*{\twoarrowsleft}[2]{%
+ \settoheight{\dimen@}{=}%
+ \advance\dimen@ by 1pt\relax
+ \mathrel{%
+ \mathrlap{\raisebox{0.22\dimen@}[0pt][0pt]{$#1$}}%
+ \mathrlap{\raisebox{-0.22\dimen@}[0pt][0pt]{$#2$}}%
+ \hphantom{\vbox{\hbox{$#1$}\hbox{$#2$}}}%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\twoarrowsright}
+% \changes{v0.3}{2006/07/27}{Neu.}
+% Das gleiche für die Rechtsausrichtung.
+% \begin{macrocode}
+\newcommand*{\twoarrowsright}[2]{%
+ \settoheight{\dimen@}{=}%
+ \advance\dimen@ by 1pt\relax
+ \mathrel{%
+ \hphantom{\vbox{\hbox{$\m@th #1 $}\hbox{$\m@th #2 $}}}%
+ \mathllap{\raisebox{0.22\dimen@}[0pt][0pt]{$\m@th #1 $}}%
+ \mathllap{\raisebox{-0.22\dimen@}[0pt][0pt]{$\m@th #2 $}}%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% Da für einige Zwecke der durch '\Relbar' ($\Relbar$) vorgegebene Abstand
+% doch etwas gering ist, hier noch zwei Makros, die genauso funktionieren,
+% bei denen der Abstand größer (und mittels optionalem Argument
+% konfigurierbar) ist. Danach folgt ein dazu passendes '\bigRelbar'.
+%
+%
+% \begin{macro}{\bigtwoarrowsleft}\noindent\oarg{abstand}\marg{Pfeil1}\marg{Pfeil2}
+%
+% ^^A \changes{v0.3}{2006/07/27}{Neu.}
+% Setzt zwei Pfeile (oder Striche etc.) so zusammen, dass der erste
+% zur oberen Linie, der zweite zur unteren Linie von $\bigRelbar$ ('\bigRelbar')
+% passt. Die beiden Symbole sind am linken Ende ausgerichtet.
+%
+%\newextarrow{\xsurjtoInjfrom}{9999} {%
+% {\bigtwoarrowsleft{\relbar}{\shortleftarrow}}%
+% \bigRelbar%
+% {\bigtwoarrowsright{\twoheadrightarrow}{\relbar\joinrel\rhook}}%
+%}
+%
+% Zum Ausprobieren: $A \xsurjtoInjfrom[unten]{oben} B$.
+%
+%
+% \begin{macrocode}
+\newcommand*{\bigtwoarrowsleft}[3][5pt]{%
+ \setlength{\dimen@}{#1}%
+ \mathrel{%
+ \mathrlap{\raisebox{0.5\dimen@}{$\m@th #2 $}}%
+ \mathrlap{\raisebox{-0.5\dimen@}{$\m@th #3 $}}%
+ \hphantom{\vbox{\hbox{$\m@th #2 $}\hbox{$\m@th #3 $}}}%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\bigtwoarrowsright}
+% \changes{v0.3}{2006/07/27}{Neu.}
+% Das gleiche für die Rechtsausrichtung.
+% \begin{macrocode}
+\newcommand*{\bigtwoarrowsright}[3][5pt]{%
+ \setlength{\dimen@}{#1}%
+ \mathrel{%
+ \hphantom{\vbox{\hbox{$\m@th #2 $}\hbox{$\m@th #3 $}}}%
+ \mathllap{\raisebox{0.5\dimen@}{$\m@th #2 $}}%
+ \mathllap{\raisebox{-0.5\dimen@}{$\m@th #3 $}}%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\bigRelbar}\noindent\oarg{abstand}
+% \begin{macrocode}
+\newcommand*{\bigRelbar}[1][5pt]{
+ \setlength{\dimen@}{#1}%
+ \mathrel{%
+% \vcenter{\offinterlineskip
+% \hbox{$\m@th \relbar$}%
+% \hbox{$\m@th \relbar$}%
+% }%
+ \mathrlap{\raisebox{0.5\dimen@}{$\m@th \relbar $}}%
+ \raisebox{-0.5\dimen@}{$\m@th \relbar$}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Weitere Pfeile}
+% Ich verwende jetzt '\newextarrow', um weitere Pfeile zu erstellen.
+%
+% \begin{macro}{\xtwoheadrightarrow}
+% Unser Pfeil sollte ziemlich weit überstehen,
+% deswegen die '{40}'. '05' scheint zur
+% Justierung der Formeln ganz gut zu passen.
+% \begin{macrocode}
+\newextarrow{\xtwoheadrightarrow}
+ {05{40}0}
+% \end{macrocode}
+% Den Pfeil selbst setzen wir aus $\twoheadrightarrow$
+% (aus \pack{amssymb}) sowie den üblichen '\relbar' zusammen:
+% \begin{macrocode}
+ {\relbar\relbar\twoheadrightarrow}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\xtwoheadleftarrow}
+% Das geht analog zu '\xtwoheadrightarrow' (die \meta{li}- und \meta{re}-Parameter
+% sind vertauscht, da der Pfeil ja genau gespiegelt ist).
+% \begin{macrocode}
+\newextarrow{\xtwoheadleftarrow}
+ {500{40}}
+ {\twoheadleftarrow\relbar\relbar}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\xmapsto}
+% \changes{v0.2}{2006/03/19}{Neu.}
+% Hier noch eine verlängerbare Variante von $\mapsto$ und $\longmapsto$.
+% \pack{mathtools} hat bereits eine Implementation davon, aber diese
+% ist etwas länger und gefällt mir daher besser (das '\let' sorgt
+% dafür, dass sich '\newcommand' nicht beschwert).
+% \begin{macrocode}
+\let\xmapsto\undefined
+\newextarrow{\xmapsto}{0599}{{\mapstochar\relbar}\relbar\rightarrow}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\xlongequal}
+% \changes{v0.1}{2006/01/31}{Neu hinzu}
+% Alle drei Teile bestehen aus $\Relbar$,
+% \begin{macrocode}
+\newextarrow{\xlongequal}{5599}{\Relbar\Relbar\Relbar}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\xtofrom}
+% \changes{v0.3}{2006/07/27}{Neu}
+% Ein Doppelpfeil: $\xtofrom[\sin]{\cos}$.
+% \begin{macrocode}
+\newextarrow
+ {\xtofrom}%
+ {55{40}0}%
+ {%
+ {\twoarrowsleft\relbar\shortleftarrow}%
+ \Relbar%
+ {\twoarrowsright\shortrightarrow\relbar}%
+ }%
+% \end{macrocode}
+% \end{macro}
+
+% \section{Schluss}
+% Das war es fürs erste -- später kommen
+% bestimmt noch mehr Pfeile hinzu.
+%
+% \begin{macrocode}
+\endinput
+%</package>
+% \end{macrocode}
+%
+% \Finale
+%\endinput
+
+
+%%% Folgendes ist nur für meinen Editor.
+%%%
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/extpfeil/extpfeil.ins b/macros/latex/contrib/extpfeil/extpfeil.ins
new file mode 100644
index 0000000000..aaf5a1976d
--- /dev/null
+++ b/macros/latex/contrib/extpfeil/extpfeil.ins
@@ -0,0 +1,64 @@
+%%
+%% (C) 2002-2006 Paul Ebermann
+%%
+%% Der vollständige Urheberrechtshinweis befindet sich
+%% am Begin von extpfeil.dtx.
+%%
+%% Ich gebe keine Garantie irgendeiner Art.
+%%
+
+
+
+\input docstrip.tex
+\usedir{tex/latex/paul}
+
+\Msg{**********************************************************}
+\Msg{* Ich werde Dateien in \showdirectory{tex/latex/paul} }
+\Msg{* installieren. Bitte stellen Sie sicher, }
+\Msg{* dass dieses Verzeichnis vorhanden ist. }
+\Msg{* }
+
+%% der folgende Text wird in jeder generierten
+%% Datei am Anfang eingefügt.
+\preamble
+
+ ,--------------------------------------------------.
+ | Das ist eine generierte Datei. |
+ | |
+ | (c) 2005-2006 Paul Ebermann. |
+ '--------------------------------------------------'
+
+\endpreamble
+
+
+\generate{\file{extpfeil.sty}{\from{extpfeil.dtx}{package}}}
+
+\Msg{#######################}
+\Msg{# }
+\Msg{# Um die Installation zu beenden, }
+\Msg{# müssen Sie die folgenden Dateien }
+\Msg{# in Ihrem TeX-Suchbaum unterbringen: }
+\Msg{# }
+\Msg{# extpfeil.sty }
+\Msg{# }
+\Msg{# Um eine Dokumentation zu erzeugen, }
+\Msg{# benutzen Sie }
+\Msg{# }
+\Msg{# latex extpfeil.dtx }
+\Msg{# }
+\Msg{# Viel Spaß }
+\Msg{# Paul Ebermann }
+\Msg{# }
+\Msg{#######################}
+
+\endbatchfile
+
+
+
+
+%%% Folgendes ist nur für meinen Editor.
+%%%
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/extpfeil/extpfeil.pdf b/macros/latex/contrib/extpfeil/extpfeil.pdf
new file mode 100644
index 0000000000..6ec50badc8
--- /dev/null
+++ b/macros/latex/contrib/extpfeil/extpfeil.pdf
Binary files differ
diff --git a/macros/latex/contrib/extpfeil/extpfeil.sty b/macros/latex/contrib/extpfeil/extpfeil.sty
new file mode 100644
index 0000000000..53b6caa289
--- /dev/null
+++ b/macros/latex/contrib/extpfeil/extpfeil.sty
@@ -0,0 +1,106 @@
+%%
+%% This is file `extpfeil.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% extpfeil.dtx (with options: `package')
+%%
+%% ,--------------------------------------------------.
+%% | Das ist eine generierte Datei. |
+%% | |
+%% | (c) 2005-2006 Paul Ebermann. |
+%% '--------------------------------------------------'
+%%
+%% (C) 2005 Paul Ebermann
+%%
+%% Package extpfeil, mit einigen weiteren in der L^^e4nge
+%% wachsenden Pfeilen (^^e0 la \xrightarrow{} aus amsmath).
+%%
+%% Die Datei extpfeil.dtx sowie die dazugeh^^f6rige
+%% extpfeil.ins sowie die damit generierte
+%% extpfeil.sty stehen unter der
+%% "LaTeX Project Public License" (LPPL, zu finden
+%% unter http://www.latex-project.org/lppl/, sowie
+%% auch in den meisten TeX-Distributionen in
+%% texmf/docs/latex/base/lppl*.txt), Version 1.3b oder
+%% sp^^e4ter (nach Wahl des Verwenders).
+%%
+%% Der 'maintenance-status' ist (zur Zeit) 'author-maintained'.
+%%
+%% Das hei^^dft u.a., die Dateien d^^fcrfen frei vertrieben werden,
+%% bei ^^c4nderungen (durch andere Personen als Paul Ebermann)
+%% ist aber der Name der Datei zu ^^e4ndern.
+%%
+\NeedsTeXFormat{LaTeX2e}[2003/12/01]
+\ProvidesPackage{extpfeil}
+ [2009/10/31 v0.4 Extensible Pfeile (PE)]
+\RequirePackage{amsmath}
+\RequirePackage{amssymb}
+\RequirePackage{mathtools}
+\RequirePackage[only,shortleftarrow,shortrightarrow]{stmaryrd}
+\newcommand*{\newextarrow}[3] {%
+ \newcommand*{#1}[2][]{\ext@arrow #2{\arrowfill@#3}{##1}{##2}}
+}
+\newcommand*{\twoarrowsleft}[2]{%
+ \settoheight{\dimen@}{=}%
+ \advance\dimen@ by 1pt\relax
+ \mathrel{%
+ \mathrlap{\raisebox{0.22\dimen@}[0pt][0pt]{$#1$}}%
+ \mathrlap{\raisebox{-0.22\dimen@}[0pt][0pt]{$#2$}}%
+ \hphantom{\vbox{\hbox{$#1$}\hbox{$#2$}}}%
+ }%
+}%
+\newcommand*{\twoarrowsright}[2]{%
+ \settoheight{\dimen@}{=}%
+ \advance\dimen@ by 1pt\relax
+ \mathrel{%
+ \hphantom{\vbox{\hbox{$\m@th #1 $}\hbox{$\m@th #2 $}}}%
+ \mathllap{\raisebox{0.22\dimen@}[0pt][0pt]{$\m@th #1 $}}%
+ \mathllap{\raisebox{-0.22\dimen@}[0pt][0pt]{$\m@th #2 $}}%
+ }%
+}%
+\newcommand*{\bigtwoarrowsleft}[3][5pt]{%
+ \setlength{\dimen@}{#1}%
+ \mathrel{%
+ \mathrlap{\raisebox{0.5\dimen@}{$\m@th #2 $}}%
+ \mathrlap{\raisebox{-0.5\dimen@}{$\m@th #3 $}}%
+ \hphantom{\vbox{\hbox{$\m@th #2 $}\hbox{$\m@th #3 $}}}%
+ }%
+}%
+\newcommand*{\bigtwoarrowsright}[3][5pt]{%
+ \setlength{\dimen@}{#1}%
+ \mathrel{%
+ \hphantom{\vbox{\hbox{$\m@th #2 $}\hbox{$\m@th #3 $}}}%
+ \mathllap{\raisebox{0.5\dimen@}{$\m@th #2 $}}%
+ \mathllap{\raisebox{-0.5\dimen@}{$\m@th #3 $}}%
+ }%
+}%
+\newcommand*{\bigRelbar}[1][5pt]{
+ \setlength{\dimen@}{#1}%
+ \mathrel{%
+ \mathrlap{\raisebox{0.5\dimen@}{$\m@th \relbar $}}%
+ \raisebox{-0.5\dimen@}{$\m@th \relbar$}%
+ }%
+}
+\newextarrow{\xtwoheadrightarrow}
+ {05{40}0}
+ {\relbar\relbar\twoheadrightarrow}
+\newextarrow{\xtwoheadleftarrow}
+ {500{40}}
+ {\twoheadleftarrow\relbar\relbar}
+\let\xmapsto\undefined
+\newextarrow{\xmapsto}{0599}{{\mapstochar\relbar}\relbar\rightarrow}
+\newextarrow{\xlongequal}{5599}{\Relbar\Relbar\Relbar}
+\newextarrow
+ {\xtofrom}%
+ {55{40}0}%
+ {%
+ {\twoarrowsleft\relbar\shortleftarrow}%
+ \Relbar%
+ {\twoarrowsright\shortrightarrow\relbar}%
+ }%
+
+\endinput
+%%
+%% End of file `extpfeil.sty'.