% \iffalse meta-comment -*- coding: iso-8859-1 -*- % %% (C) 2005-2006 Paul Ebermann %% %% Package randbild, zum Setzen von Bildern von Kurven am Rand %% der Seite. %% Die Datei randbild.dtx sowie die dazugehörige %% randbild.ins sowie die damit generierte %% randbild.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{randbild} % [2007/05/15 v0.2 Bild am Seitenrand (PE)] % %<*driver> \documentclass[draft]{ltxdoc} \usepackage{randbild} \usepackage{pauldoc} \begin{document} \DocInput{randbild.dtx} \end{document} % % \fi % % \CheckSum{49} % % % \changes{v0.0}{2005/12/11}{Anfang der Fassung als DTX} % \changes{v0.1}{2006/02/12}{erste veröffentlichte Version} % % \GetFileInfo{randbild.sty} % % % \title{Das \pack{randbild}-Package -- Mini-Kurven auf dem Rand\thanks{% % Dieses Dokument gehört zu \pack{randbild}~\fileversion, % vom~\filedate.}} % \author{Paul Ebermann\thanks{\texttt{Paul-Ebermann@gmx.de}}} % % \maketitle % % \begin{abstract} % Dieses Paket ermöglicht es mit den beiden Umgebungen 'randbild' und 'randbildbasis', % bequem kleine Graphen von Kurven am Seitenrand zu setzen. % \end{abstract} % % \tableofcontents % % \section{Benutzerdoku} % % Dieses Paket wird wie üblich mit '\usepackage{randbild}' % eingebunden. Optionen gibt es keine. % % \subsection{Befehle} % % \DescribeEnv{randbild} % Dieses Package stellt die Umgebung 'randbild' zur Verfügung. % Damit kann man kleine veranschauende Bilder auf dem Rand der % Seite unterbringen. Verwendung: %\begin{quote} % ' \begin{randbild}'\oarg{Titel}\marg{$x_1,y_1$}\marg{$x_2,y_2$}\\ % ' '\meta{inhalt}\\ % ' \end{randbild}' %\end{quote} % % Dabei geben \meta{Titel} eine Beschriftung für das Bild (kann weggelassen % werden), \meta{$x_1,y_1$} die Koordinaten der linken unteren Ecke, % \meta{$x_2,y_2$} die Koordinaten der rechten oberen Ecke (jeweils in % Bildkoordinaten) an. Man sollte dabei auf die begrenzte Breite des % Seiten-Randes achten. % % Das Bild erhält ein (beschriftetes) Achsenkreuz -- weitere % graphische Elemente (also das, was man eigentlich zeichnen will) % kommen dorthin, wo \meta{inhalt} steht. % Dabei können alle \pack{pstricks}-Makros, wie etwa '\psplot' oder '\psline' % verwendet werden. Siehe dazu die \pack{pstricks}-Dokumentation. % % Beispiel: % \begin{randbild}[Normalparabel]{-2,-.5}{2.2,2.5} % \psplot{-1.6}{1.6}{ x x mul } % \end{randbild} %\begin{verbatim} % \begin{randbild}[Normalparabel]{-2,-.5}{2.2,2.5} % \psplot{-1.6}{1.6}{ x x mul } % \end{randbild} %\end{verbatim} % % \DescribeEnv{randbildbasis} % \DescribeEnv{randbild*} % Die Umgebung 'randbildbasis' funktioniert genauso wie 'randbild', nur % wird kein Achsenkreuz gezeichnet. Ein alternativer Name dafür ist % 'randbild*' (weil ich jetzt schon mindestens zum fünften Mal diesen Namen % verwendet habe, als ich 'randbildbasis' haben wollte). % % \DescribeMacro{\showgrid} % Mit dem Makro '\showgrid' kann man seinem Bild ein % Koordinaten-Gitter hinzufügen. Es ist also innerhalb der % Umgebungen zu verwenden. % \begin{randbild}[Beispiel mit Gitter]{-2.5,-2.5}{2.5,2.5} % \showgrid % \end{randbild} % % \subsection{Bildkoordinaten} % Jedes Bild erhält sein eigenes Koordinatensystem. Die Einheiten sind % jeweils halbe Zentimeter. Die Lage des Ursprungs wird implizit durch % die Angabe der Koordinaten der Bild-Ecken gegeben. % % \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 \~} % % \DoNotIndex{\\,\ ,\begin,\end,\endinput,\RequirePackage, % \newcommand,\newenvironment,\renewcommand, % \newsavebox} % \DoNotIndex{\ } % % \section{Implementation} % % Mit \pack{pst-plot} werden die Diagramme gezeichnet. % \pack{pst-plot} lädt auch gleich das Basis-Package \pack{pstricks}. % \begin{macrocode} %<*package> \RequirePackage{pst-plot} % \end{macrocode} % % \begin{macro}{\randbild@box} % \begin{macro}{\randbild@titel} % In '\randbild@box' speichern wir später die Box, welche die Grafik enthält. % In '\randbild@titel' wird der eventuelle Titel des Randbildes gespeichert. % \begin{macrocode} \newsavebox{\randbild@box} \newcommand{\randbild@titel}{bla} % \end{macrocode} % \end{macro} % \end{macro} % % \changes{v0.2}{2006/09/19}{Verwendung von \cs{@bsphack} % und \cs{@Esphack} (bei 'randbild' und 'randbildbasis'), % um die Umgebungen an der Verwendungsstelle % unbemerkbar zu machen. % Außerdem wurden einige überflüssige Leerzeichen (bzw. Zeilenenden) % entfernt.} % \begin{environment}{randbild} % Die wichtigste (und namensgebende) Umgebung dieses Paketes. % \begin{macrocode} \newenvironment*{randbild}[3][\ ]{% % \end{macrocode} % Mit '\@bsphack' (und dem '\@Esphack' am Ende) sorgen wir dafür, dass % die Umgebung an der Stelle, wo sie verwendet wird, keine Spuren in der % Ausgabe hinterlässt -- auch keine doppelten Leerzeichen o.ä. % \begin{macrocode} \@bsphack% % \end{macrocode} % Wir rufen hier einfach die Umgebung 'randbildbasis' mit unseren drei Parametern auf. % \begin{macrocode} \begin{randbildbasis}[#1]{#2}{#3}% % \end{macrocode} % Da drin malen wir jetzt das Koordinatensystem. ('\tiny' bezieht % sich auf die Größe der Beschriftungen der Achsen.) % \begin{macrocode} {\tiny% \psaxes[ticksize=1pt,labelsep=2pt]{->}(0,0)(#2)(#3){}% }% }{% % \end{macrocode} % Am Ende dieser Umgebung beenden wir natürlich auch 'randbildbasis'. % \begin{macrocode} \end{randbildbasis}% \@Esphack% } % \end{macrocode} % \end{environment} % \begin{environment}{randbildbasis} % \changes{v0.1}{2006/01/26}{Neu (als Abspaltung von 'randbild')} % 'randbildbasis' macht die eigentliche Arbeit. % \begin{macrocode} \newenvironment*{randbildbasis}[3][\ ]{% % \end{macrocode} % Da wir am Ende der Umgebung leider nicht mehr auf die Parameter % zugreifen können, müssen wir uns den Titel hier merken. % \begin{macrocode} \@bsphack% \renewcommand{\randbild@titel}{#1}% % \end{macrocode} % Wir setzen zunächst die Maßeinheit ('unit') und die % Linienbreite für unsere Zeichnung auf passende Werte. % \begin{macrocode} \psset{linewidth=.5pt,unit=0.5cm}% % \end{macrocode} % Da es '\fbox' und '\marginpar' leider nicht in Umgebungsform gibt, müssen wir % zunächst (mit 'lrbox') eine Box erstellen und als '\randbild@box' speichern, um % sie nachher mit einem Rahmen versehen und in den Rand stellen zu können. % \begin{macrocode} \begin{lrbox}{\randbild@box}% % \end{macrocode} % Hier beginnen wir eine 'pspicture'-Umgebung passener Größe. Der Inhalt % der 'randbildbasis'-Umgebung wird dann Inhalt der 'pspicture'-Umgebung, % hier kann man also nach Herzenslust pstricks-Befehle nutzen. % \begin{macrocode} \begin{pspicture}(#2)(#3)% % \end{macrocode} % \changes{v0.2}{2007/05/15}{Bugfix mit Leerzeichen: \cs{ignorespaces}.} % Ich habe noch nicht ganz verstanden, warum das folgende '\ignorespaces' % notwendig ist, wo doch eigentlich schon 'pspicture' dafür sorgt, dass % Leerzeichen (und Zeilenenden) ignoriert werden -- aber leider nicht in % Zusammenarbeit mit '\multips'. % Jedenfalls habe ich danach etwa zwei Stunden gesucht, bei % einem Beispiel wie im Rand\footnote{Für die Darstellung % des Beispiels hier (nach Behebung des Bugs) habe ich ein % explizites Leerzeichen ({\tt\char`\\\char`\ }) verwendet, % im Original war das nur ein ungeschützer Zeilenumbruch.}. % \begin{randbild*}[Beispiel]{-2,-2}{2,2}\ % % \psset{linewidth=0.2pt} % \multips(-2,0)(4,0){2}{\psline(0,-2)(0,2)} % \multips(0,-2)(0,4){2}{\psline(-2,0)(2,0)} % \end{randbild*} % Dieses '\ignorespaces' behebt das Problem. % \begin{macrocode} \ignorespaces }{% % \end{macrocode} % Am Ende der 'randbildbasis'-Umgebung beenden wir zunächst die 'pspicture'-Umgebung % und dann die 'lrbox'-Umgebung (womit das alles nicht gezeichnet, sondern in % der Box '\randbild@box' gespeichert wird). % \begin{macrocode} \end{pspicture}% \end{lrbox}% % \end{macrocode} % Jetzt kommt die eigentliche Ausgabe. % Wir beginnen einen "`Rand-Absatz"' \dots % \begin{macrocode} \marginpar{% % \end{macrocode} % \dots, in welchem alles (horizontal) zentriert ist. % \begin{macrocode} \centering% % \end{macrocode} % Dies betrifft zunächst das Bild ('\usebox{\randbild@box}'), welches % am Rand rundum abgeschnitten wird (0.1 cm Abstand), und einen Rahmen % bekommt. % \begin{macrocode} \fbox{% \clipbox[0.2]{% \usebox{\randbild@box}% }% }% % \end{macrocode} % Auf einer weiteren Zeile (mit wenig Abstand) \dots % \begin{macrocode} \\[0.2\psunit]% % \end{macrocode} % \dots{} folgt nun (in kleiner Schrift) der Titel des Bildes (der ja am Anfang % als Parameter gesichert wurde). % \begin{macrocode} {\small\randbild@titel}% }% \@Esphack% }% % \end{macrocode} % \end{environment} % \begin{environment}{randbild*} % \changes{v0.2}{2007/04/26}{Neue Umgebung 'randbild*' als % Alias für 'randbildbasis'.} % Jetzt definieren wir uns noch einen Alias für 'randbildbasis': % \begin{macrocode} \expandafter\let\csname randbild*\endcsname\randbildbasis \expandafter\let\csname endrandbild*\endcsname\endrandbildbasis % \end{macrocode} % \end{environment} % \begin{macro}{\showgrid} % Unser Koordinatengitter ist eine Spezialisierung von 'psgrid'. % Mit '\newpsobject' legen wir die Parameter fest. % \begin{macrocode} \newpsobject{showgrid}{psgrid}% {% % \end{macrocode} % Wir wollen eine keine weitere Unterteilung unseres % Gitters mit Gitterweite 1. Statt Linien malen wir je % Einheit fünf Punkte. % \begin{macrocode} subgriddiv=1,% griddots=5,% % \end{macrocode} % Die Dicke der (gepunkteten) Linien definieren wir hier als 0.4pt. % Dagegen setzen wir die Größe der Beschriftung auf 0 (d.h. unsichtbar), % da ja schon das Achsenkreuz eine Beschriftung darstellt. % \begin{macrocode} gridwidth=0.4pt,% gridlabels=0pt% } % \end{macrocode} % \end{macro} % Ende. % \begin{macrocode} \endinput % % \end{macrocode} % % \Finale %\endinput %%% Folgendes ist nur für meinen Editor. %%% %%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End: