% \iffalse meta-comment % % Copyright (C) 2004 by Georg Michael Verweyen % -------------------------------------------------- % % 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 %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesPackage{stdpage} % [2004/12/20 v0.5 stdpage.sty] % %<*driver> \documentclass{ltxdoc} \renewcommand{\familydefault}{\rmdefault} \usepackage[T1]{fontenc} \usepackage[ngerman]{babel} \usepackage{hyperref,times} \usepackage[chars=65,baselinestretch=1.3,hyphen=false]{stdpage} \hypersetup{% pdftitle={Das stdpage-Paket},% pdfauthor={\textcopyright\ Georg Michael Verweyen },% 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} % % \fi % % \CheckSum{124} % % \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} % % % \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. Diese Dokumentation % wurde mit |\usepackage[chars=65,baselinestretch=1.3,hyphen=false]{stdpage}| % erzeugt. % % {\em Since v0.5 you can spread the lines, stop hyphenation % optionally and add an empty line at the beginning of a paragraph. % This documentation was typeset using % |\usepackage[chars=65,baselinestretch=1.3,hyphen=false]{stdpage}|.} % % % \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. % % {\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}|. % % 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 % }% % % \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.25| setzen. % % {\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. % } % % \StopEventually{\PrintChanges\PrintIndex} % % \section{Implementierung} % % \begin{macrocode} \RequirePackage{typearea% ,ragged2e% ,ifthen% ,keyval% ,lineno% }% \RequirePackage[htt]{hyphenat}% % \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}% \newboolean{st@ndardnoindent}% \newboolean{st@ndardnumbers}% \newboolean{st@ndardhyphen}% \setboolean{st@ndardhyphen}{true}% \newboolean{st@ndardparskip}% \setboolean{st@ndardparskip}{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 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}[60]{% \renewcommand{\zeilenzahl}{#1}% }% \define@key{stdpage}{baselinestretch}[1]{% \renewcommand{\baselinestretch}{#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} % 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!). % \begin{macrocode} \ifthenelse{\boolean{st@ndardjust}}% {% \areaset[current]{.976\St@ndardLinewidth}{\St@ndardTextwidth}% }% {% \areaset[current]{\St@ndardLinewidth}{\St@ndardTextwidth}% }% % \end{macrocode} % Auch zu Beginn wird gegebenenfalls, falls nicht Blocksatz gew\"{u}nscht % wurde, auf Rausatz gestellt % \begin{macrocode} \ifthenelse{\boolean{st@ndardjust}}% {}% {% \ifthenelse{\boolean{st@ndardhyphen}}% {% \setlength{\RaggedRightRightskip}{0em}% plus .5em minus .5em}% \RaggedRight% }% {% \raggedright% }% }% \ifthenelse{\boolean{st@ndardnoindent}}% {\setlength{\parindent}{0mm}}{}% \ifthenelse{\boolean{st@ndardnumbers}}{% \modulolinenumbers[5]% \linenumbers% \pagewiselinenumbers% }{}% }% % \end{macrocode} % |emergencystretch| sollte mindestens 3em sein, sonst hat man entschieden % zu viele Box-Warnungen. Frenchspacing sollte aktiviert % sein, vergrößerter Leerraum passt nicht so recht zu Fix-Fonts. % \begin{macrocode} \frenchspacing \emergencystretch=3em% % \end{macrocode} % % \begin{macrocode} \ProcessOptionsWithKV{stdpage} \AtEndOfPackage{% \let\@unprocessedoptions\relax } % \end{macrocode} % % \Finale \endinput%