summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/diagnose
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/diagnose
Initial commit
Diffstat (limited to 'macros/latex/contrib/diagnose')
-rw-r--r--macros/latex/contrib/diagnose/INSTALL49
-rw-r--r--macros/latex/contrib/diagnose/README25
-rw-r--r--macros/latex/contrib/diagnose/doc/diagnose.dvibin0 -> 9036 bytes
-rw-r--r--macros/latex/contrib/diagnose/doc/diagnose.pdfbin0 -> 91029 bytes
-rw-r--r--macros/latex/contrib/diagnose/doc/diagnose.ps424
-rw-r--r--macros/latex/contrib/diagnose/doc/diagnose.tex166
-rw-r--r--macros/latex/contrib/diagnose/doc/mls-diag.tex188
-rw-r--r--macros/latex/contrib/diagnose/texinput/diagnose.sty59
8 files changed, 911 insertions, 0 deletions
diff --git a/macros/latex/contrib/diagnose/INSTALL b/macros/latex/contrib/diagnose/INSTALL
new file mode 100644
index 0000000000..f1834d8594
--- /dev/null
+++ b/macros/latex/contrib/diagnose/INSTALL
@@ -0,0 +1,49 @@
+ Title: diagnose.sty
+ Version: 0.2
+ Author: Oliver Corff
+ Copyright: Ulaanbaatar, Berlin, Beijing, Shanghai 2001
+ Date: April 10th, 2001
+ (Timestamp: April 10, 2001)
+ Archive Name: diagnose.zip
+ Description: Installation Diagnostics
+ Legal Notes: See end of this document
+
+0. Introduction
+
+diagnose.sty, if included as a package, helps identify available
+and necessary but missing files, packages and tokens.
+
+diagnose.sty can be used by texts and other packages. For every
+file or token checked it provides a counter and a set of messages,
+one message if the file or token is found, the other for an absent
+token or file.
+
+
+1. Installation and Use
+
+Unpack the archive diagnose.zip in some temporary directory.
+Copy the file diagnose.sty to a place where your TeX installation
+can find it. Rehash the directory database, if possible (not all
+distributions provide this possibility).
+
+The counter provided by diagnose.sty can be used to trigger appropriate
+activity, either in the form of program branches or in the form of
+variable texts. Messages can appear in log files and documents.
+
+See diagnose.tex for a complete documentation and mls-diag.tex for
+a live example of what this is all about.
+
+
+2. Legal Notes
+
+This software is published under the GPL.
+Usual disclaimers apply.
+
+Thank you for using diagnose.sty!
+
+ Ulaanbaatar, Beijing,
+ Berlin, Shanghai
+ April 2001
+
+ Oliver Corff
+ corff@zedat.fu-berlin.de
diff --git a/macros/latex/contrib/diagnose/README b/macros/latex/contrib/diagnose/README
new file mode 100644
index 0000000000..9bc9cfaab8
--- /dev/null
+++ b/macros/latex/contrib/diagnose/README
@@ -0,0 +1,25 @@
+Package name: diagnose.sty
+Package authors: Oliver Corff
+Version/Release: version 0.2
+
+Features:
+
+This tool, diagnose.sty, is thought useful for package authors who
+want to facilitate the successful distribution of their packages.
+It helps the user (and the system administrator) to see what has to
+be done *before* a new package is installed.
+
+diagnose.sty provides simple high-level tools for checking
+the existence of files and tokens. Software action can be
+triggered, messages can appear in log files and documents.
+
+Compiling the example mls-diag.tex and reading its source text will
+show the idea behind this little utility.
+
+Installation:
+
+Unpack this archive and copy diagnose.sty to some place where
+your LaTeX installation can find it. Rehash the directory database.
+That's it!
+
+OC, April 2001
diff --git a/macros/latex/contrib/diagnose/doc/diagnose.dvi b/macros/latex/contrib/diagnose/doc/diagnose.dvi
new file mode 100644
index 0000000000..caa0b2994a
--- /dev/null
+++ b/macros/latex/contrib/diagnose/doc/diagnose.dvi
Binary files differ
diff --git a/macros/latex/contrib/diagnose/doc/diagnose.pdf b/macros/latex/contrib/diagnose/doc/diagnose.pdf
new file mode 100644
index 0000000000..ad11f6133b
--- /dev/null
+++ b/macros/latex/contrib/diagnose/doc/diagnose.pdf
Binary files differ
diff --git a/macros/latex/contrib/diagnose/doc/diagnose.ps b/macros/latex/contrib/diagnose/doc/diagnose.ps
new file mode 100644
index 0000000000..d173f0a319
--- /dev/null
+++ b/macros/latex/contrib/diagnose/doc/diagnose.ps
@@ -0,0 +1,424 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: diagnose.dvi
+%%Pages: 3
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: Times-Roman Symbol Courier Times-Bold Courier-Bold
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -o diagnose.ps diagnose.dvi
+%DVIPSParameters: dpi=600, compressed
+%DVIPSSource: TeX output 2001.09.28:1043
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: 8r.enc
+% @@psencodingfile@{
+% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
+% version = "0.6",
+% date = "1 July 1998",
+% filename = "8r.enc",
+% email = "tex-fonts@@tug.org",
+% docstring = "Encoding for TrueType or Type 1 fonts
+% to be used with TeX."
+% @}
+%
+% Idea is to have all the characters normally included in Type 1 fonts
+% available for typesetting. This is effectively the characters in Adobe
+% Standard Encoding + ISO Latin 1 + extra characters from Lucida.
+%
+% Character code assignments were made as follows:
+%
+% (1) the Windows ANSI characters are almost all in their Windows ANSI
+% positions, because some Windows users cannot easily reencode the
+% fonts, and it makes no difference on other systems. The only Windows
+% ANSI characters not available are those that make no sense for
+% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
+% (173). quotesingle and grave are moved just because it's such an
+% irritation not having them in TeX positions.
+%
+% (2) Remaining characters are assigned arbitrarily to the lower part
+% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
+%
+% (3) Y&Y Lucida Bright includes some extra text characters; in the
+% hopes that other PostScript fonts, perhaps created for public
+% consumption, will include them, they are included starting at 0x12.
+%
+% (4) Remaining positions left undefined are for use in (hopefully)
+% upward-compatible revisions, if someday more characters are generally
+% available.
+%
+% (5) hyphen appears twice for compatibility with both
+% ASCII and Windows.
+%
+/TeXBase1Encoding [
+% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
+ /.notdef /dotaccent /fi /fl
+ /fraction /hungarumlaut /Lslash /lslash
+ /ogonek /ring /.notdef
+ /breve /minus /.notdef
+% These are the only two remaining unencoded characters, so may as
+% well include them.
+ /Zcaron /zcaron
+% 0x10
+ /caron /dotlessi
+% (unusual TeX characters available in, e.g., Lucida Bright)
+ /dotlessj /ff /ffi /ffl
+ /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef
+ % very contentious; it's so painful not having quoteleft and quoteright
+ % at 96 and 145 that we move the things normally found there to here.
+ /grave /quotesingle
+% 0x20 (ASCII begins)
+ /space /exclam /quotedbl /numbersign
+ /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+% 0x30
+ /zero /one /two /three /four /five /six /seven
+ /eight /nine /colon /semicolon /less /equal /greater /question
+% 0x40
+ /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
+% 0x50
+ /P /Q /R /S /T /U /V /W
+ /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+% 0x60
+ /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
+% 0x70
+ /p /q /r /s /t /u /v /w
+ /x /y /z /braceleft /bar /braceright /asciitilde
+ /.notdef % rubout; ASCII ends
+% 0x80
+ /.notdef /.notdef /quotesinglbase /florin
+ /quotedblbase /ellipsis /dagger /daggerdbl
+ /circumflex /perthousand /Scaron /guilsinglleft
+ /OE /.notdef /.notdef /.notdef
+% 0x90
+ /.notdef /.notdef /.notdef /quotedblleft
+ /quotedblright /bullet /endash /emdash
+ /tilde /trademark /scaron /guilsinglright
+ /oe /.notdef /.notdef /Ydieresis
+% 0xA0
+ /.notdef % nobreakspace
+ /exclamdown /cent /sterling
+ /currency /yen /brokenbar /section
+ /dieresis /copyright /ordfeminine /guillemotleft
+ /logicalnot
+ /hyphen % Y&Y (also at 45); Windows' softhyphen
+ /registered
+ /macron
+% 0xD0
+ /degree /plusminus /twosuperior /threesuperior
+ /acute /mu /paragraph /periodcentered
+ /cedilla /onesuperior /ordmasculine /guillemotright
+ /onequarter /onehalf /threequarters /questiondown
+% 0xC0
+ /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis
+ /Igrave /Iacute /Icircumflex /Idieresis
+% 0xD0
+ /Eth /Ntilde /Ograve /Oacute
+ /Ocircumflex /Otilde /Odieresis /multiply
+ /Oslash /Ugrave /Uacute /Ucircumflex
+ /Udieresis /Yacute /Thorn /germandbls
+% 0xE0
+ /agrave /aacute /acircumflex /atilde
+ /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis
+ /igrave /iacute /icircumflex /idieresis
+% 0xF0
+ /eth /ntilde /ograve /oacute
+ /ocircumflex /otilde /odieresis /divide
+ /oslash /ugrave /uacute /ucircumflex
+ /udieresis /yacute /thorn /ydieresis
+] def
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
+exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
+dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
+ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
+end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
+dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
+roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
+dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
+if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
+def end
+
+%%EndProcSet
+TeXDict begin 39158280 55380996 1000 600 600 (diagnose.dvi)
+@start
+%DVIPSBitmapFont: Fa cmsy10 10 2
+/Fa 2 104 df<15FE1407141FEC7FC0ECFE00495AEB03F0A2495AB3A8495AA2495A49C7
+FC13FEEA07FCEAFFF0138013F0EA07FCC67E133F6D7E6D7EA26D7EB3A86D7EA2EB01FC6D
+7EEC7FC0EC1FFE140714001F537BBD2A>102 D<127EEAFFE013F8EA07FEC67EEB3F806D
+7E130F6D7EB3A86D7EA26D7E6D7E147FEC3FC0EC0FFE1403140FEC3FC0EC7F0014FC495A
+495AA2495AB3A8495A131F495A01FFC7FCEA07FEEAFFF813E0007EC8FC1F537BBD2A>I
+E
+%EndDVIPSBitmapFont
+/Fb 135[60 3[60 60 3[60 60 2[60 1[60 1[60 1[60 1[60 1[60
+4[60 2[60 4[60 3[60 1[60 60 8[60 68[{TeXBase1Encoding ReEncodeFont}18
+99.6264 /Courier-Bold rf /Fc 203[50 50 50 50 2[25 46[{
+TeXBase1Encoding ReEncodeFont}5 99.6264 /Times-Bold rf
+/Fd 130[38 1[38 1[38 38 1[38 38 38 38 38 38 38 38 38
+38 38 38 1[38 38 38 38 38 38 38 38 38 4[38 2[38 1[38
+38 1[38 38 38 1[38 1[38 38 3[38 4[38 38 1[38 3[38 11[38
+2[38 1[38 6[38 3[38 33[{.85 ExtendFont TeXBase1Encoding ReEncodeFont}45
+74.7198 /Courier rf /Ff 140[72 3[72 72 4[72 1[72 1[72
+72 2[72 97[{TeXBase1Encoding ReEncodeFont}8 119.552 /Courier-Bold
+rf /Fg 190[44 65[{TeXBase1Encoding ReEncodeFont}1 61.4362
+/Times-Roman rf /Fh 134[42 42 3[42 42 42 2[42 42 42 42
+42 1[42 1[42 42 42 42 42 1[42 4[42 2[42 4[42 3[42 1[42
+42 3[42 2[42 42 42 21[42 42 45[{
+.85 ExtendFont TeXBase1Encoding ReEncodeFont}29 83.022
+/Courier rf /Fi 154[36 101[{}1 83.022 /Symbol rf /Fj
+134[42 42 60 42 42 23 32 28 42 42 42 42 65 23 42 1[23
+42 42 28 37 42 37 42 37 7[60 60 2[60 51 3[46 1[60 1[51
+2[28 1[60 46 51 60 1[55 60 5[23 23 5[42 42 42 42 2[21
+28 21 2[28 28 28 36[46 2[{TeXBase1Encoding ReEncodeFont}51
+83.022 /Times-Roman rf /Fk 140[50 3[50 50 4[50 1[50 1[50
+50 2[50 97[{TeXBase1Encoding ReEncodeFont}8 83.022 /Courier-Bold
+rf /Fl 135[42 2[46 28 32 37 1[46 42 46 69 23 46 1[23
+46 42 1[37 46 37 1[42 12[55 46 2[51 3[55 2[32 3[55 16[42
+42 42 42 49[{TeXBase1Encoding ReEncodeFont}28 83.022
+/Times-Bold rf /Fm 135[60 2[66 40 47 53 1[66 60 66 100
+33 66 1[33 66 60 1[53 66 53 1[60 12[80 66 2[73 3[80 2[47
+3[80 1[86 14[60 60 60 60 49[{TeXBase1Encoding ReEncodeFont}29
+119.552 /Times-Bold rf /Fn 133[51 4[51 51 1[51 2[51 51
+1[51 2[51 2[51 51 51 51 51 51 32[51 17[51 51 45[{
+.85 ExtendFont TeXBase1Encoding ReEncodeFont}17 99.6264
+/Courier rf /Fp 137[50 1[28 1[33 1[50 50 2[28 2[28 50
+1[33 44 21[72 11[66 1[72 14[50 50 50 3[25 44[{
+TeXBase1Encoding ReEncodeFont}17 99.6264 /Times-Roman
+rf /Fq 134[73 4[73 73 3[73 73 4[73 1[73 1[73 73 2[73
+50[73 46[{.85 ExtendFont TeXBase1Encoding ReEncodeFont}11
+143.462 /Courier rf /Fs 136[104 72 1[40 56 48 2[72 72
+1[40 2[40 72 72 1[64 1[64 1[64 23[48 4[104 17[72 1[72
+1[36 46[{TeXBase1Encoding ReEncodeFont}19 143.462 /Times-Roman
+rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%PaperSize: A4
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 1255 880 a Fs(Installation)33 b(Diagnostics)h(with)1305
+1063 y Fq(diagnose.sty)k Fs(v)n(ersion)c(0.2)1835 1303
+y Fp(Oli)n(v)o(er)24 b(Corf)n(f)1470 1420 y Fn
+(corff@zedat.fu-berlin.de)1749 1614 y Fp(April)g(10th,)g(2001)606
+1977 y Fm(Contents)606 2163 y Fl(1)83 b(Intr)o(oduction)2329
+b(1)606 2345 y(2)83 b(The)21 b Fk(diagnose)e Fl(P)o(ackage)1907
+b(2)731 2445 y Fj(2.1)86 b Fh(\\PackageDiagnostics)28
+b Fj(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
+(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)125 b(2)731
+2544 y(2.2)86 b Fh(\\TokenDiagnostics)49 b Fj(.)42 b(.)f(.)g(.)g(.)h(.)
+f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g
+(.)h(.)f(.)g(.)g(.)125 b(2)731 2644 y(2.3)86 b Fh(\\TextMessageYes)71
+b Fj(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
+(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)125
+b(2)731 2744 y(2.4)86 b Fh(\\TextMessageNo)51 b Fj(.)41
+b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
+(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)125 b(3)606
+2926 y Fl(3)83 b(Examples)2435 b(3)606 3109 y(4)83 b(Legal)20
+b(Status)2340 b(3)606 3389 y Fm(1)119 b(Intr)n(oduction)606
+3575 y Fj(Lar)o(ge)19 b(L)840 3561 y Fg(A)872 3575 y
+Fj(T)909 3593 y(E)949 3575 y(X)12 b(2)1063 3588 y Fi(e)1124
+3575 y Fj(packages)18 b(with)i(e)o(xtensi)n(v)o(e)f(functionality)e
+(are)j(ideally)g(written)f(with)h(the)g(support)606 3674
+y(of)n(fered)29 b(by)h(the)h(L)1143 3660 y Fg(A)1175
+3674 y Fj(T)1212 3693 y(E)1252 3674 y(X)12 b(2)1366 3687
+y Fi(e)1438 3674 y Fj(installation)30 b(in)h(mind)f(as)i(it)g(does)e
+(not)h(mak)o(e)f(sense)h(to)g(rein)m(v)o(ent)e(the)606
+3774 y(wheel)d(or)f(cop)o(y)g(code)g(from)g(other)g(packages.)40
+b(If)26 b(a)g(package)e(mak)o(es)i(use)g(of)f(other)g(packages)g(in)606
+3874 y(the)d(system)g(there)g(should)f(be)h(a)h(means)f(to)g(test)h
+(for)e(the)h(presence)g(of)f(the)h(required)f(package,)g(or)g(a)606
+3973 y(required)d(tok)o(en.)731 4073 y(Depending)h(on)h(the)i(result)f
+(of)g(this)g(test,)h(se)n(v)o(eral)f(situations)g(are)g(possible.)28
+b(Either)20 b(the)h(calling)606 4173 y(package)g(f)o(ails)j(completely)
+-5 b(,)21 b(or)h(f)o(ails)i(to)f(pro)o(vide)d(the)j(intended)e(service)
+h(in)h(its)h(full)f(scope,)f(or)h(has)606 4272 y(to)d(check)f(for)g
+(some)h(alternati)n(v)o(e.)j(In)d(an)o(y)e(case,)j(an)e(informati)n(v)o
+(e)f(message)h(should)g(be)h(written)f(into)606 4372
+y(the)h(log)g(\002le)h(and)f(perhaps)f(also)h(into)g(the)g(te)o(xt)g
+(document.)731 4471 y(T)768 4490 y(E)808 4471 y(X)31
+b(and)g(L)1072 4457 y Fg(A)1104 4471 y Fj(T)1141 4490
+y(E)1181 4471 y(X)12 b(2)1295 4484 y Fi(e)1367 4471 y
+Fj(pro)o(vide)29 b(basic)i(functionality)e(for)h(testing)h(the)g(e)o
+(xistence)g(of)f(\002les)i(and)606 4571 y(tok)o(ens;)20
+b(this)h(package)d(goes)i(a)h(step)f(further)f(and)h(pro)o(vides)e
+(mechanisms)h(for)h(informing)e(the)i(soft-)606 4671
+y(w)o(are)g(and)g(the)g(user)g(about)f(a)i(detected)e(condition.)731
+4770 y(Besides)26 b(pro)o(viding)c(a)j(simple)g(mechanism)f(for)h
+(repeated)e(references)h(to)h(the)g(e)o(xistence)g(of)f(a)606
+4870 y(\002le)f(or)f(tok)o(en,)f(the)h(other)g(important)e(application)
+h(is)i(for)e(checking)g(whether)g(a)i(comple)o(x)d(applica-)606
+4970 y(tion)27 b(can)f(be)h(used)g(immediately)e(after)i(installing)f
+(or)h(whether)e(it)j(requires)e(additional)f(softw)o(are)606
+5069 y(to)g(be)h(installed.)39 b(F)o(or)25 b(this)h(purpose,)e(L)1760
+5055 y Fg(A)1792 5069 y Fj(T)1829 5088 y(E)1869 5069
+y(X)i(packages)e(can)h(no)n(w)g(be)g(accompanied)e(by)h(a)i(simple)606
+5169 y(te)o(xt)21 b(document)f(which,)g(when)h(compiled,)f(checks)h
+(the)g(user')-5 b(s)22 b(en)m(vironment)c(and)j(mak)o(es)g(sugges-)606
+5268 y(tions)27 b(about)f(missing)h(softw)o(are,)g(if)g(necessary)-5
+b(.)44 b(An)27 b(e)o(xample)e(of)i(this)g(idea)g(is)h(gi)n(v)o(en)d(in)
+i(the)g(\002le)606 5368 y Fh(mls-diag.tex)p Fj(.)2059
+5662 y(1)p eop
+%%Page: 2 2
+2 1 bop 606 531 a Fm(2)119 b(The)31 b Ff(diagnose)c Fm(P)o(ackage)606
+717 y Fj(The)20 b Fh(diagnose)j Fj(package)c(is)i(included)e(with)h
+(the)h(usual)606 875 y Fd(\\usepackage{diagnose})606
+1041 y Fj(statement.)k(There)19 b(are)h(no)g(options)f(at)i(present.)j
+(The)c(four)f(commands)g(of)n(fered)f(are:)710 1207 y(1.)41
+b Fh(\\PackageDiagnostics)710 1373 y Fj(2.)g Fh(\\TokenDiagnostics)710
+1539 y Fj(3.)g Fh(\\TextMessageYes)710 1705 y Fj(4.)g
+Fh(\\TextMessageNo)606 1943 y Fc(2.1)99 b Fb(\\PackageDiagnostics)606
+2090 y Fd(\\PackageDiagnostics{})40 b(\045)f(Tested)f(package)1330
+2181 y({})g(\045)h(Associated)g(counter)1330 2273 y({})f(\045)h
+(message)f(if)h(file)f(available)1330 2364 y({})g(\045)h(message)f(if)h
+(file)f(not)h(available)731 2546 y Fj(This)16 b(command)f(v)o
+(eri\002es)h(whether)g(a)h(\002le)g(is)h(a)n(v)n(ailable)e(within)g
+(the)h(T)2733 2565 y(E)2773 2546 y(X)g(directory)e(structure.)23
+b(It)606 2646 y(is)e(based)f(on)g(the)h(L)1140 2632 y
+Fg(A)1172 2646 y Fj(T)1209 2665 y(E)1249 2646 y(X)12
+b(2)1363 2659 y Fi(e)1424 2646 y Fj(command)19 b Fh(\\IfFileExists)p
+Fa(fg)24 b Fj(and)c(of)n(fers)f(the)i(possibility)f(to)g(create)606
+2746 y(a)27 b(counter)e(which)h(is)h(associated)g(with)f(the)h(e)o
+(xistence)f(of)g(the)g(requested)f(\002le.)45 b(The)26
+b(counter)f(can)606 2845 y(then)18 b(be)h(used)f(throughout)e(the)i
+(softw)o(are)g(without)g(additional)g(calls)h(of)f Fh(\\IfFileExists)p
+Fa(fg)p Fj(.)29 b(T)-7 b(w)o(o)606 2945 y(message)21
+b(te)o(xts)g(can)g(be)g(gi)n(v)o(en;)f(one)h(will)h(be)f(printed)e(if)j
+(the)f(\002le)h(e)o(xists,)f(the)g(other)f(will)i(be)f(printed)606
+3045 y(if)g(the)f(\002le)h(is)g(absent.)731 3144 y(By)31
+b(def)o(ault)g(the)g(message)g(te)o(xts)h(appear)e(in)h(the)g(log)g
+(\002le)h(and)f(the)g(terminal)g(output)f(of)h(the)606
+3244 y(running)d(caller)j(program;)i(additionally)c(it)i(is)h(possible)
+e(to)h(ha)n(v)o(e)f(the)g(messages)h(appear)e(in)i(the)606
+3344 y(output)19 b(te)o(xt)h(of)g(the)g(document.)606
+3581 y Fc(2.2)99 b Fb(\\TokenDiagnostics)606 3729 y Fd
+(\\TokenDiagnostics{})40 b(\045)e(Tested)h(token)1254
+3820 y({})f(\045)g(Associated)i(counter)1254 3911 y({})e(\045)g
+(message)h(if)g(token)f(available)1254 4002 y({})g(\045)g(message)h(if)
+g(token)f(not)h(available)731 4185 y Fj(This)22 b(command)f(v)o
+(eri\002es)h(whether)f(a)i(tok)o(en)f(\(a)g(command)f(sequence,)g
+(etc.\))32 b(is)23 b(kno)n(wn)e(to)i(the)606 4285 y(system.)36
+b(Lik)o(e)24 b Fh(\\PackageDiagnostics)31 b Fj(it)24
+b(accepts)g(an)g(associated)f(counter)g(and)g(tw)o(o)h(message)606
+4384 y(te)o(xts)c(as)h(ar)o(guments.)606 4622 y Fc(2.3)99
+b Fb(\\TextMessageYes)606 4778 y Fj(By)18 b(def)o(ault,)e(messages)h
+(generated)f(by)g(the)h(tw)o(o)h(diagnostics)e(commands)f(appear)h
+(only)g(in)i(terminal)606 4877 y(output)25 b(and)h(log)g(\002les.)44
+b(If)26 b(the)g(messages)h(shall)f(also)h(be)f(displayed)f(in)i(the)f
+(output)f(te)o(xt)h(then)g(the)606 4977 y(command)606
+5135 y Fd(\\TextMessageYes)606 5301 y Fj(is)20 b(to)f(be)g(used.)24
+b(It)19 b(is)h(not)e(follo)n(wed)g(by)g(an)o(y)g(ar)o(gument.)k(By)d
+(def)o(ault,)g(message)f(te)o(xts)h(do)g(not)f(appear)606
+5400 y(in)i(the)h(output)e(te)o(xt,)g(only)h(in)g(log)g(\002les)h(and)f
+(terminal)f(output.)2059 5662 y(2)p eop
+%%Page: 3 3
+3 2 bop 606 531 a Fc(2.4)99 b Fb(\\TextMessageNo)606
+687 y Fj(If)30 b(output)f(of)g(diagnostics)h(messages)g(to)g(the)g
+(main)f(te)o(xt)h(had)g(been)f(enabled)g(before,)h(it)h(can)f(be)606
+787 y(disabled)20 b(with)g(the)g(command)606 944 y Fd(\\TextMessageNo)
+606 1110 y Fj(which)g(happens)f(to)h(be)g(the)g(def)o(ault)g(of)g(the)g
+(diagnostics)f(package.)606 1391 y Fm(3)119 b(Examples)606
+1576 y Fj(T)-7 b(w)o(o)29 b(e)o(xamples)f(are)g(gi)n(v)o(en)g(here.)50
+b(First)29 b(the)g(usage)f(of)g(the)h(package)e(diagnostics)h(command)f
+(is)606 1676 y(sho)n(wn,)16 b(and,)g(in)g(a)h(separate)e(\002le,)j(the)
+e(reader)f(is)i(in)m(vited)e(to)h(compile)f(the)h(accompan)o(ying)d
+(document)606 1775 y Fh(mls-diag.tex)25 b Fj(which)20
+b(sho)n(ws)g(a)g(real-life)g(application)f(of)h Fh(diagnose.sty)p
+Fj(.)606 1950 y Fd(\\PackageDiagnostics{rotating.sty})42
+b(\045)c(Tested)h(package)644 2041 y({RotatingAvailable})h(\045)f
+(Associated)g(counter)644 2132 y({Vertical)g(text)g(possible!})g(\045)f
+(message)h(if)f(file)h(available)644 2224 y({rotating.sty)h(not)e
+(found,)h(no)f(vertical)h(text!})g(\045)f(message)h(if)f(not)606
+2406 y(\\ifnum\\theRotatingAvailable=1)911 2498 y(You)g(can)h(use)f
+(vertical)h(text)g(in)f(your)h(documents.)g(No)f(further)911
+2589 y(measure)h(is)f(required.)606 2680 y(\\else)911
+2772 y(Without)h(the)f(\\texttt{rotating.sty})j(package)d(vertical)h
+(text)911 2863 y(cannot)g(be)f(typeset.)h(If)f(you)h(need)f(this)h
+(option,)g(then)f(access)911 2954 y(CTAN)g(and)h(install)g
+(\\texttt{rotating.sty})h(on)e(your)h(system.)911 3046
+y(Make)f(sure)h(you)f(can)h(process)g(PostScript)g(output.)606
+3137 y(\\fi)731 3320 y Fj(The)44 b(actual)i(output)d(of)i(this)h
+(command)d(sequence)h(will)i(depend)e(on)h(the)g(presence)f(of)606
+3419 y Fh(rotating.sty)25 b Fj(on)20 b(the)g(system)g(where)g(this)h
+(source)e(\002le)i(is)g(compiled:)814 3585 y(Y)-9 b(ou)19
+b(can)g(use)h(v)o(ertical)f(te)o(xt)g(in)h(your)e(documents.)23
+b(No)d(further)e(measure)h(is)h(required.)731 3751 y(Y)-9
+b(ou)31 b(can)i(also)f(see)h(that)g(the)f(log)g(\002le)h(and)f(the)h
+(terminal)e(output)g(contain)h(the)g(appropriate)606
+3851 y(message.)606 4131 y Fm(4)119 b(Legal)30 b(Status)606
+4317 y Fj(This)20 b(softw)o(are)g(is)h(placed)f(under)f(the)h(GPL.)g
+(Usual)h(disclaimers)e(apply)-5 b(.)731 4416 y(As)25
+b(this)g(softw)o(are)g(tool)f(is)i(still)f(under)f(de)n(v)o(elopment,)e
+(suggestions)i(on)g(ho)n(w)h(to)f(impro)o(v)o(e)f(the)606
+4516 y(usability)d(and)f(v)o(ersatility)h(of)g(this)h(package)d(are)j
+(highly)e(appreciated.)2059 5662 y(3)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/macros/latex/contrib/diagnose/doc/diagnose.tex b/macros/latex/contrib/diagnose/doc/diagnose.tex
new file mode 100644
index 0000000000..ee3d325708
--- /dev/null
+++ b/macros/latex/contrib/diagnose/doc/diagnose.tex
@@ -0,0 +1,166 @@
+\documentclass{ltxdoc}
+\usepackage{diagnose}
+\title{Installation Diagnostics with\\\texttt{diagnose.sty} version 0.2}
+\author{Oliver Corff\\\texttt{corff@zedat.fu-berlin.de}}
+\date{April 10th, 2001}
+
+\begin{document}
+\maketitle
+\tableofcontents
+\section{Introduction}
+
+Large \LaTeXe\ packages with extensive functionality are ideally
+written with the support offered by the \LaTeXe\ installation in
+mind as it does not make sense to reinvent the wheel or copy code
+from other packages. If a package makes use of other packages in
+the system there should be a means to test for the presence of
+the required package, or a required token.
+
+Depending on the result of this test, several situations are
+possible. Either the calling package fails completely, or fails
+to provide the intended service in its full scope, or has to check
+for some alternative. In any case, an informative message should
+be written into the log file and perhaps also into the text document.
+
+\TeX\ and \LaTeXe\ provide basic functionality for testing the
+existence of files and tokens; this package goes a step further
+and provides mechanisms for informing the software and the user
+about a detected condition.
+
+Besides providing a simple mechanism for repeated references to
+the existence of a file or token,
+the other important application is for checking whether a
+complex application can be used immediately after installing or
+whether it requires additional software to be installed. For this
+purpose, \LaTeX\ packages can now be accompanied by a simple text
+document which, when compiled, checks the user's environment and
+makes suggestions about missing software, if necessary. An example
+of this idea is given in the file \texttt{mls-diag.tex}.
+
+\section{The \texttt{diagnose} Package}
+
+The \texttt{diagnose} package is included with the usual
+\begin{verbatim}
+\usepackage{diagnose}
+\end{verbatim}
+statement. There are no options at present.
+The four commands offered are:
+\begin{enumerate}
+ \item \texttt{\char92 PackageDiagnostics}
+ \item \texttt{\char92 TokenDiagnostics}
+ \item \texttt{\char92 TextMessageYes}
+ \item \texttt{\char92 TextMessageNo}
+\end{enumerate}
+
+\subsection{\texttt{\char92 PackageDiagnostics}}
+
+\begin{verbatim}
+\PackageDiagnostics{} % Tested package
+ {} % Associated counter
+ {} % message if file available
+ {} % message if file not available
+\end{verbatim}
+
+This command verifies whether a file is available within the \TeX\
+directory structure. It is based on the \LaTeXe\ command
+\texttt{\char92 IfFileExists\{\}} and offers the possibility to
+create a counter which is associated with the existence of the
+requested file. The counter can then be used throughout the software
+without additional calls of \texttt{\char92 IfFileExists\{\}}.
+Two message texts can be given; one will be printed if the file
+exists, the other will be printed if the file is absent.
+
+By default the message texts appear in the log file and the terminal
+output of the running caller program; additionally it is possible to
+have the messages appear in the output text of the document.
+
+\subsection{\texttt{\char92 TokenDiagnostics}}
+
+\begin{verbatim}
+\TokenDiagnostics{} % Tested token
+ {} % Associated counter
+ {} % message if token available
+ {} % message if token not available
+\end{verbatim}
+
+This command verifies whether a token (a command sequence, etc.)
+is known to the system. Like \texttt{\char92 PackageDiagnostics}
+it accepts an associated counter and two message texts as arguments.
+
+\subsection{\texttt{\char92 TextMessageYes}}
+
+By default, messages generated by the two diagnostics commands
+appear only in terminal output and log files. If the messages shall
+also be displayed in the output text then the command
+\begin{verbatim}
+\TextMessageYes
+\end{verbatim}
+is to be used. It is not followed by any argument. By default,
+message texts do not appear in the output text, only in log files
+and terminal output.
+
+\subsection{\texttt{\char92 TextMessageNo}}
+
+If output of diagnostics messages to the main text had been enabled
+before, it can be disabled with the command
+\begin{verbatim}
+\TextMessageNo
+\end{verbatim}
+which happens to be the default of the diagnostics package.
+
+\section{Examples}
+
+Two examples are given here. First the usage of the package
+diagnostics command is shown, and, in a separate file, the
+reader is invited to compile the accompanying document
+\texttt{mls-diag.tex} which shows a real-life application of
+\texttt{diagnose.sty}.
+
+\begin{verbatim}
+\PackageDiagnostics{rotating.sty} % Tested package
+ {RotatingAvailable} % Associated counter
+ {Vertical text possible!} % message if file available
+ {rotating.sty not found, no vertical text!} % message if not
+
+\ifnum\theRotatingAvailable=1
+ You can use vertical text in your documents. No further
+ measure is required.
+\else
+ Without the \texttt{rotating.sty} package vertical text
+ cannot be typeset. If you need this option, then access
+ CTAN and install \texttt{rotating.sty} on your system.
+ Make sure you can process PostScript output.
+\fi
+\end{verbatim}
+
+The actual output of this command sequence will depend on the
+presence of \texttt{rotating.sty} on the system where this source
+file is compiled:
+\begin{quote}
+\PackageDiagnostics{rotating.sty} % Tested package
+ {RotatingAvailable} % Associated counter
+ {Vertical text possible!} % message if file available
+ {rotating.sty not found, no vertical text!} % message if not
+
+\ifnum\theRotatingAvailable=1
+ You can use vertical text in your documents. No further
+ measure is required.
+\else
+ Without the \texttt{rotating.sty} package vertical text
+ cannot be typeset. If you need this option, then access
+ CTAN and install \texttt{rotating.sty} on your system.
+ Make sure you can process PostScript output.
+\fi
+\end{quote}
+
+You can also see that the log file and the terminal output contain
+the appropriate message.
+
+\section{Legal Status}
+
+This software is placed under the GPL. Usual disclaimers apply.
+
+As this software tool is still under development, suggestions on how
+to improve the usability and versatility of this package are highly
+appreciated.
+\end{document}
diff --git a/macros/latex/contrib/diagnose/doc/mls-diag.tex b/macros/latex/contrib/diagnose/doc/mls-diag.tex
new file mode 100644
index 0000000000..e40c27f6ca
--- /dev/null
+++ b/macros/latex/contrib/diagnose/doc/mls-diag.tex
@@ -0,0 +1,188 @@
+\documentclass[a4paper,11pt]{article}
+\usepackage{diagnose}
+
+\title{Mon\TeX\ Diagnostics:\\
+ System Compatibility Report}
+\author{Oliver Corff}
+
+\begin{document}
+\maketitle
+\begin{abstract}
+ Running \LaTeXe\ on this article will give information
+ on the status of system software necessary for exploiting
+ advanced features of Mon\TeX: RL line orientation, vertical
+ text, extended Cyrillic characters for Kazakh and the
+ text-mode gamma.
+\end{abstract}
+
+\section{Introduction}
+
+Mon\TeX\ relies on numerous functions supplied by the existing
+\LaTeXe\ installation for offering advanced services. Before installing
+Mon\TeX\ it might be interesting to find out which support is offered
+by the system and which additional packages should be supplied in order
+to raise Mon\TeX\ to its complete functionality.
+
+This document will tell you which functionality is really available on
+your system and
+what you should do in case the desired support is missing. Whenever the
+text informs you that something from CTAN (the Comprehensive TeX Archive
+Network) should be installed then you have the choice to obtain the
+required software from CTAN via the Internet or from a CD-ROM with the
+contents of the CTAN site. In short, this will usually be the same source
+from which you obtained Mon\TeX.
+
+
+\section{RL Line Orientation\label{RLSupport}}
+
+If you want to be able to print complete paragraphs of Uighur Mongolian
+texts, and not limit yourself to individual words and phrases, then you
+will most certainly require the correct writing direction for Uighur
+Mongolian which starts at the right end of line rather than the left end,
+as supplied by Implementation Levels III and IV of Mon\TeX.
+Apart from its vertical orientation, Uighur Mongolian is a RL writing
+much like Arab and Hebrew. The RL mechanism is provided by modern
+\LaTeXe\ installations.
+
+\TokenDiagnostics%
+ {\TeXXeTstate} % Token tested for
+ {RLSupportAvailable} % Associated counter
+ {RL Support Available!} % Yes message
+ {RL Support Not Available!} % No! message
+
+\textbf{Your system status}:
+\ifnum\theRLSupportAvailable=1
+ Your system is up to date and provides support for RL writings.
+ No further action is required.
+\else
+ During this \LaTeXe\ run, your system did not reveal that it is
+ capable of typesetting RL writings correctly.
+
+ \textbf{Action required}:
+ Please make sure
+ \marginpar{\Huge!!!}
+ you started \texttt{elatex} instead of \texttt{latex} for calling
+ e-\LaTeXe. If this message persists then you should install a
+ recent \TeX\ distribution from CTAN.
+\fi
+
+
+\section{Vertical Text\label{VerticalText}}
+
+If you want to mix horizontal and vertical text on one page your
+system needs PostScript support. This implies that your \TeX\
+installation can handle insertions of PostScript commands in
+documents (this is done automatically without your interaction);
+it does not imply that you can print the results on your printer
+if your printing equipment is not PostScript-compatible.
+
+\PackageDiagnostics%
+ {rotating.sty} % Package tested for
+ {PostScriptAvailable} % Associated counter
+ {PostScript Support Available!} % Yes message
+ {PostScript Support Not Available!} % No! message
+
+\textbf{Your system status}:
+\ifnum\thePostScriptAvailable=1
+ Your \TeX\ installation can handle vertical text; if your
+ system does not display or print vertical text properly
+ then you should check whether you do have a PostScript
+ printer or interpreter like GhostScript and GhostView.
+\else
+ Your \TeX\ installation cannot handle vertical text.
+
+ \textbf{Action required}:
+ You should either install a \TeX\ system with pre-configured
+ \marginpar{\Huge!!!}
+ PostScript support or should install PostScript support
+ from CTAN.
+\fi
+%
+
+\section{Uighur Mongolian Text Pages}
+
+\textbf{Your system status}:
+\ifnum\theRLSupportAvailable=0
+ Since your system does not offer RL support (see above)
+ %\ref{RLSupport})
+ this section is meaningless and should be skipped.
+\else
+ If you want to put Uighur text in vertical pages which
+ show the proper orientation without physically rotating
+ the paper they are printed on (like in books with a
+ mixture of Uighur Mongolian and Modern Mongolian articles)
+ you must make sure that your installation has so-called
+ landscape orientation support.
+
+ \PackageDiagnostics%
+ {lscape.sty} % Package tested for
+ {LandscapeAvailable} % Associated counter
+ {Mongol Bicig Page Support Available!} % Yes message
+ {Mongol Bicig Page Support Not Available!}% No! message
+
+ \ifnum\theLandscapeAvailable=1
+ Your system has landscape orientation support and
+ does not require any action.
+ \else
+
+ \textbf{Action required}:
+ You should install landscape orientation support
+ (usually this is done together with support for
+ vertical text material, see above \ref{VerticalText}).
+ \fi
+\fi
+
+
+\section{Extended Cyrillic Support}
+
+Beyond the basic Cyrillic support which is provided by Mon\TeX\ for
+writing Modern Xalx Mongolian, Buryat and last but not least, Russian,
+Kazakh requires additional Cyrillic characters which are not supplied
+by Mon\TeX.
+
+\PackageDiagnostics%
+ {x2enc.def} % Package tested for
+ {LHCyrillicAvailable} % Associated counter
+ {Cyrillic Support for Kazakh available!}% Yes message
+ {Cyrillic Support for Kazakh Not Available!}% No! message
+
+\textbf{Your system status}:
+\ifnum\theLHCyrillicAvailable=1
+ Since your installation offers the full range of extended
+ Cyrillic characters, it is possible to write Kazakh on your
+ system. No further measures are required.
+\else
+ Your installation does not offer the extended Cyrillic character
+ set necessary for writing Kazakh. You should install the LH
+ Cyrillic package from CTAN. Even without this support, your
+ Mon\TeX\ package as such is fully functional.
+\fi
+
+\section{Gamma Support}
+
+The Greek gamma $\gamma$ is used in transliterations for Uighur
+Mongolian Script. Without support of Modern Greek fonts, only
+the slim, italic $\gamma$ used in mathematics is available.
+If you want to match its typeface with all Latin and Cyrillic
+letters used in Mon\TeX\ then you should make sure the Modern
+Greek fonts are installed.
+%
+\PackageDiagnostics%
+ {lgrenc.def} % Package tested for
+ {GreekAvailable} % Associated counter
+ {Greek Support for Gammas available!}% Yes message
+ {Greek Support for Gammas Not Available!}% No! message
+
+\textbf{Your system status}:
+\ifnum\theGreekAvailable=1
+ On this system, the Modern Greek fonts \textit{are} installed.
+ There is no further action necessary.
+\else
+ Your system does not feature the Modern Greek fonts.
+
+ \textbf{Action required}:
+ If you use transliterations extensively and need a matching
+ typeface for the $\gamma$ then you should get the Modern
+ Greek fonts from CTAN and install them now.
+\fi
+\end{document}
diff --git a/macros/latex/contrib/diagnose/texinput/diagnose.sty b/macros/latex/contrib/diagnose/texinput/diagnose.sty
new file mode 100644
index 0000000000..e9a6e414a4
--- /dev/null
+++ b/macros/latex/contrib/diagnose/texinput/diagnose.sty
@@ -0,0 +1,59 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% File: diagnose.sty
+% Author: Oliver Corff
+% Date: April 10, 2001
+% Version: 0.2
+% Copyright: Ulaanbaatar, Beijing, Berlin, Shanghai
+%
+% Description: Diagnostic Functions
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% ------------------- identification -------------------
+\ProvidesFile{diagnose.sty}
+ [2000/11/01 v0.2 Diagnostic Utility]
+
+\newif\ifmessagetext
+
+\newcommand{\TextMessageNo}{
+ \messagetextfalse
+}
+
+\newcommand{\TextMessageYes}{
+ \messagetexttrue
+}
+
+\newcommand{\TextMessage}[1]{%
+ \ifmessagetext %
+ #1%
+ \fi %
+}
+
+\newcommand{\TokenDiagnostics}[4]{%
+ \newcounter{#2}% % Counter name
+ \ifx#1\undefined % Token name
+ \setcounter{#2}{0}% % `No' assignment to counter
+ \TextMessage{#4}% % `No' text in document
+ \message{^^J#4^^J^^J}% % `No' text in message and log file
+ \else %
+ \setcounter{#2}{1}% % `Yes' assignment to counter
+ \TextMessage{#3}% % `Yes' text in document
+ \message{^^J#3^^J^^J}% % `Yes' text in message and log file
+ \fi %
+}
+
+\newcommand{\PackageDiagnostics}[4]{%
+ \newcounter{#2}% % Counter name
+ \IfFileExists{#1}{% % Package name
+ \setcounter{#2}{1}% % `Yes' assignment to counter
+ \TextMessage{#3}% % `Yes' text in document
+ \message{^^J#3^^J^^J}% % `Yes' text in message and log file
+ } %
+ {\setcounter{#2}{0}% % `No' assignment to counter
+ \TextMessage{#4}% % `No' text in document
+ \message{^^J#4^^J^^J}% % `No' text in message and log file
+ }
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\TextMessageNo
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput % End of package diagnose.sty