summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/randbild/randbild.dtx
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/randbild/randbild.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/randbild/randbild.dtx')
-rw-r--r--macros/latex/contrib/randbild/randbild.dtx335
1 files changed, 335 insertions, 0 deletions
diff --git a/macros/latex/contrib/randbild/randbild.dtx b/macros/latex/contrib/randbild/randbild.dtx
new file mode 100644
index 0000000000..2ba65bbe00
--- /dev/null
+++ b/macros/latex/contrib/randbild/randbild.dtx
@@ -0,0 +1,335 @@
+% \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
+%<package>\NeedsTeXFormat{LaTeX2e}[2003/12/01]
+%<package>\ProvidesPackage{randbild}
+%<package> [2007/05/15 v0.2 Bild am Seitenrand (PE)]
+%
+%<*driver>
+\documentclass[draft]{ltxdoc}
+\usepackage{randbild}
+\usepackage{pauldoc}
+\begin{document}
+ \DocInput{randbild.dtx}
+\end{document}
+%</driver>
+% \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
+%</package>
+% \end{macrocode}
+%
+% \Finale
+%\endinput
+
+
+%%% Folgendes ist nur für meinen Editor.
+%%%
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End: