]> mj.ucw.cz Git - ucwmac.git/commitdiff
split and OFS interface
authorMartin Mares <mj@ucw.cz>
Sat, 25 Sep 2010 15:38:54 +0000 (17:38 +0200)
committerMartin Mares <mj@ucw.cz>
Sat, 9 Oct 2010 11:05:45 +0000 (13:05 +0200)
ucw-ofs.tex [new file with mode: 0644]
ucw-verb.tex [new file with mode: 0644]
ucwmac-test.tex
ucwmac.tex

diff --git a/ucw-ofs.tex b/ucw-ofs.tex
new file mode 100644 (file)
index 0000000..7d33a88
--- /dev/null
@@ -0,0 +1,96 @@
+% The UCW Macro Collection: Interface to OFS (Olsak's Font System)
+% Written by Martin Mares <mj@ucw.cz> in 2010 and placed into public domain
+% -------------------------------------------------------------------------
+
+\ifx\OFSversion\undefined
+\input ofs.tex
+% \detailfontmessages
+\fi
+
+% We extend OFS's default CM family by several fonts: cmb, cmcsc
+
+\ofsputfamlist{^^JUCW:}
+
+\ofsdeclarefamily [CMRomanUCW] {% ------------ Computer Modern Roman (UCW extended version)
+   \loadtextfam cmr\fotenc;%
+                cmbx\fotenc;%
+                cmti\fotenc;%
+                cmbxti\fotenc;\defaultextraenc;%
+   \newvariant8 \sl   (Slanted)     cmsl\fotenc;\defaultextraenc;%
+   \newvariant9 \bxsl (BoldSlanted) cmbxsl\fotenc;\defaultextraenc;%
+   \newvariant a \bo  (BoldNormal)  cmb\fotenc;\defaultextraenc;%
+   \newvariant b \csc (CapsAndSmallCaps)  cmcsc\fotenc;\defaultextraenc;%
+   \modifyenc 8z:csfont;%
+}
+\registerenc: 8z
+
+\registertfm cmb8z     -      csb10
+\registertfm cmb8z  0pt-6pt   csb5
+\registertfm cmb8z  6pt-7pt   csb6
+\registertfm cmb8z  7pt-8pt   csb7
+\registertfm cmb8z  8pt-9pt   csb8
+\registertfm cmb8z  9pt-10pt  csb9
+\registertfm cmb8z  10pt-12pt csb10
+\registertfm cmb8z  12pt-17pt csb12
+\registertfm cmb8z  17pt-*    csb17
+
+\registertfm cmcsc8z     -      cscsc10
+\registertfm cmcsc8z  0pt-6pt   cscsc5
+\registertfm cmcsc8z  6pt-7pt   cscsc6
+\registertfm cmcsc8z  7pt-8pt   cscsc7
+\registertfm cmcsc8z  8pt-9pt   cscsc8
+\registertfm cmcsc8z  9pt-10pt  cscsc9
+\registertfm cmcsc8z  10pt-12pt cscsc10
+\registertfm cmcsc8z  12pt-17pt cscsc12
+\registertfm cmcsc8z  17pt-*    cscsc17
+
+\ofsdeclarefamily [BlackboardBold] {%
+   \loadtextfam bbm;%
+               ;%
+               ;%
+               ;\defaultextraenc;%
+}
+
+\registertfm bbm     -      bbm10
+\registertfm bbm  0pt-6pt   bbm5
+\registertfm bbm  6pt-7pt   bbm6
+\registertfm bbm  7pt-8pt   bbm7
+\registertfm bbm  8pt-9pt   bbm8
+\registertfm bbm  9pt-10pt  bbm9
+\registertfm bbm  10pt-12pt bbm10
+\registertfm bbm  12pt-17pt bbm12
+\registertfm bbm  17pt-*    bbm17
+
+\setfonts[CMRomanUCW/]
+
+% \bb - blackboard bold math font
+
+\newfam\bbfam
+\def\bb{\fam\bbfam}
+
+\def\loadbbm{
+       \loadmathfam\bbfam[/bbm]
+}
+\loadbbm
+
+% Recalculate line spacing for a given point size of the font (assuming CM-like metrics).
+% Also sets \strut and \topskip.
+\def\setbaselines#1{
+       \dimen0=1pt
+       \dimen0=#1\dimen0
+       \normalbaselineskip=1.2\dimen0
+       \normallineskip=0.1\dimen0
+       \setbox\strutbox=\hbox{\vrule height 0.85\dimen0 depth 0.35\dimen0 width 0pt}
+       \topskip=1\dimen0
+       \normalbaselines
+}
+
+% Switch to a specified font size (including math, line spacing etc.)
+\def\settextsize#1{
+       \def\fomenc{CM}
+       \setfonts[/#1]
+       \setmath[//]
+       \setbaselines{#1}
+       \loadbbm
+}
+\def\twelvepoint{\settextsize{12}}
diff --git a/ucw-verb.tex b/ucw-verb.tex
new file mode 100644 (file)
index 0000000..2b98909
--- /dev/null
@@ -0,0 +1,124 @@
+% The UCW Macro Collection: Verbatim environment
+% Written by Martin Mares <mj@ucw.cz> in 2010 and placed into public domain
+% -------------------------------------------------------------------------
+
+% We'll use internal macros of plain TeX
+\catcode`@=11
+
+% New \frenchspacing, which doesn't leave unwanted spaces in text.
+\def\frenchsp@cing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m%
+\sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m}
+
+% Typesetting of one verbatim word: |word|
+
+% Set if spaces should be rendered as "bath-tub" glyphs
+\newif\ifshowspaces
+\showspacesfalse
+
+\def\make@ther#1{\catcode`#1=12\relax}
+\def\setverb@tim{\tt\frenchsp@cing\catcode`\`=13\catcode`\'=13\n@ligs%
+\let\do=\make@ther\dospecials\obeyspaces\showsp@ces}
+
+{\catcode`'=13
+\catcode``=13
+\gdef\n@ligs{\def`{\relax\lq}\def'{\relax\rq}}}
+
+{\obeyspaces
+\global\chardef\sp@ce=32
+\gdef\showsp@ces{\ifshowspaces\let =\sp@ce\fi}
+\global\let =\ }
+
+\catcode124=\active % Make | active
+\def\ttst@rt{\begingroup\setverb@tim\let|=\endgroup}
+\let|=\ttst@rt
+
+% Typesetting of verbatim blocks:
+%      - the block is enclosed in balanced {}'s
+%      - leading and trailing empty lines are ignored
+%      - all other empty lines are converted to \verbemptylineskip's
+%      - tabs are interpreted (one tab stop per \verbtabsize columns)
+%      - \showspacestrue works here, too, but it does not apply to tabs
+
+\newskip\verbstartskip         % vskip before \verbatim
+\newskip\verbendskip           % vskip after \verbatim
+\newskip\verbinterlineskip     % between adjacent non-empty lines
+\newskip\verbemptylineskip     % instead of every empty line
+\newskip\verbleftskip          % left and right margin
+\newskip\verbrightskip
+
+\verbstartskip=3pt plus 1pt minus 0.3pt
+\verbendskip=\verbstartskip
+\verbinterlineskip=0pt
+\verbemptylineskip=5pt plus 2pt
+\verbleftskip=0in
+\verbrightskip=0pt plus 1fil
+
+% Can be re-defined to customize the verbatim environment
+\def\verblocaldefs{}
+
+% Size of a single tab
+\newcount\verbtabsize
+\verbtabsize=8
+
+\newdimen\v@rbspace
+\newdimen\t@b
+\newdimen\t@bwidth
+
+% When a complete line is assembled in \box0, \verbship is called to add it
+% to the main vertical list. You can override it to get e.g. line numbering.
+\def\verbship{%
+       \ifdim\wd0>0pt
+               \ifdim\v@rbspace>0pt
+                       \penalty-100
+                       \vskip\v@rbspace
+               \else
+                       \ifdim\v@rbspace=0pt
+                               \vskip\verbinterlineskip
+                       \fi
+               \fi
+               \line{\hskip\verbleftskip \box0 \hskip\verbrightskip}
+               \v@rbspace=0pt
+       \else
+               \advance\v@rbspace by \verbemptylineskip
+       \fi
+}
+
+\newcount\verbcnt
+\def\v@rbend{\par\egroup\endgroup\vskip\verbendskip}
+\def\v@rbl{\ifnum\verbcnt>0\{\fi\global\advance\verbcnt by 1\relax}
+\def\v@rbr{\ifnum\verbcnt>1\}\else\v@rbend\fi\global\advance\verbcnt by -1\relax}
+
+\def\v@rbparams{%
+       \setverb@tim
+       \raggedbottom
+       \verbcnt=0
+       \v@rbspace=-1000pt
+       \catcode124=12
+       \vskip\verbstartskip
+       \let\par=\endb@x
+       \obeylines
+}
+
+\def\startb@x{\setbox0=\hbox\bgroup}
+\def\endb@x{\egroup\verbship\startb@x}
+
+{\catcode`\^^I=\active
+\gdef\setupt@bs{\catcode`\^^I=\active
+\setbox0=\hbox{\ }\t@bwidth=\wd0\multiply\t@bwidth by \verbtabsize
+\def^^I{\egroup\t@b=\wd0\divide\t@b by \t@bwidth%
+\multiply\t@b by \t@bwidth%
+\advance\t@b by \t@bwidth\advance\t@b by -\wd0\startb@x\box0\hbox to \t@b{}}%
+}}
+
+{
+\catcode`[=1\catcode`]=2\catcode123=\active\catcode125=\active
+\gdef\verbatim[\begingroup\v@rbparams\catcode123=\active\catcode125=\active%
+\let{=\v@rbl\let}=\v@rbr\chardef\{=123\chardef\}=125\verblocaldefs\setupt@bs\startb@x%
+]]
+
+% Input file verbatim
+
+\def\verbinput#1{\begingroup\v@rbparams\verblocaldefs\setupt@bs\startb@x\input #1 \egroup\endgroup}
+
+% Let's hide all internal macros
+\catcode`@=12
index d28427cfeb6cebc022ed2fb3ec9c9793815d2f0f..9d8ad856a0532ecf809404e77d6f3600d7358dfd 100644 (file)
@@ -1,4 +1,10 @@
 \input ucwmac.tex
+\input ucw-ofs.tex
+\input ucw-verb.tex
+
+\showfonts
+
+\twelvepoint
 
 \pageunderlay{\placeat{0pt}{0pt}{\crosshair{10pt}}}
 
@@ -77,4 +83,12 @@ abracadabra {!@#$%^&*()\_}
 
 %\verbinput{ucwmac.tex}
 
+\hd{Font selection}
+
+{\bo non-extended bold}
+
+{\csc Caps And Small Caps}
+
+$x\in\fam\bbfam R$
+
 \bye
index da83a1c846f900bea344ae8d6325b5e37d9649f2..3cbb25c8c9b95c963f33f9ed0098909a2be15514 100644 (file)
 \zeta\or\eta\or\theta\or\iota\or\kappa\or\lambda\or\mu\or\nu\or\xi\or\pi\or\rho
 \or\sigma\or\tau\or\upsilon\or\phi\or\chi\or\psi\or\omega\fi$)}
 
-%%% Verbatim typesetting %%%
-
-% New \frenchspacing, which doesn't leave unwanted spaces in text.
-\def\frenchsp@cing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m%
-\sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m}
-
-% Typesetting of one verbatim word: |word|
-
-% Set if spaces should be rendered as "bath-tub" glyphs
-\newif\ifshowspaces
-\showspacesfalse
-
-\def\make@ther#1{\catcode`#1=12\relax}
-\def\setverb@tim{\tt\frenchsp@cing\catcode`\`=13\catcode`\'=13\n@ligs%
-\let\do=\make@ther\dospecials\obeyspaces\showsp@ces}
-
-{\catcode`'=13
-\catcode``=13
-\gdef\n@ligs{\def`{\relax\lq}\def'{\relax\rq}}}
-
-{\obeyspaces
-\global\chardef\sp@ce=32
-\gdef\showsp@ces{\ifshowspaces\let =\sp@ce\fi}
-\global\let =\ }
-
-\catcode124=\active % Make | active
-\def\ttst@rt{\begingroup\setverb@tim\let|=\endgroup}
-\let|=\ttst@rt
-
-% Typesetting of verbatim blocks:
-%      - the block is enclosed in balanced {}'s
-%      - leading and trailing empty lines are ignored
-%      - all other empty lines are converted to \verbemptylineskip's
-%      - tabs are interpreted (one tab stop per \verbtabsize columns)
-%      - \showspacestrue works here, too, but it does not apply to tabs
-
-\newskip\verbstartskip         % vskip before \verbatim
-\newskip\verbendskip           % vskip after \verbatim
-\newskip\verbinterlineskip     % between adjacent non-empty lines
-\newskip\verbemptylineskip     % instead of every empty line
-\newskip\verbleftskip          % left and right margin
-\newskip\verbrightskip
-
-\verbstartskip=3pt plus 1pt minus 0.3pt
-\verbendskip=\verbstartskip
-\verbinterlineskip=0pt
-\verbemptylineskip=5pt plus 2pt
-\verbleftskip=0in
-\verbrightskip=0pt plus 1fil
-
-% Can be re-defined to customize the verbatim environment
-\def\verblocaldefs{}
-
-% Size of a single tab
-\newcount\verbtabsize
-\verbtabsize=8
-
-\newdimen\v@rbspace
-\newdimen\t@b
-\newdimen\t@bwidth
-
-% When a complete line is assembled in \box0, \verbship is called to add it
-% to the main vertical list. You can override it to get e.g. line numbering.
-\def\verbship{%
-       \ifdim\wd0>0pt
-               \ifdim\v@rbspace>0pt
-                       \penalty-100
-                       \vskip\v@rbspace
-               \else
-                       \ifdim\v@rbspace=0pt
-                               \vskip\verbinterlineskip
-                       \fi
-               \fi
-               \line{\hskip\verbleftskip \box0 \hskip\verbrightskip}
-               \v@rbspace=0pt
-       \else
-               \advance\v@rbspace by \verbemptylineskip
-       \fi
-}
-
-\newcount\verbcnt
-\def\v@rbend{\par\egroup\endgroup\vskip\verbendskip}
-\def\v@rbl{\ifnum\verbcnt>0\{\fi\global\advance\verbcnt by 1\relax}
-\def\v@rbr{\ifnum\verbcnt>1\}\else\v@rbend\fi\global\advance\verbcnt by -1\relax}
-
-\def\v@rbparams{%
-       \setverb@tim
-       \raggedbottom
-       \verbcnt=0
-       \v@rbspace=-1000pt
-       \catcode124=12
-       \vskip\verbstartskip
-       \let\par=\endb@x
-       \obeylines
-}
-
-\def\startb@x{\setbox0=\hbox\bgroup}
-\def\endb@x{\egroup\verbship\startb@x}
+%%% Miscellanea %%%
 
-{\catcode`\^^I=\active
-\gdef\setupt@bs{\catcode`\^^I=\active
-\setbox0=\hbox{\ }\t@bwidth=\wd0\multiply\t@bwidth by \verbtabsize
-\def^^I{\egroup\t@b=\wd0\divide\t@b by \t@bwidth%
-\multiply\t@b by \t@bwidth%
-\advance\t@b by \t@bwidth\advance\t@b by -\wd0\startb@x\box0\hbox to \t@b{}}%
-}}
+% {\I italic} with automatic italic correction
+\def\I{\it\aftergroup\/}
 
-{
-\catcode`[=1\catcode`]=2\catcode123=\active\catcode125=\active
-\gdef\verbatim[\begingroup\v@rbparams\catcode123=\active\catcode125=\active%
-\let{=\v@rbl\let}=\v@rbr\chardef\{=123\chardef\}=125\verblocaldefs\setupt@bs\startb@x%
-]]
+% A breakable dash, to be repeated on the next line
+\def\={\discretionary{-}{-}{-}}
 
-% Input file verbatim
+% Non-breakable identifiers
+\def\<#1>{\leavevmode\hbox{\I #1}}
 
-\def\verbinput#1{\begingroup\v@rbparams\verblocaldefs\setupt@bs\startb@x\input #1 \egroup\endgroup}
+% A handy shortcut
+\let\>=\noindent
 
 %%% Epilog %%%