summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/stdpage
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/stdpage
Initial commit
Diffstat (limited to 'macros/latex/contrib/stdpage')
-rw-r--r--macros/latex/contrib/stdpage/README14
-rw-r--r--macros/latex/contrib/stdpage/stdpage-test.tex15
-rw-r--r--macros/latex/contrib/stdpage/stdpage.dtx429
-rw-r--r--macros/latex/contrib/stdpage/stdpage.ins55
-rw-r--r--macros/latex/contrib/stdpage/stdpage.pdfbin0 -> 116982 bytes
-rw-r--r--macros/latex/contrib/stdpage/stdpage.sty163
6 files changed, 676 insertions, 0 deletions
diff --git a/macros/latex/contrib/stdpage/README b/macros/latex/contrib/stdpage/README
new file mode 100644
index 0000000000..9c35cba205
--- /dev/null
+++ b/macros/latex/contrib/stdpage/README
@@ -0,0 +1,14 @@
+The stdpage package produces a standard page with an adjustable
+number of lines per page, with an adjustable maximum number of
+characters each. Those pages are used to calculate the standard
+length or the price of translations, proof reading or journal
+contributions. In Germany the "Normseite" of 30 lines and at most 60
+characters per line is very widespread. So if you have to find out
+how many "standard pages" a LaTeX text has, you just add one line of
+code and get well typeset typewriterpages.
+
+Version 0.5 additionally supports baselinestretch, parskip and
+suppressing of hyphenation.
+
+Version 0.6 fixes some important bugs and adds an option to get the
+real typewriter look!
diff --git a/macros/latex/contrib/stdpage/stdpage-test.tex b/macros/latex/contrib/stdpage/stdpage-test.tex
new file mode 100644
index 0000000000..c09e861df5
--- /dev/null
+++ b/macros/latex/contrib/stdpage/stdpage-test.tex
@@ -0,0 +1,15 @@
+ \documentclass{article}
+ \usepackage[ngerman]{babel}
+ \usepackage{courier,blindtext}
+ \usepackage[
+ baselinestretch,
+ noindent,
+ parskip,
+ just,
+ chars=65,
+ lines=35,
+ typewriter
+ ]{stdpage}
+ \begin{document}
+ \Blinddocument
+ \end{document}
diff --git a/macros/latex/contrib/stdpage/stdpage.dtx b/macros/latex/contrib/stdpage/stdpage.dtx
new file mode 100644
index 0000000000..7fdbee071e
--- /dev/null
+++ b/macros/latex/contrib/stdpage/stdpage.dtx
@@ -0,0 +1,429 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2004--2005 by Georg Michael Verweyen <Georg.Verweyen@rub.de>
+% --------------------------------------------------
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.2
+% 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.2 or later is part of all distributions of LaTeX
+% version 1999/12/01 or later.
+%
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{stdpage}
+%<package> [2005/03/30 v0.6 stdpage.sty]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\renewcommand{\familydefault}{\rmdefault}
+\usepackage[T1]{fontenc}
+\usepackage[ngerman]{babel}
+\usepackage{hyperref,courier}
+\usepackage[typewriter,chars=70,lines=35]{stdpage}
+
+\hypersetup{%
+ pdftitle={Das stdpage-Paket},%
+ pdfauthor={\textcopyright\ Georg Michael Verweyen <Georg.Verweyen@rub.de>},%
+ pdfsubject={Anleitung zur Erstellung einer Normseite / Manual to create a standard page},%
+ pdfkeywords={Satzspiegel, Vorgaben, 30x60, LaTeX, \LaTeXe, Normseiten,%
+ 30 Zeilen, 60 Zeichen, standard page, requirements, 60 characters, 30 lines}%
+}
+ \CodelineIndex
+ \RecordChanges
+\begin{document}
+ \DocInput{stdpage.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{207}
+%
+% \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 \~}
+%
+%
+% \changes{v0.1}{2004/06/17}{Initial version}
+% \GetFileInfo{stdpage.sty}
+% \changes{v0.2}{2004/06/21}{Neue Übergabe der Parameter mit xkeyval.sty}
+% \changes{v0.3}{2004/06/17}{Wieder alles überarbeitet, das Paket xkeyval wird
+% nicht mehr gebraucht. Die Funktionalität ist unverändert.}
+% \changes{v0.4}{2004/06/21}{Some English documentation added}
+% \changes{v0.6}{2005/03/30}{Additional Features, bugs removed, lot's of changes}
+%
+% \title{Das \textsf{stdpage} Paket -- \emph{The \textsf{stdpage}
+% package}\thanks{%
+% Diese Anleitung geh\"{o}rt zu \textsf{stdpage}~\fileversion,
+% vom \filedate. \emph{This is the manual for \textsf{stdpage}~\fileversion,
+% dated \filedate.}
+% }%
+% }%
+% \author{Georg Michael Verweyen \\ \texttt{Georg.Verweyen@rub.de}}
+% \maketitle
+%
+% \abstract{%
+% Dieses Paket bietet eine einfache Möglichkeit Normseiten zu
+% erstellen, das sind in Deutschland Seiten mit 30 Zeilen \`{a} 60 Zeichen.
+%
+% \emph{%
+% This package provides an easy method to prepare a page with a fixed
+% number of lines per page and a number of characters per line not to be exeeded.
+% Worldwide there are different standards for so called ">standard"< pages.
+% \textsf{stdpage.sty} lets you adjust the page settings. There is further English
+% instruction following (in italics).
+% }%
+% }%
+%
+%
+% \section{Normseiten -- \emph{Standard pages}}
+%
+% Normseiten nennt man im Verlag Seiten, die in einer nicht-proportionalen
+% Schrift gesetzt sind, bei einer Zeilenl\"{a}nge von maximal 60~Zeichen und
+% 30~Zeilen pro Seite. Daraus ergeben sich meist ca.\ 1\,400 Zeichen
+% inklusive Leerschritte pro Seite, denn nicht jede Zeile wird voll, evtl.\
+% gibt es Leerzeilen, halbleere Seiten vor einem neuen Kapitel etc.\footnote{%
+% Manche Verlage rechnen einfach mit 1\,800 Zeichen f\"{u}r eine Normseite --
+% absurd!
+% } Die Zeichenzahl kann erheblich schwanken, stark strukturierte Texte, mit
+% Dialogen etc. nehmen relativ viel Raum ein, bei wenig Zeichen pro Seite.
+%
+% \"{U}bersetzer etwa werden pro Normseite bezahlt, auch f\"{u}r Korrekturlesen,
+% oder Schriftsatz gibt es Vertr\"{a}ge, die sich auf Normseiten beziehen.
+%
+% \emph{%
+% Standard pages are typeset in a nonproportional font. The lines take a
+% limited number of characters, for instance 60. Also the number of lines
+% is fixed, for instance 30 (Those are the standard settings in quite a number
+% countries). This does \emph{not} mean, such a page has 1\,800
+% characters, as lines don't necessarily get filled, also pages might not
+% get filled at the end of a chapter. Usually a standard page (30x60) has
+% about 1400 characters.
+% }%
+%
+% \section*{Changes}
+%
+% Neu in Version 0.5 sind die Möglichkeiten, den Durchschuss zu
+% erhöhen, die Silbentrennung abzustellen und Leerzeilen zwischen
+% den Absätzen einzufügen.
+%
+% {\em Since v0.5 you can spread the lines, stop hyphenation
+% optionally and add an empty line at the beginning of a paragraph.
+%
+% Für den echten Freund der guten (?) alten Schreibmaschine gibt es
+% jetzt (v0.6) eine Option, die so ziemlich alles, was mir spontan
+% eingefallen ist auf einfache Schriftgrö{\ss}e herunterbrät,
+% |typewriter|. Vom Part bis zur Fu{\ss}note: alles |normalsize|. Die
+% Überschriften werden je nach Gewichtung durch Leerzeilen abgesetzt.
+% Man sollte |courier.sty| benutzen, dann stehen für Überschriften
+% wenigsten fette Schnitte zur Verfügung, damit an die Überschriften
+% wiederfindet.
+%
+% {\em
+% For the real typewriter addicted there is a new (v0.6) option:
+% |typewriter|. This option will turn any fontsize I could imagine used
+% in a heading or footnote, or whatever into normalsize. Headings are
+% separated from the rest of the text by blank lines. You should
+% consider using |courier.sty| with this options, which gives bold
+% headings
+% }
+%
+% \section{Anwendung -- \emph{Usage}}
+%
+% F\"{u}r die Basiseinstellungen (Normseiten im Sinne des Vd\"{U}) reicht es, die
+% Zeile |\usepackage{stdpage}| vor dem |\begin{document}| einzuf\"{u}gen --
+% eigentlich sollte dann alles von alleine gehen.
+%
+% Silbentrennung sollte man meines Erachtens verwenden, trotz der nicht"=proportionaler
+% Fonts. Wer mag kann aber |hyphen=false| wählen. Ob man den Rausatz
+% dann zum Blocksatz streckt ist letztlich eine Geschmacksfrage. Wer
+% Blocksatz w\"{u}nscht, kann |just| (Blocksatz = justified) als optionales Argument \"{u}bergeben - die Kombination
+% |[just=true, hyphen=false]| ist nicht m\"oglich. Wenn schon Blocksatz dann auch Sibentrennung!
+% Ma{\ss}geblich
+% ist in meinen Augen das Ergebnis des Rausatzes, da dieser die Situation auf der
+% guten alten Schreibmaschine am besten nachahmt, schlie{\ss}lich stammt auch die Idee
+% der Normseite aus dieser \"{A}ra. Bei aktiviertem Blocksatz kann der Umbruch durch
+% Stauchung und oder Dehnung der Wortzwischenr\"{a}ume etwas anders ausfallen als beim
+% Rausatz (dieses Problem sollte ab v0.6 behoben sein).
+%
+% {\em If you are preparing a German ``Normseite'' of 30 lines and 60 characters
+% per line you just put |\usepackage{stdpage}| before the
+% |\begin{document}| line -- and everything should be fine. The standard
+% behaviour of the package is to make the text ragged, you can change this
+% to justified text by adding |just| to the options list.
+%
+% Linenumbers can be added with |linenumbers|. Paragraph indention can be
+% suppressed with |noindent|. You should think about adding |parskip| to the
+% list of options then, as your paragraphs might get lost otherwise.
+%
+% If you want to create a standard page for, let's say the administration of
+% the European union, you need a page of 30x50 without paragraph indention,
+% you type in\\ |\usepackage[chars=50, lines=30, noindent]{stdpage}|.
+% }%
+%
+% \changes{v0.2}{2004/06/21}{Neue Option: linenumbers}
+% Eine weitere Option ist |linenumbers|: wird die Option gew\"{a}hlt, erscheinen
+% automatisch auf dem Innenrand Zeilennummern - nur f\"{u}r den Fall, dass der
+% Lektor/""Verlagsleiter/""Autor \dots\ nicht so gut z\"{a}hlen kann. Mit
+% |linenumbers| besser einmal zuviel {\TeX}en als zuwenig, die Nummern rutschen
+% schonmal\dots
+%
+% Wer keinen Absatzeinzug w\"{u}nscht (zum Beispiel weil er das in Kombination mit Rausatz
+% kategorisch ablehnt), kann |noindent| w\"{a}hlen. Er sollte dann vielleicht |parskip=true|
+% setzen, damit die Absätze erkennbar bleiben.
+%
+% \changes{v0.2}{2004/06/21}{Neue Optionen: chars/lines}
+% Falls es (im Ausland?) andere Standards f\"{u}r Normseiten gibt, kann man
+% andere Werte im optionalen Parameter |lines| bzw.\ |chars| angeben.
+% Beispiel: |\usepackage[just,noindent,chars=50]{stdpage}| Mit diesen
+% Angaben entsteht eine Ausgabe die den Ma\ss gaben f\"{u}r
+% \"{U}bersetzungen der Europ\"{a}ischen Union entspricht (30 Zeilen mit je
+% 50 Zeichen).
+%
+% \changes{v0.2}{2004/06/21}{Neue Optionen: hyphen, baselinestretch}
+% Unklar ist in vielen Vertr\"agen, ob bei Normseiten Silbentrennung
+% stattfinden soll oder nicht. Die Option |hyphen=false| stellt die
+% Silbentrennung ab (geht nur, wenn kein Blocksatz aktiviert wurde).
+% Die Verlagswelt scheint über die Anwendung der
+% Trennung gespalten. Wird die Trennung abgeschaltet, steigt die Zahl
+% der Normseiten um etwa 1,5\,\%.
+%
+% Einige Lektoren wollen auch gleich im Normseiten-Ausdruck redigieren
+% und brauchen anderthalbfache Zeilenhöhe. Das verdirbt dann jeden
+% Rest von \"asthetischem Anspruch, aber nun ja -- wenn es der Verlag
+% so will: |baselineskip| kann jetzt auch als Option von |stdpage|
+% angegeben werden. Für das, was Word gemeinhin anderthalbzeilig
+% nennt, sollte man |baselinestretch=1.2| setzen (was allerdings auch
+% die Standardeinstellung ist, wenn nur |baselinestretch| gefordert wird.
+%
+% {\em
+% In contracts it is often not clear if hyphenation should be used or
+% not. The option |hyphen=false| sets off hyphenation, wich will
+% increase the number of standard pages about 1.5\,\%. This will not
+% work with the option |just| (justification needs hyphenation!).
+%
+% Sometimes publishers want to do correction or annotations between
+% the lines and need more space. You can change the standard
+% \LaTeX-factor |baselinestretch| in the options of |stdpage|.
+% |baselinestretch=1.25| will have about the same effect as one and a
+% half linespacing in let's say WORD. By the way: |baselinestretch| will be
+% set to 1.25 by default when you use |baselinestretch| as an option.
+%
+% I didn't translate the comment on the implementation (which is rather
+% simple). If you are interested in an English hint, just contact me,
+% I'll do my very best \dots
+% }
+%
+% \section{Neu -- \emph{New}}
+% \StopEventually{\PrintChanges\PrintIndex}
+%
+% \section{Implementierung}
+%
+% \begin{macrocode}
+ \RequirePackage{typearea%
+ ,ragged2e%
+ ,ifthen%
+ ,keyval%
+ ,lineno%
+ }%
+ \RequirePackage[htt]{hyphenat}%
+ \RequirePackage[rigidchapters]{titlesec}%
+% \end{macrocode}
+% Typewriter wir zur Standardfamilie erkl\"{a}rt und Absatzeinzug auch bei RaggedRight
+% als Standard gesetzt.
+% \begin{macrocode}
+\renewcommand{\familydefault}{\ttdefault}%
+\renewcommand{\RaggedRightParindent}{\parindent}%
+% \end{macrocode}
+% Ein paar neue L\"{a}ngen und Befehle:
+% \begin{macrocode}
+ \newlength{\St@ndardLinewidth}%
+ \newlength{\St@ndardTextwidth}%
+ \newlength{\CharsX}%
+ \newlength{\CharsI}%
+ \newboolean{st@ndardjust}%
+ \setboolean{st@ndardjust}{false}%
+ \newboolean{st@ndardnoindent}%
+ \setboolean{st@ndardnoindent}{false}%
+ \newboolean{st@ndardnumbers}%
+ \setboolean{st@ndardnumbers}{false}%
+ \newboolean{st@ndardhyphen}%
+ \setboolean{st@ndardhyphen}{true}%
+ \newboolean{st@ndardparskip}%
+ \setboolean{st@ndardparskip}{false}%
+ \newboolean{st@ndardtypewriter}%
+ \setboolean{st@ndardtypewriter}{false}%
+ \newcommand*{\zeichenzahl}{60}%
+ \newcommand*{\zeilenzahl}{30}%
+% \end{macrocode}
+% \subsection{Optionen}
+% Hier werden jetzt die optionalen Argumente des
+% |\usepackage{stdpage}|-Befehls definiert. |#1| bezieht sich jeweils auf
+% den Eintrag nach dem Gleichheitszeichen, in eckigen Klammern der
+% Defaultwert, der angenommen wird, falls kein Gleichheitszeichen und kein
+% Wert folgt. Ob man also |just=true| eingibt oder einfach |just| ist
+% egal.
+% \begin{macrocode}
+\define@key{stdpage}{block}[true]{%Aus Kompatibilitätsgründen (zu v. 0.4) auf deutsch
+ \setboolean{st@ndardjust}{#1}%
+}%
+\define@key{stdpage}{just}[true]{%
+ \setboolean{st@ndardjust}{#1}%
+}%
+\define@key{stdpage}{noindent}[true]{%
+ \setboolean{st@ndardnoindent}{#1}%
+}%
+\define@key{stdpage}{linenumbers}[true]{%
+ \setboolean{st@ndardnumbers}{#1}%
+}%
+\define@key{stdpage}{hyphen}[true]{%
+ \setboolean{st@ndardhyphen}{#1}%
+}%
+\define@key{stdpage}{parskip}[true]{%
+ \setboolean{st@ndardparskip}{#1}%
+}%
+\define@key{stdpage}{chars}[60]{%
+ \renewcommand{\zeichenzahl}{#1}%
+}%
+\define@key{stdpage}{lines}[30]{%
+ \renewcommand{\zeilenzahl}{#1}%
+}%
+\define@key{stdpage}{baselinestretch}[1.25]{%
+ \renewcommand{\baselinestretch}{#1}%
+}%
+\define@key{stdpage}{typewriter}[true]{%
+ \setboolean{st@ndardtypewriter}{#1}%
+}% \end{macrocode}
+% Die folgenden Zeilen habe ich auch nicht verstanden, sie tun aber ihre
+% Arbeit wie erhofft, indem sie das Makro |\ProcessOptionsWithKV| anstelle
+% von |\ProcessOptions| bereitstellen, das dann am Ende zum Einsatz kommt.
+% \begin{macrocode}
+\def\ProcessOptionsWithKV#1{%
+ \let\@tempc\relax%
+ \let\stdpage@tempa\@empty%
+ \@for\CurrentOption:=\@classoptionslist\do{%
+ \@ifundefined{KV@#1@\CurrentOption}%
+ {}%
+ {\edef\stdpage@tempa{\stdpage@tempa,\CurrentOption,}}%
+ }%
+ \edef\stdpage@tempa{%
+ \noexpand\setkeys{#1}{%
+ \stdpage@tempa\@ptionlist{\@currname.\@currext}%
+ }%
+ }%
+ \stdpage@tempa%
+}%
+% \end{macrocode}
+% Jetzt kommt die etwas umst\"{a}ndliche Berechnung der L\"{a}ngen, aber
+% sicher ist sicher \dots
+% \begin{macrocode}
+\AtBeginDocument{
+ \settowidth{\CharsX}{1234567890}%
+ \setlength{\CharsI}{.1\CharsX}%
+ \setlength{\St@ndardLinewidth}{\zeichenzahl\CharsI}%
+ \setlength{\St@ndardTextwidth}{0pt}%\topskip}%
+ \addtolength{\St@ndardTextwidth}{\zeilenzahl\baselineskip}%
+% \end{macrocode}
+% Wenn |parskip| gew\"{a}hlt wird, f\"{u}gt stdpage einen Durchschuss
+% zwischen den Absätzen ein. Nix dehnbar - einfach Schreibmaschine.
+% \begin{macrocode}
+ \ifthenelse{\boolean{st@ndardparskip}}%
+ {\setlength{\parskip}{\baselineskip}}{}
+% \end{macrocode}
+% Dann werden die Werte an das |typearea|-Paket \"{u}bergeben. Dabei
+% m\"{u}ssen etwa 2,4\,\% abgezogen werden, falls die Blockoption
+% gew\"{a}hlt wurde, ansonsten sorgt die Stauchung der Wortzwischenr\"{a}ume
+% f\"{u}r entsprechend weniger Seiten (und das soll ja nicht!). Durch die neuen
+% fontdimen-Werte bei just=true entfällt dieses Gefrickel.
+% \begin{macrocode}
+%%% \ifthenelse{\boolean{st@ndardjust}}%
+%%% {%
+ \areaset[current]{.976\St@ndardLinewidth}{\St@ndardTextwidth}%
+%%% }%
+%%% {%
+%%% \areaset[current]{\St@ndardLinewidth}{\St@ndardTextwidth}%
+%%% }%
+% \end{macrocode}
+% Auch zu Beginn werden, falls Blocksatz gew\"{u}nscht
+% wurde, die Interwordspaces flexibel gesetzt, sonst wird auf
+% Rausatz oder (wenn hyphen=false) Flattersatz gestellt
+% \begin{macrocode}
+ \ifthenelse{\boolean{st@ndardjust}}%
+ {%
+ \spaceskip=1\CharsI plus 1.5pt minus 0pt
+ }%
+ {%
+ \spaceskip=1\CharsI plus 0pt minus 0pt
+ \ifthenelse{\boolean{st@ndardhyphen}}%
+ {%
+ \setlength{\RaggedRightRightskip}{0em minus .75em}
+ \RaggedRight%
+ }%
+ {%
+ \raggedright%
+ }%
+ }%
+ \ifthenelse{\boolean{st@ndardnoindent}}%
+ {\setlength{\parindent}{0mm}}{}%
+ \ifthenelse{\boolean{st@ndardnumbers}}{%
+ \modulolinenumbers[5]%
+ \linenumbers%
+ \pagewiselinenumbers%
+ }{}%
+% \end{macrocode}
+% Die neue (v. 0.6) Option typewriter brät alle Überschriften auf fette Schreibmaschine runter
+% \begin{macrocode}
+ \ifthenelse{\boolean{st@ndardtypewriter}}%
+ {%
+ \let\sectfont\normalfont
+ \renewcommand{\footnotesize}{\normalsize}
+ \titleformat{\part}{\normalfont\normalsize\bfseries}{\thepart}{1em}{}
+ \titleformat{\chapter}{\normalfont\normalsize\bfseries}{\thechapter}{1em}{}
+ \titleformat{\section}{\normalfont\normalsize\bfseries}{\thesection}{1em}{}
+ \titleformat{\subsection}{\normalfont\normalsize\bfseries}{\thesubsection}{1em}{}
+ \titleformat{\subsubsection}{\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{}
+ \titleformat{\paragraph}{\normalfont\normalsize\bfseries}{\theparagraph}{1em}{}
+ \titlespacing*{\part}{0pt}{5\baselineskip}{3\baselineskip}
+ \titlespacing*{\chapter}{0pt}{4\baselineskip}{3\baselineskip}
+ \titlespacing*{\section}{0pt}{3\baselineskip}{2\baselineskip}
+ \titlespacing*{\subsection}{0pt}{2\baselineskip}{1\baselineskip}
+ \titlespacing*{\subsubsection}{0pt}{1\baselineskip}{0pt}
+ \titlespacing*{\paragraph}{0pt}{1\baselineskip}{0pt}
+ }{}%
+% \end{macrocode}
+% |emergencystretch| sollte mindestens 2em sein, sonst hat man entschieden
+% zu viele Box-Warnungen. Frenchspacing sollte aktiviert
+% sein, vergrö{\ss}erter Leerraum passt nicht so recht zu Fix-Fonts.
+% \begin{macrocode}
+ \frenchspacing
+ \emergencystretch=2em%
+}%
+% \end{macrocode}
+% Hier endet das Argument von |\AtBeginDocument|
+% \begin{macrocode}
+\ProcessOptionsWithKV{stdpage}
+\AtEndOfPackage{%
+ \let\@unprocessedoptions\relax
+}
+% \end{macrocode}
+%
+% \Finale
+\endinput%
diff --git a/macros/latex/contrib/stdpage/stdpage.ins b/macros/latex/contrib/stdpage/stdpage.ins
new file mode 100644
index 0000000000..57a07a7d55
--- /dev/null
+++ b/macros/latex/contrib/stdpage/stdpage.ins
@@ -0,0 +1,55 @@
+%%
+%% Copyright (C) 2004 by Georg Michael Verweyen <Georg.Verweyen@rub.de>
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.2 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.2 or later is part of all distributions of LaTeX version
+%% 1999/12/01 or later.
+%%
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/stdpage}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2004 by Georg Michael Verweyen <Georg.Verweyen@rub.de>
+
+This file may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.2 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.2 or later is part of all distributions of LaTeX version
+1999/12/01 or later.
+
+\endpreamble
+
+\generate{\file{stdpage.sty}{\from{stdpage.dtx}{package}}}
+
+\obeyspaces
+ \Msg{*************************************************************}
+ \Msg{* *}
+ \Msg{* To finish the installation you have to move the following *}
+ \Msg{* file into a directory searched by TeX: *}
+ \Msg{* *}
+ \Msg{* stdpage.sty *}
+ \Msg{* *}
+ \Msg{* To produce the documentation run the file stdpage.dtx *}
+ \Msg{* through LaTeX. *}
+ \Msg{* *}
+ \Msg{* Happy TeXing! *}
+ \Msg{* *}
+ \Msg{*************************************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/stdpage/stdpage.pdf b/macros/latex/contrib/stdpage/stdpage.pdf
new file mode 100644
index 0000000000..84ca492514
--- /dev/null
+++ b/macros/latex/contrib/stdpage/stdpage.pdf
Binary files differ
diff --git a/macros/latex/contrib/stdpage/stdpage.sty b/macros/latex/contrib/stdpage/stdpage.sty
new file mode 100644
index 0000000000..981afa265e
--- /dev/null
+++ b/macros/latex/contrib/stdpage/stdpage.sty
@@ -0,0 +1,163 @@
+%%
+%% This is file `stdpage.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% stdpage.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2004 by Georg Michael Verweyen <Georg.Verweyen@rub.de>
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.2 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.2 or later is part of all distributions of LaTeX version
+%% 1999/12/01 or later.
+%%
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{stdpage}
+ [2005/03/30 v0.6 stdpage.sty]
+ \RequirePackage{typearea%
+ ,ragged2e%
+ ,ifthen%
+ ,keyval%
+ ,lineno%
+ }%
+ \RequirePackage[htt]{hyphenat}%
+ \RequirePackage[rigidchapters]{titlesec}%
+\renewcommand{\familydefault}{\ttdefault}%
+\renewcommand{\RaggedRightParindent}{\parindent}%
+ \newlength{\St@ndardLinewidth}%
+ \newlength{\St@ndardTextwidth}%
+ \newlength{\CharsX}%
+ \newlength{\CharsI}%
+ \newboolean{st@ndardjust}%
+ \setboolean{st@ndardjust}{false}%
+ \newboolean{st@ndardnoindent}%
+ \setboolean{st@ndardnoindent}{false}%
+ \newboolean{st@ndardnumbers}%
+ \setboolean{st@ndardnumbers}{false}%
+ \newboolean{st@ndardhyphen}%
+ \setboolean{st@ndardhyphen}{true}%
+ \newboolean{st@ndardparskip}%
+ \setboolean{st@ndardparskip}{false}%
+ \newboolean{st@ndardtypewriter}%
+ \setboolean{st@ndardtypewriter}{false}%
+ \newcommand*{\zeichenzahl}{60}%
+ \newcommand*{\zeilenzahl}{30}%
+\define@key{stdpage}{block}[true]{%Aus Kompatibilitätsgründen (zu v. 0.4) auf deutsch
+ \setboolean{st@ndardjust}{#1}%
+}%
+\define@key{stdpage}{just}[true]{%
+ \setboolean{st@ndardjust}{#1}%
+}%
+\define@key{stdpage}{noindent}[true]{%
+ \setboolean{st@ndardnoindent}{#1}%
+}%
+\define@key{stdpage}{linenumbers}[true]{%
+ \setboolean{st@ndardnumbers}{#1}%
+}%
+\define@key{stdpage}{hyphen}[true]{%
+ \setboolean{st@ndardhyphen}{#1}%
+}%
+\define@key{stdpage}{parskip}[true]{%
+ \setboolean{st@ndardparskip}{#1}%
+}%
+\define@key{stdpage}{chars}[60]{%
+ \renewcommand{\zeichenzahl}{#1}%
+}%
+\define@key{stdpage}{lines}[30]{%
+ \renewcommand{\zeilenzahl}{#1}%
+}%
+\define@key{stdpage}{baselinestretch}[1.25]{%
+ \renewcommand{\baselinestretch}{#1}%
+}%
+\define@key{stdpage}{typewriter}[true]{%
+ \setboolean{st@ndardtypewriter}{#1}%
+}% \end{macrocode}
+\def\ProcessOptionsWithKV#1{%
+ \let\@tempc\relax%
+ \let\stdpage@tempa\@empty%
+ \@for\CurrentOption:=\@classoptionslist\do{%
+ \@ifundefined{KV@#1@\CurrentOption}%
+ {}%
+ {\edef\stdpage@tempa{\stdpage@tempa,\CurrentOption,}}%
+ }%
+ \edef\stdpage@tempa{%
+ \noexpand\setkeys{#1}{%
+ \stdpage@tempa\@ptionlist{\@currname.\@currext}%
+ }%
+ }%
+ \stdpage@tempa%
+}%
+\AtBeginDocument{
+ \settowidth{\CharsX}{1234567890}%
+ \setlength{\CharsI}{.1\CharsX}%
+ \setlength{\St@ndardLinewidth}{\zeichenzahl\CharsI}%
+ \setlength{\St@ndardTextwidth}{0pt}%\topskip}%
+ \addtolength{\St@ndardTextwidth}{\zeilenzahl\baselineskip}%
+ \ifthenelse{\boolean{st@ndardparskip}}%
+ {\setlength{\parskip}{\baselineskip}}{}
+%%% \ifthenelse{\boolean{st@ndardjust}}%
+%%% {%
+ \areaset[current]{.976\St@ndardLinewidth}{\St@ndardTextwidth}%
+%%% }%
+%%% {%
+%%% \areaset[current]{\St@ndardLinewidth}{\St@ndardTextwidth}%
+%%% }%
+ \ifthenelse{\boolean{st@ndardjust}}%
+ {%
+ \spaceskip=1\CharsI plus 1.5pt minus 0pt
+ }%
+ {%
+ \spaceskip=1\CharsI plus 0pt minus 0pt
+ \ifthenelse{\boolean{st@ndardhyphen}}%
+ {%
+ \setlength{\RaggedRightRightskip}{0em minus .75em}
+ \RaggedRight%
+ }%
+ {%
+ \raggedright%
+ }%
+ }%
+ \ifthenelse{\boolean{st@ndardnoindent}}%
+ {\setlength{\parindent}{0mm}}{}%
+ \ifthenelse{\boolean{st@ndardnumbers}}{%
+ \modulolinenumbers[5]%
+ \linenumbers%
+ \pagewiselinenumbers%
+ }{}%
+ \ifthenelse{\boolean{st@ndardtypewriter}}%
+ {%
+ \let\sectfont\normalfont
+ \renewcommand{\footnotesize}{\normalsize}
+ \titleformat{\part}{\normalfont\normalsize\bfseries}{\thepart}{1em}{}
+ \titleformat{\chapter}{\normalfont\normalsize\bfseries}{\thechapter}{1em}{}
+ \titleformat{\section}{\normalfont\normalsize\bfseries}{\thesection}{1em}{}
+ \titleformat{\subsection}{\normalfont\normalsize\bfseries}{\thesubsection}{1em}{}
+ \titleformat{\subsubsection}{\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{}
+ \titleformat{\paragraph}{\normalfont\normalsize\bfseries}{\theparagraph}{1em}{}
+ \titlespacing*{\part}{0pt}{5\baselineskip}{3\baselineskip}
+ \titlespacing*{\chapter}{0pt}{4\baselineskip}{3\baselineskip}
+ \titlespacing*{\section}{0pt}{3\baselineskip}{2\baselineskip}
+ \titlespacing*{\subsection}{0pt}{2\baselineskip}{1\baselineskip}
+ \titlespacing*{\subsubsection}{0pt}{1\baselineskip}{0pt}
+ \titlespacing*{\paragraph}{0pt}{1\baselineskip}{0pt}
+ }{}%
+ \frenchspacing
+ \emergencystretch=2em%
+}%
+\ProcessOptionsWithKV{stdpage}
+\AtEndOfPackage{%
+ \let\@unprocessedoptions\relax
+}
+\endinput%
+\endinput
+%%
+%% End of file `stdpage.sty'.