% \iffalse meta-comment % %% (C) 2006 Paul Ebermann %% %% Package faktor - Faktorringe, -gruppen, -räume %% %% Die Datei faktor.dtx sowie die dazugehörige %% faktor.ins sowie die damit generierte %% faktor.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 %\NeedsTeXFormat{LaTeX2e}[2003/12/01] %\ProvidesPackage{faktor} % [2006/04/05 v0.1b Faktor-Ringe, -Gruppen, -Raeume (PE)] % %<*driver> \documentclass[draft,ngerman]{ltxdoc} \usepackage{faktor} \usepackage{amssymb} \usepackage{pauldoc} \begin{document} \DocInput{faktor.dtx} \end{document} % % \fi % % \CheckSum{29} % % % \changes{v0.1}{2006/02/12}{Erste Fassung als .DTX} % \changes{v0.1a}{2006/03/23}{Lizenzbestimmungen im Quelltext präzisiert.} % \changes{v0.1b}{2006/04/05}{Tippfehler in der Dokumentation beseitigt.} % % \GetFileInfo{faktor.sty} % % \DoNotIndex{\DeclareRobustCommand,\endinput,\ensuremath} % \DoNotIndex{\newcommand,\newlength} % % \title{Das \pack{faktor}-Package -- Faktor-Ringe, -Gruppen, -Räume\thanks{% % Dieses Dokument gehört zu \pack{faktor}~\fileversion, % vom~\filedate.}} % \author{Paul Ebermann\thanks{\texttt{Paul-Ebermann@gmx.de}}} % % \maketitle % \begin{abstract} % In der Algebra, der Topologie, etc. tauchen gelegentlich % Faktorstrukturen auf -- etwa Faktormengen, Faktorgruppen, Faktorringe, % Faktorräume. Diese haben alle eine ähnliche Notation: % ${\faktor{A}{B}}$. Bisher konnte man dies in \LaTeX{} nicht vernünftig % setzen, dieses Paket schafft Abhilfe. % \end{abstract} % \tableofcontents % % \section{Benutzerdoku} % % % \subsection{Anwendung} % % Um das Paket zu laden, verwendet man wie üblich %\begin{verbatim} % \usepackage{faktor} %\end{verbatim} % Package-Optionen gibt es bisher nicht. % % \DescribeMacro{\faktor} % Das namensgebende (und zur Zeit einzige) Makro ist '\faktor'. % Es funktioniert nur im mathematischen Modus. %\begin{quote} % '\faktor'\oarg{stylecmd}\marg{zähler}\marg{nenner} %\end{quote} % \meta{zähler} und \meta{nenner} sollten jeweils Formeln für den % mathematischen Modus sein. Dieses Makro setzt dann ein Faktor-Objekt, % also "`\meta{zähler} faktorisiert nach \meta{nenner}"'. Im Effekt wird % dabei ein $\diagup$ auf natürlicher Höhe gemalt, links daneben % (höhergesetzt) \meta{nenner}, rechts daneben (tiefergesetzt) \meta{zähler}. % % Falls \meta{stylecmd} angegeben wurde, wird es auf \meta{zähler} und \meta{nenner} jeweils % bei der Ausgabe angewandt -- dies könnte also etwa ein Kommando sein, % um Schriftart o.ä. zu ändern. % % \subsubsection{Beispiel} %\begin{verbatim} % $$\faktor{\sum_{i=1}^n k[X]}{\sum_{i=1}^n k[X] \cdot \theta_i}$$ %\end{verbatim} % ergibt: % $$\faktor{\sum_{i=1}^n k[X]}{\sum_{i=1}^n k[X] \cdot \theta_i}$$ % % \subsection{Abhängigkeiten} % \DescribeMacro{\diagup} % Dieses Package verwendet das Zeichen '\diagup' ($\diagup$) aus dem % \pack{amssymb}-Paket -- wenn dieses nicht definiert ist, gibt es also % einen Fehler, sobald '\faktor' verwendet wird. Daher sollte dieses Paket % nur gemeinsam mit \pack{amssymb} oder einem anderen Paket, welches ein % gleich benanntes und ähnlich funktionierendes Zeichen zur Verfügung % stellt, verwendet werden. Notfalls kann man dieses Zeichen auch einzeln % laden (eine Anleitung dafür findet man in der Dokumentation von % \pack{amsfonts}), oder als 'picture' simulieren. % % \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} % Die Implementation ist ähnlich zu der des \pack{nicefrac}-Paketes, % allerdings etwas vereinfacht, weil wir ja nichts verkleinern wollen. % % \begin{macrocode} %<*package> % \end{macrocode} % \begin{macro}{\faktor@zaehlerhoehe} % \begin{macro}{\faktor@nennerhoehe} % In diesen beiden Registern speichern wir % nachher die Höhen von "`Zähler"' und "`Nenner"' % (d.h. Grundobjekt und faktorisierendes Objekt). % \begin{macrocode} \newlength{\faktor@zaehlerhoehe} \newlength{\faktor@nennerhoehe} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\faktor} % \changes{v0.1}{2006/02/12}{Jetzt Berücksichtigung des Mathe-Stils.} % Der erste Parameter ist optional, vorgabemäßig leer. '\faktor' ruft '\faktor@impl@' auf, % und gibt mittels '\mathpalette', je nach aktuellem Mathe-Stil, das Kommando, um in % diesen Stil zu wechseln (also '\displaystyle', '\textstyle', \dots), mit. Die % '{}' drumherum sorgen dafür, dass das ganze % als ein einziges Objekt gewertet wird, an das man z.B. Sub- und % Superscript anhängen kann. (Außerdem haben wir eine Gruppe, d.h. die % Zuweisungen zu '\faktor@zaehlerhoehe' und '\faktor@nennerhoehe' % bleiben lokal. % \begin{macrocode} \DeclareRobustCommand*{\faktor}[3][] { { \mathpalette{\faktor@impl@}{{#1}{#2}{#3}} } } % \end{macrocode} % \end{macro} % \begin{macro}{\faktor@impl@} % Dieses Hilfsmakro entsorgt einfach nur die % zusätzlichen Klammern, welche von '\mathpalette' um '#2' % eingefügt wurden, damit '\faktor@impl' vier Argumente % und nicht nur zwei bekommt. % \begin{macrocode} \newcommand*{\faktor@impl@}[2]{\faktor@impl#1#2} % \end{macrocode} % \end{macro} % \begin{macro}{\faktor@impl}\noindent\marg{modeCmd}\marg{zusatz}\marg{zähler}\marg{nenner} % % '\faktor@impl' macht die eigentliche Arbeit. % Es ermittelt zunächst Höhen von \meta{zähler} und \meta{nenner} % (abhängig von \meta{modeCmd} und \meta{zusatz}). % \begin{macrocode} \newcommand*{\faktor@impl}[4]{ \settoheight{\faktor@zaehlerhoehe}{\ensuremath{#1#2{#3}}}% \settoheight{\faktor@nennerhoehe}{\ensuremath{#1#2{#4}}}% % \end{macrocode} % Dann wird, um die Hälfte seiner Höhe nach oben geschoben, % \emph{zähler} gesetzt. % \begin{macrocode} \raisebox{0.5\faktor@zaehlerhoehe}{\ensuremath{#1#2{#3}}}% % \end{macrocode} % Jetzt kommt eine negativer horizontaler Abstand, der diagonale % Strich, dann noch ein negativer horizontaler Abstand, um das % ganze etwas zusammenzurücken. % \begin{macrocode} \mkern-5mu\diagup\mkern-4mu% % \end{macrocode} % Schließlich kommt \meta{nenner}, um die Hälfte seiner Höhe nach unten geschoben. % \begin{macrocode} \raisebox{-0.5\faktor@nennerhoehe}{\ensuremath{#1#2{#4}}}% } % \end{macrocode} % \end{macro} % Das war es. % \begin{macrocode} \endinput % % \end{macrocode} % % \section{Bug} % Beim höher- und tiefersetzen von Zähler und Nenner % wird jeweils nur die \emph{Höhe} des Objektes berücksichtigt, % nicht die Tiefe (d.h. Unterlängen). % Dadurch (?) kommt es bei größeren Brüchen gelegentlich zu % etwas komischem Aussehen: % $$ \faktor{\faktor{a}{b}}{\faktor{b}{c}}$$ % % \Finale %\endinput %%% Folgendes ist nur für meinen Editor. %%% %%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End: