summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/relenc/reldemo.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/relenc/reldemo.tex')
-rw-r--r--Master/texmf-dist/doc/latex/relenc/reldemo.tex440
1 files changed, 440 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/relenc/reldemo.tex b/Master/texmf-dist/doc/latex/relenc/reldemo.tex
new file mode 100644
index 00000000000..c918a900308
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/relenc/reldemo.tex
@@ -0,0 +1,440 @@
+\documentclass{article}
+
+\usepackage{relenc}
+\usepackage[T1R,OT1]{fontenc}
+ % ot1enc.def is inputed since I still want OT1 to be the default
+ % encoding in this document.
+
+
+\makeatletter
+
+% General font parameters:
+\newdimen\demofontem \newdimen\demofontex \newskip\demofontspace
+
+ % This macro sets the font parameters for the current font, using
+ % default values if the \fontdimen values are too strange (probably
+ % because the font is a raw font not meant for typesetting).
+\def\setfontparams{%
+% \sbox{\letterbox}{a}% Make sure the font really is loaded (?)
+ \ifdim 0.1pt<\fontdimen6\font % Quad width
+ \setlength\demofontem{1em}%
+ \else
+ \demofontem=\f@size\p@
+ \fi
+ \ifdim0.1pt<\fontdimen5\font % x-height
+ \setlength\demofontex{1ex}%
+ \else
+ \demofontex=0.4\demofontem
+ \fi
+ \ifdim0.1pt<\fontdimen2\font % Interword space natural width
+ \setlength\demofontspace{\fontdimen2\font plus\fontdimen3\font
+ minus\fontdimen4\font
+ }%
+ \else
+ \setlength\demofontspace{0.2222\demofontem
+ plus0.1111\demofontem minus0.05555\demofontem
+ }%
+ \fi
+}
+
+% Generating the font table:
+\newcount\slotnbr \newcount\rownbr \newcount\colnbr
+\newdimen\thinlinesize \newdimen\thicklinesize \newdimen\squarewidth
+\newsavebox\letterbox
+\setlength\thinlinesize{0.24pt}
+\setlength\thicklinesize{0.75pt}
+\mathchardef\tablecolumns=16
+
+\def\linespreadstrut{\vrule height2.5\demofontex depth1.5\demofontex width0pt}
+\def\emptyrowrule{\rlap{\vrule height2.5\demofontex depth-2\demofontex
+ width\thinlinesize}\vrule height-1\demofontex depth1.5\demofontex
+ width\thinlinesize
+}
+\def\stdtext#1{{\normalfont#1}}
+\def\tttext#1{{\normalfont\ttfamily#1}}
+ % Used on things that should not be typeset in the demo font.
+
+\def\nextslot{%
+ \sbox{\letterbox}{\unhbox\letterbox
+ \hb@xt@\squarewidth{\hss\linespreadstrut\char\slotnbr\hss}%
+ \vrule width\thinlinesize
+ }%
+ \global\advance \slotnbr \@ne
+}
+\def\rowheading{%
+ \hb@xt@1.5\demofontem{\hss
+ \linespreadstrut
+ \stdtext{\strut\the\slotnbr}\hskip0.2\demofontem
+ }%
+}
+\def\makebodyrow{\colnbr=\z@
+ \sbox{\letterbox}{%
+ \rowheading
+ \vrule width\thicklinesize
+ }%
+ \loop
+ \nextslot
+ \advance \colnbr \@ne
+ \ifnum \tablecolumns>\colnbr \repeat
+ \box\letterbox
+}
+\def\emptybodyrow{%
+ \hbox{%
+ \sbox\letterbox{%
+ \colnbr=\z@
+ \loop
+ \hskip\squarewidth
+ \advance \colnbr \@ne
+ \ifnum \tablecolumns>\colnbr
+ \vrule width\thinlinesize height\demofontex depth\z@
+ \repeat
+ }%
+ \tabskip=\z@skip
+ \valign{\vfil##\vfil\cr
+ \rowheading\cr
+ \noalign{\vrule width\thicklinesize}%
+ \relax\offinterlineskip
+ \halign{\hfil##\hfil\cr \copy\letterbox\cr
+ \noalign{\vfill}\stdtext{\strut These slots are empty}\cr
+ \noalign{\vfill}\box\letterbox\cr
+ }\cr
+ \noalign{\vrule width\thinlinesize}%
+ \cr
+ }%
+ }%
+ \global\advance \slotnbr \tablecolumns
+}
+\def\bodyrow{%
+ \setbox\letterbox=\hbox{%
+ \colnbr=\z@
+ \penalty\@ne
+ \loop
+ \char\slotnbr
+ \advance \slotnbr \@ne %Note: Non-global advancement
+ \advance \colnbr \@ne
+ \ifnum \tablecolumns>\colnbr \repeat
+ \ifnum \@ne=\lastpenalty % Are all characters in the row missing?
+ \def\next{iffalse}% Yes
+ \else
+ \def\next{iftrue}% No
+ \fi
+ \expandafter
+ }%
+ \csname\next\endcsname % Will be either \iftrue or \iffalse.
+ \makebodyrow
+ \else
+ \emptybodyrow
+ \fi
+ \hrule height\thinlinesize
+}
+\def\toprow{%
+ \colnbr=\z@
+ \sbox{\letterbox}{%
+ \hb@xt@1.5\demofontem{\hss\linespreadstrut}%
+ \vrule width\thicklinesize
+ }%
+ \loop
+ \sbox{\letterbox}{%
+ \unhbox\letterbox
+ \hb@xt@\squarewidth{\hss\linespreadstrut
+ \stdtext{\the\colnbr}\hss
+ }%
+ \vrule width\thinlinesize
+ }%
+ \advance \colnbr \@ne
+ \ifnum \tablecolumns>\colnbr \repeat
+ \box\letterbox
+ \hrule height\thicklinesize
+}
+\def\MakeFontTable{%
+ \medskip
+ \setlength{\squarewidth}{1.6\demofontem}%
+ \hb@xt@\linewidth{\hss
+ \vbox{%
+ \tracinglostchars=\z@
+ \global\slotnbr=\z@
+ \toprow
+ \rownbr=\z@
+ \loop
+ \begingroup\bodyrow\endgroup
+ \advance \rownbr \@ne
+ \ifnum 16>\rownbr \repeat
+ }%
+ \hss
+ }
+ \par\bigskip
+}
+
+
+% Lists of symbols:
+
+% A list of symbols consists of a sequence of \do{<symbol>} units,
+% where <symbol> can be one (or possibly several) of the following:
+% a category 11 or 12 token, such as `a' or `!'; a \chardef control
+% sequence such as `\&'; a LaTeX symbol command such as \textsterling.
+% (You can actually use a lot of stupid things in a <symbol> and still
+% have it work, but don't be surprised if it won't for something
+% that does not fit the above description.)
+
+\newcommand\AddToList[2]{%
+ \relax % Can't hurt.
+ \ifx\relax#1
+ \def#1{\do{#2}}%
+ \else
+ \expandafter\def \expandafter#1\expandafter{#1\do{#2}}%
+ \fi
+}
+
+\def\OTOneBasicLettersListUC{%
+ \do{A}\do{B}\do{C}\do{D}\do{E}\do{F}\do{G}\do{H}\do{I}\do{J}\do{K}%
+ \do{L}\do{M}\do{N}\do{O}\do{P}\do{Q}\do{R}\do{S}\do{T}\do{U}\do{V}%
+ \do{W}\do{X}\do{Y}\do{Z}\do{\AE}\do{\OE}\do{\O}%
+}
+\let\TOneBasicLettersListUC=\OTOneBasicLettersListUC
+\AddToList\TOneBasicLettersListUC{\DH}
+\AddToList\TOneBasicLettersListUC{\DJ}
+\AddToList\TOneBasicLettersListUC{\L}
+\AddToList\TOneBasicLettersListUC{\NG}
+\AddToList\TOneBasicLettersListUC{\SS}
+\AddToList\TOneBasicLettersListUC{\TH}
+
+\def\OTOneBasicLettersListLC{%
+ \do{a}\do{b}\do{c}\do{d}\do{e}\do{f}\do{g}\do{h}\do{i}\do{j}\do{k}%
+ \do{l}\do{m}\do{n}\do{o}\do{p}\do{q}\do{r}\do{s}\do{t}\do{u}\do{v}%
+ \do{w}\do{x}\do{y}\do{z}\do{\ae}\do{\i}\do{\j}\do{\oe}\do{\o}%
+ \do{\ss}%
+}
+\let\TOneBasicLettersListLC=\OTOneBasicLettersListLC
+\AddToList\TOneBasicLettersListLC{\dh}
+\AddToList\TOneBasicLettersListLC{\dj}
+\AddToList\TOneBasicLettersListLC{\l}
+\AddToList\TOneBasicLettersListLC{\ng}
+\AddToList\TOneBasicLettersListLC{\th}
+
+\def\OTOneAccentsList{%
+ \do{\@firstofone}% This is a "no accent" accent.
+ \do{\`}\do{\'}\do{\^}\do{\~}\do{\"}\do{\H}\do{\r}%
+ \do{\v}\do{\u}\do{\=}\do{\.}\do{\b}\do{\c}\do{\d}%
+}
+\let\TOneAccentsList=\OTOneAccentsList
+\AddToList\TOneAccentsList{\k}
+
+\newcommand\ApplyListToList[3]{%
+ % The first list here, which is given as #1, should really be a list
+ % of one-parameter commands. The second list, which should be given
+ % as #2, should be a normal list of symbols. Each command of the first
+ % list is applied to the symbols in the second list. #3 is inserted
+ % after every such application.
+ \def\do##1{{\def\do####1{##1{####1}#3}#2}}%
+ #1%
+}
+
+\newcommand\MakeTOneAccentedTable{%
+ \medskip
+ \ApplyListToList{\TOneAccentsList}{%
+ \TOneBasicLettersListLC\par\TOneBasicLettersListUC\par
+ }{\-}%
+ \bigskip
+}
+\newcommand\MakeOTOneAccentedTable{%
+ \medskip
+ \ApplyListToList{\OTOneAccentsList}{%
+ \OTOneBasicLettersListLC\par\OTOneBasicLettersListUC\par
+ }{\-}%
+ \bigskip
+}
+
+
+\let\TOneLeftGlyphsListLC=\TOneBasicLettersListLC
+\AddToList\TOneLeftGlyphsListLC{ff}
+
+\let\OTOneLeftGlyphsListLC=\OTOneBasicLettersListLC
+\AddToList\OTOneLeftGlyphsListLC{ff}
+
+\newcommand\ListTimesList[3]{%
+ % This "generates" the Cartesian product of two lists: For each \do in
+ % the first list a copy of the second list appears, and for each \do
+ % in the second list the current element from the first list is
+ % inserted. As with \ApplyListToList, #3 is inserted at the end of each
+ % \do from the second list.
+ \def\do##1{{\def\do####1{##1####1#3}#2}}%
+ #1%
+}
+
+\newcommand\MakeTOnePairsTable{%
+ \medskip
+ \ListTimesList{\TOneLeftGlyphsListLC}{\TOneBasicLettersListLC\par}{%
+ \hskip\demofontspace
+ }%
+ \smallskip
+ \ListTimesList{\TOneBasicLettersListUC}{\TOneBasicLettersListLC\par}{%
+ \hskip\demofontspace
+ }%
+ \smallskip
+ \ListTimesList{\TOneBasicLettersListUC}{\TOneBasicLettersListUC\par}{%
+ \hskip\demofontspace
+ }%
+ \bigskip
+}
+
+\newcommand\MakeOTOnePairsTable{%
+ \medskip
+ \ListTimesList{\OTOneLeftGlyphsListLC}{\OTOneBasicLettersListLC\par}{%
+ \hskip\demofontspace
+ }%
+ \smallskip
+ \ListTimesList{\OTOneBasicLettersListUC}{\OTOneBasicLettersListLC\par}{%
+ \hskip\demofontspace
+ }%
+ \smallskip
+ \ListTimesList{\OTOneBasicLettersListUC}{\OTOneBasicLettersListUC\par}{%
+ \hskip\demofontspace
+ }%
+ \bigskip
+}
+
+
+\def\OTOneSymbolsList{\do{\textemdash}\do{\textendash}%
+ \do{\textexclamdown}\do{\textquestiondown}\do{\textquotedblleft}%
+ \do{\textquotedblright}\do{\textquoteleft}\do{\textquoteright}%
+ \do{\textdollar}\do{\textsterling}%
+}
+\let\TOneSymbolsList=\OTOneSymbolsList
+\AddToList\TOneSymbolsList{\guillemotleft}
+\AddToList\TOneSymbolsList{\guillemotright}
+\AddToList\TOneSymbolsList{\guilsinglleft}
+\AddToList\TOneSymbolsList{\guilsinglright}
+\AddToList\TOneSymbolsList{\quotedblbase}
+\AddToList\TOneSymbolsList{\quotesinglbase}
+\AddToList\TOneSymbolsList{\textasciicircum}
+\AddToList\TOneSymbolsList{\textasciitilde}
+\AddToList\TOneSymbolsList{\textbackslash}
+\AddToList\TOneSymbolsList{\textbar}
+\AddToList\TOneSymbolsList{\textbraceleft}
+\AddToList\TOneSymbolsList{\textbraceright}
+\AddToList\TOneSymbolsList{\textcompwordmark}
+\AddToList\TOneSymbolsList{\textgreater}
+\AddToList\TOneSymbolsList{\textless}
+\AddToList\TOneSymbolsList{\textperthousand}
+\AddToList\TOneSymbolsList{\textpertenthousand}
+\AddToList\TOneSymbolsList{\textquotedbl}
+\AddToList\TOneSymbolsList{\textsection}
+\AddToList\TOneSymbolsList{\textunderscore}
+\AddToList\TOneSymbolsList{\textvisiblespace}
+
+
+\newcommand\MakeOTOneSymbolsTable{\MakeSymbolsTable\OTOneSymbolsList}
+\newcommand\MakeTOneSymbolsTable{\MakeSymbolsTable\TOneSymbolsList}
+\newcommand\MakeSymbolsTable[1]{%
+ \begingroup
+ \def\do##1{\tttext{\string##1}&##1\cr}%
+ \tabskip=\hideskip
+ \halign to\linewidth{##\hfil \tabskip=\ht\strutbox&
+ \hfil##\hfil \tabskip=\hideskip\cr
+ \stdtext{\TeX\ code}&\stdtext{Symbol}\cr
+ #1%
+ }%
+ \endgroup
+ \par\bigskip
+}
+
+
+% Combining it all
+
+\newcommand\DemoTOneLaTeXFont[4]{%
+ \vfil\penalty0\vfilneg
+ \markright{\stdtext{Demo of \LaTeX\ font \ttfamily #1/#2/#3/#4}\hss}%
+ \begingroup
+ \usefont{#1}{#2}{#3}{#4}%
+ \setfontparams
+ \noindent\stdtext{\textbf{Font table}}\par
+ \MakeFontTable
+ \noindent\stdtext{\textbf{Accents/letters table}}\par
+ \MakeTOneAccentedTable
+ \noindent\stdtext{\textbf{Pairs tables}}\par
+ \MakeTOnePairsTable
+ \noindent\stdtext{\textbf{Symbols table}}\par
+ \MakeTOneSymbolsTable
+ \ifx \TOneDemoText\@undefined \else
+ \medskip\TOneDemoText\medskip
+ \fi
+ \endgroup
+}
+\newcommand\DemoOTOneLaTeXFont[4]{
+ \vfil\penalty0\vnegfil
+ \markright{\stdtext{Demo of \LaTeX\ font \ttfamily #1/#2/#3/#4}\hss}%
+ \begingroup
+ \usefont{#1}{#2}{#3}{#4}%
+ \setfontparams
+ \noindent\stdtext{\textbf{Font table}}\par
+ \MakeFontTable
+ \noindent\stdtext{\textbf{Accents/letters table}}\par
+ \MakeOTOneAccentedTable
+ \noindent\stdtext{\textbf{Pairs tables}}\par
+ \MakeOTOnePairsTable
+ \noindent\stdtext{\textbf{Symbols table}}\par
+ \MakeOTOneSymbolsTable
+ \ifx \OTOneDemoText\@undefined \else
+ \medskip\OTOneDemoText\medskip
+ \fi
+ \endgroup
+}
+\newcommand\DemoRawTeXFont[1]{\begingroup
+ \font\demofont=#1\relax
+ \demofont
+ \setfontparams
+ \MakeFontTable
+ \endgroup
+}
+
+\makeatother
+
+\pagestyle{myheadings}
+
+\begin{document}
+\errorcontextlines=999\relax
+
+You should at least read Appendix C of the package documentation
+before viewing this example, but if you prefer not to then I must at
+least point out that the fonts in the \texttt{zcm} family are mainly
+\texttt{cmr10} that has been completed with various ``faked''
+characters. As a result, many of the characters does not look very
+good and some look downright ugly, but there is no particular harm in
+that since the \texttt{zcm} fonts are not intended to be used in any
+serious typesetting anyway.
+
+The first font in the \texttt{zcm} family---the \texttt{T1R}\slash
+\texttt{zcm}\slash\texttt{m}\slash\texttt{n} font---has a coding scheme
+identical to that used for fonts in the \texttt{T1} encoding. It
+shows the default setup for the \texttt{T1R} encoding.
+
+The font table shows the contents of each slot. The accents/letters
+table shows the result of the non-accented letters as they are and
+their appearence after having been subjected to each accenting command
+in turn. The pairs tables shows all the ligatures and the symbols
+table finally shows the symbol commands and their effect.
+
+\bigskip
+\DemoTOneLaTeXFont{T1R}{zcm}{m}{n}
+
+The second font in the \texttt{zcm} family---the \texttt{T1R}\slash
+\texttt{zcm}\slash\texttt{m}\slash\texttt{a} font---has four extra
+ligatures: ct, fj, ffj, and st. These appear in the font table at
+positions 128, 130, 131, and 161. Despite the fact that four of the
+characaters that were used for making accented letters in the
+\texttt{T1R}\slash\texttt{zcm}\slash\texttt{m}\slash\texttt{n} font are
+missing however, the accents/letters table for the \texttt{T1R}\slash
+\texttt{zcm}\slash\texttt{m}\slash\texttt{a} font display the same accented
+letters as the ditto table for the \texttt{T1R}\slash\texttt{zcm}\slash
+\texttt{m}\slash\texttt{n} font did. Under the \texttt{T1} encoding,
+the result would instead have been that some of the accented letters
+would incorrectly have been replaced by the ligatures.
+
+The pairs tables show that the four extra ligatures work as ligatures
+and the symbols table looks exactly as for the \texttt{T1R}\slash
+\texttt{zcm}\slash\texttt{m}\slash\texttt{n} font.
+
+\bigskip
+\DemoTOneLaTeXFont{T1R}{zcm}{m}{a}
+
+\end{document}