diff options
Diffstat (limited to 'Master/texmf-dist/doc/plain/jsmisc/deutsch.tex')
-rw-r--r-- | Master/texmf-dist/doc/plain/jsmisc/deutsch.tex | 350 |
1 files changed, 350 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/plain/jsmisc/deutsch.tex b/Master/texmf-dist/doc/plain/jsmisc/deutsch.tex new file mode 100644 index 00000000000..26f3e3719d6 --- /dev/null +++ b/Master/texmf-dist/doc/plain/jsmisc/deutsch.tex @@ -0,0 +1,350 @@ +% $Id: deutsch.doc,v 1.4 1995/07/30 13:23:56 schrod Exp $ +%---------------------------------------------------------------------- +% Written by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>. +% This file is distributed without any copyright restriction. + +% +% deutsch.doc -- typeset German documents with plain TeX. +% +% [TeX in MAKEPROG] +% (history at end) + + +%%%% +%%%% +%%%% These TeX macros were documented with the documentation system +%%%% MAKEPROG and automatically converted to the current form. +%%%% If you have MAKEPROG available you may transform it back to +%%%% the original input: Remove every occurence of three percents +%%%% and one optional blank from the beginning of a line and remove +%%%% every line which starts with four percents. The following lex +%%%% program will do this: +%%%% +%%%% %% +%%%% +%%%% ^%%%\ ? ; +%%%% ^%%%%.*\n ; +%%%% +%%%% If you just want to print the documentation you may fetch +%%%% the archive print-makeprog.tar.Z from ftp.th-darmstadt.de (directory +%%%% pub/tex/latex). It contains *all* used styles -- but beware, they +%%%% may not be in a documented form... +%%%% +%%%% +%%% \input progdoc + +%%% \input names.sty +%%% \def\babel{{\sf babel}} + + + +%%% \title{Typesetting German Documents with Plain \TeX{}} + + + +%%% \chap Introduction. + +%%% There are several defencies of plain \TeX{} if used for German +%%% documents: + +%%% \item{---} Mappings of national characters (`umlauts' and `sharp~s') +%%% to macros or to other character codes (if special fonts are available) +%%% are missing. + +%%% \item{---} \TeX{} produces lots of overfull hboxes for German texts. +%%% That's because the words there are usually longer than English ones. +%%% Furthermore we have to use much more hyphenation for German texts than +%%% for English ones, narrow typesetting is more important than few +%%% hyphenations. In particular, words with umlauts are not hyphenated +%%% often anyhow, even with the `multiple-word' approach from |german.sty|. + +%%% \item{---} It is typographic usage that between compound words +%%% ligatures are not built. Plain~\TeX{} has no easy, readable way to +%%% provide this. + +%%% \noindent This file does the according definitions. They are quite +%%% often only a kludge. But it is hard to make the restrictions +%%% disappear, sometimes it is even impossible within the current +%%% implementation of \TeX{}---and there will never be any other +%%% implementation. So we must live with these kludges. + + +%%% \sect Of course, there is more to German typesetting. Hyphenation, +%%% also for words with umlauts and sharp~s, etc. This basic +%%% functionality is supplied by the \babel{} system and DANTE's +%%% |german.sty|, we have to load the appropriate module. + +%%% There's one problem, though. \babel{}~3.5 defines +%%% |\DeclareTextSymbol|, a symbol used by |german.sty| to decide if it +%%% shall use NFSS code to access symbols. But that usage will lead to an +%%% endless recursion, because some text symbols are defined by +%%% themselves. I don't know if that problem is caused by \babel{}'s code +%%% or by its usage in |german.sty| -- turning it off seems to be an +%%% appropriate fix. + +%%% \beginprog +\let\DeclareTextSymbol\undefined +\input german.sty +%%% \endprog + + +%%% \sect But before we start we declare some shorthands for category +%%% codes. By declaring the at sign~(`|@|') as well as the +%%% underscore~`(|_|)' as letters we can use them in our macros. (I +%%% agree with D.~Knuth that |\identifier_several_words_long| is more +%%% readable than |\IdentifierSeveralWordsLong| and in every case better +%%% than |\p@@@s|.) With the at sign we can use the ``private'' Plain +%%% macros and with the underscore we can make our own macros more +%%% readable. But as we have to restore these category codes at the end +%%% of this macro file we store their former values in control +%%% sequences. This method is better than to use +%%% a group because not all macros have to be defined global this way. + +%%% \beginprog +\ifx \CatEscape\undefined + \chardef\CatEscape=0 + \chardef\CatOpen=1 + \chardef\CatClose=2 + \chardef\CatIgnore=9 + \chardef\CatLetter=11 + \chardef\CatOther=12 + \chardef\CatActive=13 % \active of plain.tex + \chardef\CatInvalid=15 + + \chardef\CatAtCode=\catcode`\@ + \chardef\CatUsCode=\catcode`\_ +\fi + +\catcode`\@=\CatLetter % top level macro file +\catcode`\_=\CatLetter +%%% \endprog + + +%%% \sect Let's identify this macro file against the user and in the Log file. + +%%% \beginprog +\begingroup + \catcode`\$=\CatIgnore + \catcode`\:=\CatIgnore + \message{Support for German documents, $Revision: 1.4 $} +\endgroup +%%% \endprog + + + +%%% \chap National Characters. + +%%% By default no extended characters are available, except those defined +%%% below. I.e., we start to treat all characters from |"7F| to |"FF| as +%%% invalid characters. + +%%% \beginprog +\count@="7F +\loop + \catcode \the\count@ = \CatInvalid + \advance\count@ by 1 + \ifnum \count@ < "100 +\repeat +%%% \endprog + + +%%% \sect We provide a command for the definition of non-ASCII characters: +%%% |\ExtendChar|. A sample definition of an ``Umlaut-a''~(\"a) in the +%%% extended code of an IBM~PC (hex code~|"84|) is: +%%% $$ +%%% |\ExtendChar\^^84: {^^84}{\"a}| +%%% $$ +%%% First the hex code is given as a control sequence, followed by a +%%% colon. Afterwards come two parameters, the first is again the hex +%%% code, the second is the token list which should be used instead of the +%%% hex code. + +%%% The macro definition is rather easy, we just have to make the +%%% respective character active and bind it to it's new meaning. + +%%% \beginprog +\def\ExtendChar #1:{% + \catcode`#1 \CatActive + \extend_char + } +\def\extend_char #1#2{% + \def #1{#2}% + } +%%% \endprog + + +%%% \sect Now we can define some replacements. + +%%% The braces after the control sequences are needed when characters from +%%% the extended character set are written to an auxiliary file and read +%%% in later. During the |\write| they are expanded and following white +%%% space would be gobbled if the braces would not be there. + +%%% \beginprog +% ISO-Latin-1 +\ExtendChar\^^c4: {^^c4}{\"A} +\ExtendChar\^^d6: {^^d6}{\"O} +\ExtendChar\^^dc: {^^dc}{\"U} +\ExtendChar\^^df: {^^df}{\ss{}} +\ExtendChar\^^e4: {^^e4}{\"a} +\ExtendChar\^^f6: {^^f6}{\"o} +\ExtendChar\^^fc: {^^fc}{\"u} + +% IBM PC (code page 850) +\ExtendChar\^^81: {^^81}{\"u} +\ExtendChar\^^84: {^^84}{\"a} +\ExtendChar\^^8e: {^^8e}{\"A} +\ExtendChar\^^94: {^^94}{\"o} +\ExtendChar\^^99: {^^99}{\"O} +\ExtendChar\^^9a: {^^9a}{\"U} +\ExtendChar\^^e1: {^^e1}{\ss{}} % actually \beta, used as \ss in Germany + +% Atari ST (like IBM PC, but with a real `sharp~s') +\ExtendChar\^^9e: {^^9e}{\ss{}} +%%% \endprog + + + +%%% \chap Paragraph Breaking. + +%%% As outlined in the introduction, we allow longer interword spaces. A +%%% line now may have a badness up to 2500, over 1500 a warning is to be +%%% given. Furthermore the penalties for hyphenation are lowered because a +%%% narrow typesetting is preferred against few hyphenations. + +%%% These values are still experimental and should be tuned. + +%%% As |german.sty| uses \babel{} compatible structure, the german +%%% language hook is a good place to store such definitions. But to +%%% use \babel{}'s convenient macros, too, we have to assure that it's +%%% kernel code is loaded first. + +%%% \beginprog +\ifx \babel@core@loaded\undefined + \input babel.def +\fi +\addto\extrasgerman{% + \babel@savevariable\tolerance + \babel@savevariable\hbadness + \babel@savevariable\doublehyphendemerits + \babel@savevariable\finalhyphendemerits + \babel@savevariable\adjdemerits + \tolerance 2500 \hbadness 1500 + \doublehyphendemerits 50000 + \finalhyphendemerits 25000 + \adjdemerits 50000 + } +%%% \endprog + + +%%% \sect In some languages ligatures should not appear between compound +%%% words. We use {\tt \string\|\/} to mark those places. This is only +%%% done within text mode, in math mode {\tt \string\|\/} is still +%%% `$\|$'. But it is sure that one can always hyphenate between compound +%%% words, so we insert |\-|. To allow the hyphenation in other parts of +%%% the word though, we use |\allowhyphens| again. + +%%% \beginprog +\def\|{% % break open a ligature (if not in math mode) + \relax + \ifmmode \Vert + \else \allowhyphens\-\allowhyphens + \fi + } +%%% \endprog + + +%%% \sect Don't use the dreaded `double quote special meaning' stuff of +%%% |german.sty|. And use original umlauts. Already in M\"unster I voted +%%% against it\dots + +%%% \beginprog +\addto\extrasgerman{% + \mdqoff + \umlautlow + } +%%% \endprog + + +%%% \sect Define |\SwitchtoLanguage| for upward compatibility. It does +%%% not really do the same, the old definition was more similar to +%%% |\selectlanguage|. But other languages have to be declared +%%% explicitely, that's not done by this macro file. So we just want to +%%% make old documents processable. + +%%% \beginprog +\def\SwitchtoLanguage#1{\language \csname l@#1\endcsname} +%%% \endprog + + +%%% \sect We are finished; switch to german language (to enable the new +%%% extras defined above), restore the catcodes and prevent from following +%%% garbage. + +%%% \beginprog +\selectlanguage{german} + +\catcode`\@=\CatAtCode +\catcode`\_=\CatUsCode + +\endinput +%%% \endprog + + +%%% %% \sect {\it Acknowledgements:}\quad I would like to thank XXX + + +%%% \bye + +%%% +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% % +%%% % $Log: deutsch.doc,v $ +%%% % Revision 1.4 1995/07/30 13:23:56 schrod +%%% % Discard babel definition of \DeclareTextCommand before including +%%% % german.sty, they are incompatible. +%%% % +%%% % Revision 1.3 1995/07/29 17:58:24 schrod +%%% % Use german.sty, not germanb.sty. (babel 3.5 is not functional for +%%% % plain TeX any more.) But we still want to use babel's macros, we have +%%% % to load it's kernel for that. +%%% % +%%% % Revision 1.2 1995/03/13 23:18:10 schrod +%%% % Started to manage this package with CVS. Made minor code cleanup. +%%% % +%%% % Revision 1.1 1994/10/16 16:57:30 schrod +%%% % Merged macros from local.tex, codes.tex, and language.tex. This +%%% % new file is mainly there to provide upward compatibility for our old +%%% % documents. +%%% % +%%% % +%%% % +%%% % pre-CVS Version History: +%%% % +%%% % DATE WHO REMARKS +%%% % 91-01-18 js set all extended characters to code invalid +%%% % 90-12-23 js added the definition of \ExtendChar for usage in codes.tex. +%%% % 90-10-06 js renamed from dlocal to local, it's now international, +%%% % adapted to TeX 3: +%%% % included codes.tex and langdef.tex if they exist, +%%% % assumed that language.tex is already loaded, +%%% % defined German parameters as a language hook, +%%% % removed first \allowhyphens in \uml@ut, +%%% % documented it with MAKEPROG. +%%% % 89-10-27 js was reworked for ILaTeX +%%% % 89-05-31 js defined \| as a separator for ligatures in text mode +%%% % 87-10-01 js introduced \protect, +%%% % set parameters for German page makeup +%%% % 87-??-?? kg first release +%%% % +%%% % kg: Klaus Guntermann <gunterma@<schrod@iti.informatik.th-darmstadt.de> +%%% % js: Joachim Schrod <schrod@iti.informatik.th-darmstadt.de> + + +%%% +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Local Variables: +%%% mode: plain-TeX +%%% TeX-master: t +%%% TeX-brace-indent-level: 4 +%%% End: |